diff --git a/.github/workflows/openwiki-update.yml b/.github/workflows/openwiki-update.yml new file mode 100644 index 00000000000..1b8675e93af --- /dev/null +++ b/.github/workflows/openwiki-update.yml @@ -0,0 +1,88 @@ +name: OpenWiki Update + +on: + workflow_dispatch: + +permissions: + contents: write + pull-requests: write + +jobs: + update: + runs-on: ubuntu-latest + steps: + - name: Check out repository + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + with: + # Full history so `openwiki code --update` can diff HEAD against the + # commit it last documented; a shallow clone hides that commit and the + # update runs against an empty change summary. + fetch-depth: 0 + + - name: Set up Node.js + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 + with: + node-version: "22" + + - name: Install OpenWiki + # mermaid + jsdom are optional; they add high-fidelity validation of Mermaid diagrams. Remove if your wiki has none. + run: npm install --global openwiki@0.7.2 mermaid@11.16.0 jsdom@29.1.1 + + - name: Run OpenWiki + id: openwiki + continue-on-error: true + run: openwiki code --update --print + env: + OPENWIKI_PROVIDER: openai-compatible + OPENAI_COMPATIBLE_API_KEY: ${{ secrets.OPENAI_COMPATIBLE_API_KEY }} + OPENAI_COMPATIBLE_BASE_URL: ${{ vars.OPENAI_COMPATIBLE_BASE_URL }} + OPENWIKI_MODEL_ID: "gpt-6.1-sol" + OPENWIKI_OPENAI_COMPATIBLE_USE_RESPONSES_API: "true" + # Required for the LangSmith connector's code-mode pull to authenticate. + # For extra workspaces, add OPENWIKI_LANGSMITH_API_KEY_2, _3, ... as repo + # secrets and env entries here. + OPENWIKI_LANGSMITH_API_KEY: ${{ secrets.OPENWIKI_LANGSMITH_API_KEY }} + # Optional: also trace this workflow's own OpenWiki run to LangSmith. + LANGSMITH_API_KEY: ${{ secrets.LANGSMITH_API_KEY }} + LANGCHAIN_PROJECT: openwiki + LANGCHAIN_TRACING_V2: "true" + + - name: Remove transient OpenWiki run state + if: ${{ !cancelled() }} + run: rm -f -- openwiki/.run.json + + - name: List OpenWiki update paths + id: paths + if: ${{ !cancelled() }} + # CLAUDE.md is listed only when present: git add fails on a missing path + # and then stages nothing. + run: | + paths=openwiki,AGENTS.md,.github/workflows/openwiki-update.yml + if [ -e CLAUDE.md ]; then paths="$paths,CLAUDE.md"; fi + echo "list=$paths" >> "$GITHUB_OUTPUT" + + - name: Create OpenWiki update pull request + id: create-pr + if: ${{ !cancelled() }} + uses: peter-evans/create-pull-request@22a9089034f40e5a961c8808d113e2c98fb63676 # v7 + with: + add-paths: ${{ steps.paths.outputs.list }} + branch: openwiki/update + commit-message: "docs: update OpenWiki" + title: "docs: update OpenWiki" + body: | + Automated OpenWiki documentation update. + + OpenWiki result: ${{ steps.openwiki.outcome }} + + When the result is `failure`, this PR intentionally preserves only the + pages completed before the failure. Merge it to make that progress the + baseline for the next manual run. + + - name: Annotate OpenWiki update pull request + if: ${{ !cancelled() && steps.create-pr.outputs.pull-request-url != '' }} + run: echo "::notice title=OpenWiki update pull request::${{ steps.create-pr.outputs.pull-request-url }}" + + - name: Propagate OpenWiki failure + if: ${{ steps.openwiki.outcome == 'failure' }} + run: exit 1 diff --git a/.openwikiignore b/.openwikiignore new file mode 100644 index 00000000000..154b7788784 --- /dev/null +++ b/.openwikiignore @@ -0,0 +1,60 @@ +# OpenWiki read boundary. Preserve authored RST/RSTX, includes, Swagger YAML, +# configuration examples, build tooling, templates, and meaningful diagrams. +# Do not ignore openwiki/: generated pages and claim metadata must stay writable. + +# VCS, editor state, installed dependencies, and local environments. +.git/ +.idea/ +.DS_Store +__pycache__/ +*.pyc +*.pyo +*.egg-info/ +.venv/ +venv/ +env/ +.python_env*/ +.my_env/ +node_modules/ +.pytest_cache/ +.mypy_cache/ +.ruff_cache/ +.tox/ +.cache/ + +# Rendered site/exports and generated runtime output, not authored source. +/_build/ +/build/ +/dist/ +/htmlcov/ +/coverage/ +/logs/ +*.log +*.log.* +.coverage +.coverage.* +coverage.xml +*.zip +*.tar.gz +*.pptx +*.docx + +# Local secrets; template configuration is useful evidence. +.env +.env.* +!.env.example +!.env.sample +!.env.template +!.env.dist +/.secrets/ +/.aws/ +/.azure/ +/.ssh/ +.netrc +.pypirc +*.key +*.pem +*.p12 +*.pfx +id_rsa +id_ed25519 diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000000..f169b2c23b8 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,16 @@ + + +## OpenWiki + +This repository has a generated `openwiki/` evidence index. It is optional just-in-time context, not required startup reading. + +- Do not enumerate, preload, or search wikis at task start. Use retrieval when the user asks for it, when unfamiliar architecture or dependency behavior materially affects the task, or when source inspection leaves an important uncertainty. Stop once the question is grounded. +- When those conditions apply and OpenWiki retrieval tools are available, use `openwiki_search` for just-in-time context and `openwiki_read` for the relevant complete sections. If search returns `workspace_required`, ask which listed workspace to use and retry with its ID. +- Use `openwiki_list_workspaces` or `openwiki_list_wikis` when workspace membership itself needs to be discovered. +- If the retrieval tools are unavailable, read `openwiki/quickstart.md` and follow its links to the relevant pages. +- Treat source code and tests as authoritative. A brief's unknowns and review items are verification gaps, not automatic requirements. +- Prefer the narrowest quiet validation that proves the changed behavior. Preserve complete failure output. + +The manually triggered OpenWiki GitHub Actions workflow refreshes the repository wiki. Do not hand-edit generated OpenWiki pages unless explicitly asked; prefer updating source code/docs and letting OpenWiki regenerate. + + diff --git a/openwiki/.claims/architecture/hub-model-and-boundaries.json b/openwiki/.claims/architecture/hub-model-and-boundaries.json new file mode 100644 index 00000000000..4c5af41d65d --- /dev/null +++ b/openwiki/.claims/architecture/hub-model-and-boundaries.json @@ -0,0 +1,582 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:3bcc16f961df7b8676dd4cd7775712f4e5e05d2ef45c382c28dccf622f9ca319", + "claims": [ + { + "id": "claim_2eaa8ea76cea4f9b9dc9883ccee25a40", + "statement": "Sesam Hub is documented as a semantic data hub for master data synchronization and management whose core processing model consumes and produces entity streams through pipes; data fabric and data mesh descriptions do not establish runtime performance or consistency guarantees.", + "evidence": [ + { + "resource": "repo://hub/data-architecture.rst#L1-L32", + "version": "repo-lines-v1:sha256:0ef96c6bc1b9c66ccbe618b77ff704203b7173e8724519399d8e790971ae6cd0:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzMTUzZGNhMjkxYjM2MTUxZTk3NDVlOGE4ZDg4NDMxZmZjMzI3MmM5ZjdiM2VmNzI2NmQ2NTY4NWY2NTcxNmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEyNTlhZjAxYTVlODgzYTFkMDAzNzJhNjA1YTUzNzg2Y2Q2ZWNiNmIxNTI5YzRlNjhkODE3N2FjNDg5Njg0NjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA5M2ZlOGI0OTYxM2M3NjdmMjIzZDZiYjZhMTQ2OTMxNWYwOTE4YzY2ZTc1ZjBlMWM0MmM5OTM1MzVkNjA4N2UifQ" + }, + { + "resource": "repo://hub/documentation/building-blocks/streams-of-entities.rst#L6-L31", + "version": "repo-lines-v1:sha256:cc2fd5ece63a671c64098e8d0307b4a4be6470c2e57d178475c6ca0a7c82d2ef:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1ODNhY2NjMzk4ODYwZjI5ZDVlZmZiNzdkN2ZmNjE3YzNiOGJlMTQzN2E2NDEyNjE4ZjBmZDI2MDc5Zjk1NjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQwYWEzMmI2MjNjZTNjNzRhMDc2NTM5ZWQyOTliYTJkOGYxZTRkMmM2MDg3ZTg3YzQyZjU0NDhkZDQ4MDQ3ZjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgxYWFmNzNlY2UzNWY3ZmQwNmYzYzFmZmI1Y2RmODNjNDgwNDE4NzMwNTZhMjExY2QxYmQ2OGNiNDJmZjJmOGYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_32f48f165ee74d4eb06d1db02212923b", + "statement": "The Sesam service is configured with JSON system and pipe definitions that can be imported through the Service API or created and edited in Management Studio; configuration component _id values must be unique across the solution, including multiple files.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/general/configuration-general.rst#L6-L32", + "version": "repo-lines-v1:sha256:1abaa9282ed848fc61d25486a029ebc7a5c99acdafd113614fa0343068117fd9:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdhZDc1Y2RjNzFmNjhkZjg1YzI5NzNkMjM5NTZlODYwYjJhNjM3NmQ2N2U1MmU0ZmQzNTBiYzAwZDVmYmFmMjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUyMTcyZTQxODIyN2I2MDFjZWQxODE5NmViZDM0YmY4YTdmOWE4OGY2ODY0ZGQ2MTY2MjllYTlkYjdjODQzMjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRlNTE4NDIzNDM4NmE3ZGVkYjczZjA4ODBmNmM4YjJlY2E2ZjYwNTFlNDg2MDkwYjg2MGY1MTQ4MGJmNGI1M2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_5099d792c9064013b0bb217b8440b6ec", + "statement": "The documented declarative model stores configuration as data describing collection, connection, enrichment, and sharing; DTL declares transformations of data streams, while custom service extension points remain available.", + "evidence": [ + { + "resource": "repo://hub/core-principles.rst#L234-L242", + "version": "repo-lines-v1:sha256:7751b8aa7fb3a4ef66a3293557b8863aa6411fb412bde407fc3d21b21fc593af:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWU3MDhhNzQ3YWUzZjcwMzY4MDI4OTViOTdlYjE4NGZmNjU5NzNiYjVjNWVlYWRlMzViYWNlNDdiNjU4YWZmNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGU4OGUyYTlhYmU2ODFmY2EwM2FkNjQ3NWI2M2ZjMmZhZjQ1M2U1OTNhZDk4Y2I0ZDE2NDFhZmI1OWJjYjhmYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODU2MDE0Y2E5MjAzOGRlMGU3NDBlZmIzZGNhZWMwMWE5NmI5OTVlNTAyNzk1NDEzNWJlYmVlMWYzYzk2N2MxZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/data-transformation-language.rst#L18-L38", + "version": "repo-lines-v1:sha256:3480913ba6a26d62304f0bf34cc74ac06c090ac2b81b957fc12b34a21fc70d1b:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVmZTQ3ZGM4MmJlZjIzMDY5OGUyOWYxMzlkODY4ODJmNjg0Zjc3Yjg1MTZhYTM3YzY1MmEwNzU5M2NlYzViZDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhNzNlNmRiOWI0MDQ4MTVlYzRmZjMyMGE2MzI5YmQwNmJiNmFmM2Q3N2QxYzQ3YzQyMmJjZjZmODIzMzM2MmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjllMDUyNjhjNzhjMjgyZWFiYWE4MjcyN2NiZDQ4NjhmOThiMjc5ZDdhMDViOWIzNWViMDVkYzczZTQxYzE4OTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU4MmVkOGEyNTA1MmEzMWY4ODUzNzk2YzEyMTY1MGQxMDE2NTg4YjM1NWNjYTE5YTA1YmM0MTk3ZWU2YmNlYzAifQ" + }, + { + "resource": "repo://hub/extension-points.rst#L7-L19", + "version": "repo-lines-v1:sha256:686fc2c5cde95f5fff5365d60c34f6df1d2798c76e0ac0c29a2487ab4a793a38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJhY2EzYzFjNDFmNmViNGY4ZDdlYTgyNGViNjI0ZmViYTMzYmVkNmFhNTk3ZmExZjk4ZDZhYmI1NDgwOTA0ZTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4Y2IxOGFkMjhiYmQ5MWFiOTNmMDU1ZmQ1MWJkMWI2NWJlMzNiMmEzMGRjYzRkZTMwMGUzMmI1ODE2YTc5YWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ0OTUyNzlkMzQ0MjQ0ODcxODU1NTJiZTg0YWM3ODg5NTkzNDkxNmJlMTAwMmMyMWIzZjEyNTAxY2UzYTI1ODMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNmMDJjODQ0Y2I1YWU2NWI3ZjQ4Njc4OTMyZTVkZGM1ZmZiNmVmZWZhMTA4MjVmY2I2MjU2OGJkZTA3MzVmNWIifQ" + } + ] + }, + { + "id": "claim_f6003901d00144bf8033001d1a734e99", + "statement": "The documented modeling approach retains source-system perspectives rather than imposing one fixed canonical model, connecting different representations into composite objects in global datasets.", + "evidence": [ + { + "resource": "repo://hub/core-principles.rst#L119-L130", + "version": "repo-lines-v1:sha256:02810ffd341bcd48b2f44d28ca62fd6916d7e11b31589095a79cbe31e96d239d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc0N2FjODhkOGI1ZmZiOTNkZjBkZTlmMDg5OWM0OTYzOTE2NmI3NGEyOGNmZTFmODE4OGEyMDVmYzBkNThmZDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiYjA1YjM3YTNmZDg5ZDllMTA3NTkxYjAwNzRkMWNiYWRjODZmNjU1NjczM2YzNWNlMGU3NzlkODljZmZlN2EiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUxMjg0ZTM1Y2FjNTRmMGNiMjU2YmZiZTk1Yzc3MDAxYjUyOTYwZDJjMGFiZDhmZWExOWJkNzcxZGQ5ZjY1YWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEwZmQ1YzhhMjU1NTYxNzkxNDI5ZGI5MWQ5NzBkYTgyZjdkMmZiNzU4ZTRmNmYyN2M3MjFiOTNkOGVjYjE5YWYifQ" + }, + { + "resource": "repo://hub/core-principles.rst#L40-L90", + "version": "repo-lines-v1:sha256:d46536da17b4a3f8ce5b2927f244c2bae2ca83adf8676aea12b749256a4c1fd0:eyJzZWxlY3RlZExpbmVDb3VudCI6NTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI2YzQxZTMwMmQ1NmQ0NDY2MWIwZmY4ODUyYzMzNzZlNGEzMDAzMmRlYTQ1Y2FjNmZlY2E0MWMyNGNiYmEwYzUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4NWY3ZmMwMmUzMzgzZmNiNzFkNWE2ZjliNGI1MWEyNzg1Y2QzY2ZjNjkxZDMxNjBmMmMyODgwNjFkNDFhM2MiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRhZmYyNzI0MGRhMTI1ZTk3YTZlMzEwZGQ0Mjg1MTEyYjk5YjNiMTUyZjNhM2FiYjkwN2JlOGU2NjhiOTc2NzIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdhYjQwNTdkM2IxNjMyM2RmZDkzODJiNzQ5MDdmODI0ZjEyMzg1MzRiNzdiMzdhOTE3OTk3MGEzYWMzNmViZjUifQ" + }, + { + "resource": "repo://hub/features/global-datasets.rst#L94-L98", + "version": "repo-lines-v1:sha256:3fcbcad729eeea950316e653644e7901218534b390faba247c324ea311144d07:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2EyNmUwZjkyMzgwYjczMDU3NzQzMzY3MzdkODNmMDBhMmFkYmY0MmZkYWEyYTA4ZThhZDU4MWJhMDkzNDIxNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYmIxMmVjMjBjYjU3ZTU3ODc0NDFjZWIyMTk1MTE1ZmY5ZWFiNmQ4NWVhNmY1N2E4YWFiZTBjODZkMDc4OTNlOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGU2Zjg3NDE2Y2Q5MTUzYmVjNWQ5MzUwOWVjNTFmMGY4OTQ4ZjdjMjQxNzA5YzhjMDUwMTY0MDRlOTVlMDNjZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDgxZGNjMDlmODE0YzBlYjA4MjI3OGY0YjQzZmRmMGVjMjk1NDA0NzMxZTM3MGNkYzg3ZjZiYzBjMzBlNjQxMCJ9" + } + ] + }, + { + "id": "claim_6b74039551e644bb8459068de1032912", + "statement": "Sesam property namespaces preserve source context and use a namespace prefix such as y:x; they can be configured globally and overridden per pipe, and a property namespace is distinct from a typed namespaced identifier used as a reference.", + "evidence": [ + { + "resource": "repo://hub/concepts.rst#L38-L53", + "version": "repo-lines-v1:sha256:a17fb2f44b64acb4d328efe8cd21c7f468ab5438accb82c19599ba79c8300693:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3YTlkMWJkYmRlYmQ1MDIyMTQxZjY3MzliZmU2MWUyNTJjODM2YWRmZDllNmM2OWViOTMwMDdjMGVmNWVmMzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiZDY2ODlhMDk3MTEwNzQxMzQ2ODUyOTEwYmU2OWY5MDAyZDAxNjJlMTM1MmY1MTA3M2Q1NGQ5MjQzMzQxZDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImViNTc2NGZjNjk1ZjYxNDc4MDAxMWI5OGU5YzQzM2MyNzMxMWUwMTUxYTRhODE5MGY2NWIzMTllMTEyM2YzMjIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU1YTY3MmI1YzUzODdkZjNmN2UxNmIyZGE2Njc5MzFmODAyYzRlMjRjMTY5ZDQ3OGUxZDliOGQ1NTExYWFhNWMifQ" + }, + { + "resource": "repo://hub/features/namespaces.rst#L8-L45", + "version": "repo-lines-v1:sha256:ddc1d9297d18b17688e8452b3ae44cece453a7ff4fae1296bb4ff1a8675d27b7:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4NmU1NWQ3MmJlMjcxNjYyMjFlNTYwOTMwYzNlZTUyMDlkZDQ0M2M1ZTM0NTQwMmY1OWUxYTc1YjlkYTA4YjQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJiNWJhMjFjZThkZTAxMDQ3NGQxNjlhYmQ2ZjhkYmIyZWQ1MDdiZTgwMmRkZjMyN2Y1MWE4ZDNlMDMyMDdkNTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQyYWZlMGRhYWMzN2EyMjcxNTU1NTkyMmQ0YTc3OGY2N2U0ZTEzMzk3Zjg0YjVjNmZkZjhhMTg0NjgyZjlhYWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2OGFmNDBiY2U0YWUzNTRmYmEwNDg2MmU4OWY5MGEzZWZiZTMxNjdiNjA5MjU4YjUyMzc4YmU1NTI1Mjc0Y2MifQ" + } + ] + }, + { + "id": "claim_b9ad70e4380b45a9b470f020f3abfc13", + "statement": "In Sesam business vocabulary, a datatype represents a concept within a system, a global groups datatypes in a data domain and can map them to global properties equivalent to golden records, and the global model collects globals and their global properties.", + "evidence": [ + { + "resource": "repo://hub/concepts.rst#L55-L95", + "version": "repo-lines-v1:sha256:228020b6e577ba032d27b6551dee8f177c84d55af83d05b4642b27f8f83840c1:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZmNDhlZTU1Nzc2Yzc4NTEwMWUwZDMxOTg3Y2Q3M2QzOWZkZjE5MzBkYjllMDY1ZjhhZWNjZmMyNjQ1MzEzNjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFhMjI4MmI1OGNhYzk3NGUyNWZjMzdmMDlmZWRmZjJiMDg5MGJkN2Y3YmYyZTVhOWVjZDI3Y2NmNzk0ZjcyMDAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjcyNzZmZTI1YzIzZjIyZTQ5MmMzODIwNDRmNjc4MmJkNWY5Nzc5ZWU3NDM1ZjVlYWE2NGUwZDNhMDBhOGU4NTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEzYTlkMjJkNWU1NWY4YjIxNzNlMTgxYTE2YmRlYjllNTVhZDliNTAwYzJkMjVkMzMwYTkwNjZlMTk5Zjg3MGMifQ" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L25-L25", + "version": "repo-lines-v1:sha256:3d921a7d290e19b6a106876bd4353067881aa192b207760d6f489e3c1f25c795:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2Q5MjFhN2QyOTBlMTliNmExMDY4NzZiZDQzNTMwNjc4ODFhYTE5MmIyMDc3NjBkNmY0ODllM2MxZjI1Yzc5NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2Q5MjFhN2QyOTBlMTliNmExMDY4NzZiZDQzNTMwNjc4ODFhYTE5MmIyMDc3NjBkNmY0ODllM2MxZjI1Yzc5NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDk4ZmVmZGIwNzRiMjQ5NTEzOTJhOTcxZDYxMjY0MzE0ODcxNTFhNGU2NzkzY2U1NmE3ZmFjZmVjOWJmNTM0ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODU4YTVkZWQ2Zjg2MDFhM2UzZTlkZTNjZTU5MjhlZGQyNDBiMjI3ZTFmOGE4YmI3NDNlODE5ODlkZmFmY2VmZSJ9" + } + ] + }, + { + "id": "claim_8ada4479d44e43ce9c3c17a6350748ff", + "statement": "Global datasets can collect datasets without merging, merge source data unchanged, or selectively merge properties; correct domain grouping and cardinality require business knowledge because many-to-one ingestion can overwrite information.", + "evidence": [ + { + "resource": "repo://hub/features/global-datasets.rst#L8-L16", + "version": "repo-lines-v1:sha256:986be1e2797d0c15f2667803eb24d33be43f71155873bb275cb07d4750662dfc:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjllM2QzMTNiZmZjMzc0ZDIyNjU2YjM3NjJkMTg3ODA4NjA2ZWEyMmFjN2Q1NDA4NWZkZTgyNTc5OWQ1NjgwNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjg0YjllZTJiYjhlMjM2MWFjNjMwNjAzNjQ4MTU3YjBjMjVkMjdmMjRjNjRlYjFlZjQ2OWQ0OGNhNWE3NWQwYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmY5OWZmNDJhOGM5YmNhNmI1ZDU4MzcwZGNkMGU5NjM5N2FjYjQ0MGI4YjM4NTM4NzQwMzA1M2I5YjRlNmUxNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDU4OTEyZWY3ZDlkNGQ5MzA0MzgxOTM0N2EzNzE2ZjFlMTk4NjBkNjIwZjYyNzk1MzA2NDVkYzdhMThhZjM2YSJ9" + } + ] + }, + { + "id": "claim_d2d6768529e0431b800ed011180e9a80", + "statement": "The data architecture guidance supports multiple organizational domains within a subscription using permissions and config groups for autonomy and isolation, recommends data products for cross-domain synchronization, and does not require data products for synchronization within a domain.", + "evidence": [ + { + "resource": "repo://hub/data-architecture.rst#L8-L11", + "version": "repo-lines-v1:sha256:a29fb78007915f4fbb709340c448fd4ecae44f20f9b0764f7af32a22edb67033:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjcxNWIyMDE1NjUwNmIxOGZiOGI5NDA0NDY0NTRkMGZhZWI1ZThiN2Q3OWYzZTgxMzJlZTFiYTIxYmMyNDU3OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDM1MTBjNjVlZWExMWM4M2YxZGJkNDE3MzkzYzQwZTRmNWJmN2MzNmVhOWEwYjY4NDg3MmIwZDA1YjIwM2FlYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2I1NDJlYTU4MGI4YmJkMjQ2NzI0NTFlYmVlZjM5NGJhY2QzYTI4ZTAxOWI4ZGZiMzdmNzc3ZTU0N2YxOTRhMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGExNDFlOTM3MDM4MTZjOTJmYzRlNTY4MDk4MGQyOTg5YzU3NzE4Y2Q5NGZhOTMwZDY5ZWZlY2Y5MWIxMjI1NyJ9" + }, + { + "resource": "repo://hub/documentation/operations/security.rst#L26-L39", + "version": "repo-lines-v1:sha256:25dabc76de25b06390bffc3296a31a5d7c1607f05f2f8e70f85a1eae6591abbe:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMwNTdhMTZhNjhjOWZiNGJiMThjYjQ2MjZiNDAwMTYyZTU0ODdiYzk5MjhhMTRiYTY1YTg4ZGMyMGUyOTIwODYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwMmJjZjQ5NmVjYzJmMjU1NTZkY2M4MjUyNDdmZjNkZDU2MTEwZGNlZTFkODE5YmUwOWVjZmY5YWZlYzU0MjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5YmUwZTVlMmZkZDkxYTZjMDY0MzVkY2JmZDZiNzhhYjE4NGY0YjliODU0NjYyZGEwNWY1N2QyYTk2YjM4YmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUxZDJkZGIwMWYyOTViMjEzNzE5MWNjNmI2NGQyNjJiYjVjNzJkNzgzM2JjMTQ2NWJjNTZlZDEyODc3MDZhNDgifQ" + }, + { + "resource": "repo://hub/features/api-config-groups.rst#L29-L46", + "version": "repo-lines-v1:sha256:4f2734fae0d1257520157afff36c3279249b4eb9394a75d856beeeac2b419b9b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdjMTQ4ZWM4ODlkNzgwZGZhNGQ4YzYyODY1MTJmNWU4MTlhNWUzMWM2NjE4NWNlNzY0MzZhOWQ4YTVjZDY1ZDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhhNTM0YTY2Y2FhZGIwODhlZDY5MGM5YTAzOTM0NmI1YjM5MGNiYjNkMmIxOTM4N2ViZWE0YzRiZjQ0NTg2MzUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY1MWEzYjVmYTE1MTYyOTIyNmViYTUxMTFhNThmNTVmMjgxMmQwYTVkMGJmNWQ2MGM3ODJiMjUyYzkyNWEyYmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_2de9d5e36b1d4bb39fee0d461ad6e218", + "statement": "Data products are typically derived from domain globals; an as-is global exposes the underlying data and changes structure as sources change, while transformed globals or other models can serve more purpose-specific consumers.", + "evidence": [ + { + "resource": "repo://hub/data-architecture.rst#L6-L16", + "version": "repo-lines-v1:sha256:9158b4c7a17c8eb2aa5354fcd44c70f2f638d6706a0b9ef7c7c010bad848d2c0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiZDNkYWMyNjI4Y2M0YzZmZWE0NGNiODU3M2Q1N2JkNTUzMzk4NzRmYzYwOTgxYzM1MWZkZjhiYzRkOGFjNGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5MjYxYmJkZDhjNGNmMjVmYjc1YzIyY2I3YmZkZGYxMDcxYTJhMzU5Zjg1ODAzNDRlN2I3MjRhOWMyZWM2MDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNiNGU2NjAzNzA2OTE0MGQ0OTZjOTM4M2E0MzVmMWFiNjYxMjBkNmZjOTgyZWMzMWRkYzdkMjMzY2ZkOTg1NzMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM1OTE2YWZiZTk2NmM4MGFlYTJjNWM2MmM3YTliZWQ2ZGNiZmVjYTNiY2UzOTlkOGRiYzNiMGQ2NmNjNDgzZjcifQ" + } + ] + }, + { + "id": "claim_145002b4dd1f4a919dcaabdf0fec2395", + "statement": "Config-group membership organizes configurations, while resource access is enforced through roles and permissions on pipes, systems, and datasets; a config-group name alone should not be treated as proof of an enforced security boundary.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L26-L63", + "version": "repo-lines-v1:sha256:4d5f3c4e09701487f81340389d0066e9f088e6c1f6362fd0db86a60cc7dd037b:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMwNTdhMTZhNjhjOWZiNGJiMThjYjQ2MjZiNDAwMTYyZTU0ODdiYzk5MjhhMTRiYTY1YTg4ZGMyMGUyOTIwODYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU2ZDg2YjdjNGIyNmE1MGU1YjVjY2Q3ZjRiZTIxNzdkZGNkY2I1OTU0MjY1ZGYyYzQwZmY2Zjk1MGRiYzk3NDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5YmUwZTVlMmZkZDkxYTZjMDY0MzVkY2JmZDZiNzhhYjE4NGY0YjliODU0NjYyZGEwNWY1N2QyYTk2YjM4YmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhiOTc1Y2Y3OTBiNGMwNTRhNjQxMTFhODgwM2UwNWExYTk2ZjU0NWNlZWRhNzUzNjAzYTU3ZDA1OWEwNzIwMWIifQ" + }, + { + "resource": "repo://hub/features/api-config-groups.rst#L29-L46", + "version": "repo-lines-v1:sha256:4f2734fae0d1257520157afff36c3279249b4eb9394a75d856beeeac2b419b9b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdjMTQ4ZWM4ODlkNzgwZGZhNGQ4YzYyODY1MTJmNWU4MTlhNWUzMWM2NjE4NWNlNzY0MzZhOWQ4YTVjZDY1ZDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhhNTM0YTY2Y2FhZGIwODhlZDY5MGM5YTAzOTM0NmI1YjM5MGNiYjNkMmIxOTM4N2ViZWE0YzRiZjQ0NTg2MzUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY1MWEzYjVmYTE1MTYyOTIyNmViYTUxMTFhNThmNTVmMjgxMmQwYTVkMGJmNWQ2MGM3ODJiMjUyYzkyNWEyYmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_5eda7e63f0214f6c8a617da9ee14eaeb", + "statement": "An entity is a dictionary of string keys with literal, list, or dictionary values, supports typed data beyond ordinary JSON primitives, and has a required string _id primary key.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L60-L64", + "version": "repo-lines-v1:sha256:1420a14fa48f912a6a404c72d963fea5a900a4af76a23928a00f32193e21fd18:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWQyZDEyMGNhZjU4ZjM1M2IzOGVlYjQzN2VlNWMzNDMzYWRiY2FhOTg1OTg2Zjc2MjM5M2I5ZjljNmRiZjdlYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjdiNTNmMmFiMzlmYmI2ZTNkNzhjMzg0ODY2ZmE4Yjc4NjI5MGNiOTY1YmU0OWFkYjRmODQwZTM5NjEwZmU0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDY1ODY3MTg5ZGQyMDRmYjU3MjM1M2M3NzNmNWJlMjQ2YmYyNjlhNDEzYjY0ZDlhMDI0N2YyNDE4YjVhNzMyNyJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L7-L25", + "version": "repo-lines-v1:sha256:35895767a4bc7b0255aab8297b1b868f0436b4c47d82890cb41895952891035f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJkNzYzYmMyMGRmNWY4YjJkZDM0Yzk5NWExODBlZTY3ODVkZDhlODVmMDgzZWQ5YWQ5YjQ1ZDM4NWMwZTA1N2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNkOTIxYTdkMjkwZTE5YjZhMTA2ODc2YmQ0MzUzMDY3ODgxYWExOTJiMjA3NzYwZDZmNDg5ZTNjMWYyNWM3OTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUwMjYxN2NlOWE1MWMzYjJhN2FkZGVmZjJmZTZmNDU4YzRlNmRjZGRhNzRlYWUzZDczMzRkNzAyZTRmNDgyYjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg1OGE1ZGVkNmY4NjAxYTNlM2U5ZGUzY2U1OTI4ZWRkMjQwYjIyN2UxZjhhOGJiNzQzZTgxOTg5ZGZhZmNlZmUifQ" + } + ] + }, + { + "id": "claim_2a025a05e592446c93352460b675ee82", + "statement": "Datasets are internal entity logs supported by primary and secondary indexes; dataset sinks write them and dataset sources expose their entities with continuation support.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/datasets.rst#L6-L10", + "version": "repo-lines-v1:sha256:5b5ff563c911da552ba50940e6872d6af3abffcd29873c0afb06af8434e561d6:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWVmZmM4OTA1ZTNmOTdlMDIyMmM3NTk3NjA1NDcwYjdiMWFjZjcxNzMzYTA5MzBmZDAxYWQyMzhjZWFmMDJkNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzIzNDdlMGJlYTcwM2MyOWY2NTAwZmFjODE0ZmI0N2NjNWQ5NTY5YmU5NDQ3NmNmZDQ4Y2Y2YmZlZjllOGY4MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2MwOWRlMzcxN2Q0MDllZDU5ZDAzYzM3YjdmMjZjYzI5Mzk4YjYyYTc0ODk3NjE1YmUyNjAwYjg5ZDAxYTJkMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDU4MDQwOGZkMGYxODllMGUwMTA0NjcxNTRlZjRjZTQyYjBjZjVjZjQ4ZDk3YzA4MjFlNjI1MzRkOGI2YjNjZSJ9" + } + ] + }, + { + "id": "claim_94b62d61f7ec455a9df8adb29f502a70", + "statement": "A pipe is the documented atomic source-to-sink processing unit comprising a source, optional ordered transforms, a sink, and a pump, and is the configured way entities flow between datasets; target transactional boundaries belong to the sink rather than implying a cross-system transaction.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/pipes.rst#L6-L6", + "version": "repo-lines-v1:sha256:23d3794e2f8df7fa6b6a280b50d5bc4997938c8ed0d282f5e5242da99953a555:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjNkMzc5NGUyZjhkZjdmYTZiNmEyODBiNTBkNWJjNDk5NzkzOGM4ZWQwZDI4MmY1ZTUyNDJkYTk5OTUzYTU1NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjNkMzc5NGUyZjhkZjdmYTZiNmEyODBiNTBkNWJjNDk5NzkzOGM4ZWQwZDI4MmY1ZTUyNDJkYTk5OTUzYTU1NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2ZjNTllMGY1M2NkMWYzMmUxZjFhYzQ4ZDg2ZTFkMzdmMmVjM2RmODBiY2MzOWExNmM2YmJjZTFjNzJjNGFjNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTZkOGVhNDJmZDM2YThmOGRkY2Y4OTRkYzNkZjZkZmZlZWZhNTVlOWJjZDM1NDdmZGY5ZTgyMjgyYTIwYWE3NiJ9" + }, + { + "resource": "repo://hub/documentation/building-blocks/pipes.rst#L60-L60", + "version": "repo-lines-v1:sha256:8b88449c653350112d3f20fb8454d722e27354e5759a8e17283ac8ff680267e9:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGI4ODQ0OWM2NTMzNTAxMTJkM2YyMGZiODQ1NGQ3MjJlMjczNTRlNTc1OWE4ZTE3MjgzYWM4ZmY2ODAyNjdlOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGI4ODQ0OWM2NTMzNTAxMTJkM2YyMGZiODQ1NGQ3MjJlMjczNTRlNTc1OWE4ZTE3MjgzYWM4ZmY2ODAyNjdlOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDY2NTc5MjgyYTRjYmVhZDZkODdlYWUxMmEzNDg1YjRjNTgyYjk3ODlmNjBkZjNmZDhiMDMzMDc4Mjg2MjA3YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjIzZTQ2MjBiMjViMjA2ZmE0MzA2YjlkMGY3ZTFmM2JhNjNkZjllODBiNzhiYTFiNWJlMGU3MjY1YWRkYjM2NiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L6-L13", + "version": "repo-lines-v1:sha256:cf8516d3db33abc55b15f6b9c2785b938503b337049e3de9536d4358c1428f4e:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2MxYTVkYzg4ODYzNWNlMzMwNjcyOTRiYTJjYzY2MzE1YWM3YzcwMzZlMjk2ODgxNGQ1ZGIzY2YwYWY2MzczMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmI5NDNlZGJjYTA1MzA5YjI3MTI2Mzc3NzBmZDA1ZGFjNGQ5MTAzZTY4NTM5ZjE3ODNlOGJlOTY2OGFmZjhlNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2ZjNTllMGY1M2NkMWYzMmUxZjFhYzQ4ZDg2ZTFkMzdmMmVjM2RmODBiY2MzOWExNmM2YmJjZTFjNzJjNGFjNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmQ2OThmMTI2NGY0YmVhMjc5M2M4NWQ4NDNhYzdiMTgyYmY4YWQyYjFiYTNmYmUyNGY4NDgyYTYzMWRmYzZjYiJ9" + } + ] + }, + { + "id": "claim_1a0c276a19dd426885ecf57ffe920eef", + "statement": "A source exposes an entity stream from internal datasets or external data such as SQL rows, CSV, or API JSON; sources vary in continuation support, and since is an opaque token interpreted only by its source rather than a universal timestamp.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/pipes.rst#L18-L31", + "version": "repo-lines-v1:sha256:68095e241969debedaade93630ae36e9b1529bcf18c592061ba01fe3d9a30627:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIxNzc1MmU5NmUwMmE0ZjVjOWQyMTk0ZDlkYThkOGUxZTEyY2ZhNDE4YmQ2NjQzOWVkOGEwYjE3OWVlNDUwYjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA4ZTEzMGE1OGQ3NTllOWMwZTZjZDViYWQ4ZWU4OWU4M2ZkMjU1NTYwZWY5OTYwOWI4MjJmY2Y1ZDRjZTk1OGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFlMjRiZWNlYTFiMmRkOGFhNWU3Yzc4NTBmNzg4ZWI0ZDgyMmUyMDMzZWQ2ODNiZjk4MWQ2MWI4YTdlZDI2YzUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM1NTM0ZmI0YjdjYzkwZGVjZjQ3MjlkYTQwYmQ0N2ZmZDkzMWRhNTM4YmYxODEwM2Y4MmJmYzQwY2EzN2VmYjYifQ" + }, + { + "resource": "repo://hub/features/continuation-support.rst#L8-L8", + "version": "repo-lines-v1:sha256:3839d377dd1caa2f5818cee5be94d2305daf7a92689853318fe23dcce00ac168:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzgzOWQzNzdkZDFjYWEyZjU4MThjZWU1YmU5NGQyMzA1ZGFmN2E5MjY4OTg1MzMxOGZlMjNkY2NlMDBhYzE2OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzgzOWQzNzdkZDFjYWEyZjU4MThjZWU1YmU5NGQyMzA1ZGFmN2E5MjY4OTg1MzMxOGZlMjNkY2NlMDBhYzE2OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjU1NGQ0OGM4NDk5ZTk1Y2RjODNkNTE1OGQzNzhmM2QxZmM3M2I3YTM2OGE3NWU0M2RiZGRhMGZiZTBjMTI4ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_121ca27794864326bb6ccffa7478f1fe", + "statement": "Transforms convert an input entity stream into an output stream; DTL is the principal transform language for joining and reshaping data and declaring construction of new entities.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/pipes.rst#L40-L53", + "version": "repo-lines-v1:sha256:4ebaca0032eaa93930031f6703e3f1ca375f2dfd071c0182596f39ad7a1c4be3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjExNWFhNmNjMmU1YjNhODhlMTcxNjJjYWI5MTlkNmFhNmIzYjhiNjBhODEzYjYzNzc4NWM0NDE2NjE2ZTFkYTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzNGQ4NDgwYjk2NjAxYzkyNGRhZjAwNTZmYTc4MDg1NGEwYjgzODhkMjgxNGJhN2VlNmUwZmI0YzdkODA0ZWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY1YzEyYTczNDVmZGUzMjRjNmUzNjQxOTFiMTY2ZGFkZmQ1Nzk5ZTBiNGFlZjhhZTMyN2FhNmRmODUwNWM4OTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIzYmFkZTJlNmQyMzRjODg3ZjQyYjI3MjA5OTgzZjEzNGM1ZTJkZDc4NTU2NGU3MzRjOTE0Njc5NjE2YzhhZTAifQ" + } + ] + }, + { + "id": "claim_7f34f0d1f71749efb5f201b0226ce51b", + "statement": "A sink consumes entities supplied by a pump and is responsible for target writes, transactional boundaries, and batching where supported; sinks can target datasets or external systems.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/pipes.rst#L60-L71", + "version": "repo-lines-v1:sha256:10f20397f04125683ec6b8fabba7dcaa71e2f95f55f5e02b69755c6fc03b3b5f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiODg0NDljNjUzMzUwMTEyZDNmMjBmYjg0NTRkNzIyZTI3MzU0ZTU3NTlhOGUxNzI4M2FjOGZmNjgwMjY3ZTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ2OGVjOTYyNmVmMTE5OTY1MWQ3YWM1MDA0Y2Q2YTk1ZDJmMGM0OTMxZTU2MzliNjcxM2M5ZTEyMDhjNzRlNDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ2NjU3OTI4MmE0Y2JlYWQ2ZDg3ZWFlMTJhMzQ4NWI0YzU4MmI5Nzg5ZjYwZGYzZmQ4YjAzMzA3ODI4NjIwN2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBjMmUyZTVlMmJkMzdkMTBiMjkxNDUwMGNhZjUzOGI3MjRkMWRiNjVlMzBjM2JjNDY0ZTZhZTE5NmE0ZTQzODkifQ" + } + ] + }, + { + "id": "claim_1b403cb42a4941faa70bfbf84d43cf31", + "statement": "System components represent connected databases or APIs, centralize shared connection configuration, and can provide source/sink introspection, connection pooling, and rate limiting.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/systems.rst#L6-L14", + "version": "repo-lines-v1:sha256:ac533a33252c9182f7bfcb3d86a5dbbef257e9cf7f551136009f026c7fa8bbd5:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTY2ZWJhOWMxMDVhY2QyODZhZjAwZDY1MjEyNTkwOTcyMmRhMzU0NzAwMjMyOWMzYWU0YTY4ZWM2ODM1YTEyNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODc3ZWEwMjQ5MDVhMmIwYWM2ZTU2YWY2ZTBiZDJjZDE4M2QxZTc0ZmJhNzVlZTBhYTMxNmVkYzVkY2EzMWI4NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDVjMDA0NDNkOWFmYjljODg2Y2YyMzI1ZjhmODM4MWQwODY2Y2NlMzBkZmIwY2ViZDIyOTBkZWM2YzQ1ZmIwOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_36f74b1932944eefbe5e311c13dbe999", + "statement": "A flow is a directed graph of chained pipes whose outputs may feed many downstream pipes; special cases can contain cycles, and Management Studio supports flow visualization and inspection.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/flows.rst#L1-L6", + "version": "repo-lines-v1:sha256:c5641ddbf7ffa2c6e6a68ea942941afea194bb2801d26df1586593deaa03cbf8:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWVjZjZmMmNiNjRkZGQ0MjFiN2ZmNWFiMTdiZDIxZDVkMmQ3YzI5MmNlMzNhZjhmMjU3YWI5NmVmMDRkYTRkNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGVjMmE3Y2RiZjhkOTY5M2I1ZTQ2NDNiMTVkNGEzOTMyODFhZTM2ZWM5N2QzZWUzNDlkOTQzMzljMmE5Y2M0NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_7bb903e6058a49c98c0327e7682c63ab", + "statement": "A connector is the collection of components needed to synchronize one or more datatypes with a system, either into or out of Sesam, rather than merely the system definition.", + "evidence": [ + { + "resource": "repo://hub/concepts.rst#L97-L104", + "version": "repo-lines-v1:sha256:754a5d7ef032ce4eda61ae635bc371e3eea265e6b4dbfef6e2a904f7c1dd858a:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjA3YWNhMGI1NjY5MTQyOWE4N2RjODkxOTI1MWUwMzg0NTc2YWJmMGE0NDIwOWMzYzY1YjMyZDVmOGE2YjEyMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzUxMjVjOGE5MjkzMmYxMzE3NmRiNmNiODUyMWE2Yjg0OGIxNWRjNTM5MjczY2M3MjUwNDAwYWFhNzk1ZTU1OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmJjNGViMGI5Nzk1ZjkzNzZjNzM0NjkzM2NkMWVkZjE0ZDJjZTAzMDYyZDcxODQ3NjgwOTVjZDZhNzQ0M2ZmNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_e9a3aa176a254fed936160a06d8c9c5a", + "statement": "Property lineage is a best-effort upstream/downstream property-dependency graph produced by static pipe configuration analysis combined with schema inference, rather than a complete execution audit.", + "evidence": [ + { + "resource": "repo://hub/features/property-lineage.rst#L8-L23", + "version": "repo-lines-v1:sha256:053694b9dc4d4a18a20c174472fdc0cd169bdb6f638799852d7edfcee685ca6f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc2OGMzZGViNGFlNzJiZDcyZDhjNjZlNWIzNTc4MjNkMmNhYjJjZmZmYTIzZjVmNjk3ZjE4ZGU2ZDc3OTdmN2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBmMjVkZmQ2ZTk1ZDhkZDA0YWQ3OWJkYzRmYzkxMzRlMDBmZjAxNWMwNTMyOGQ1YjZlMmFiMTJlNjU5ZGU2YjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY5YmY5YTNkYTdjN2YzN2M2YmZhZTdlYTFkMDNiZDM4MmU1M2MzMjA2YzNjZTViZmYwNGFhMTAyNWZjMTQwOGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJiNjQzMzIzOGY2M2QwNWExOTNhN2Y2YjlmN2M3NDYwMzkxMThhYjk3OGQ5Mzk5YmYzOTZiZjYwYTg5NzZlMDQifQ" + } + ] + }, + { + "id": "claim_6f0e866681d94b3fa7606d50421ff99d", + "statement": "Pipe configuration requires a source, accepts zero or more transform components chained in their listed order, and defaults an omitted sink to a dataset sink with its dataset ID equal to the pipe _id.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L165-L190", + "version": "repo-lines-v1:sha256:a2acaa95f8597de2f31f6f5cdc60fb1035c987429aa647a6ca782be60adb7622:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJlMGJiNTZkY2U1NWM3M2I2YjA1MDM4OTU2N2I2MzA4OTExOTlmM2RmM2I5OTVjMjYxMjAyY2Y2NWM5NTAwNjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUwOGQwZTAzMmViOGRlNzkyMDI0ODVkMDg3ZmRiNTQ3YWRhNTc0MGQ0MWJkZTgyZmY1YmI1YmFlODMyYjcxYWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_1d80dacdad1b4fc7a8bfa7427a3c5283", + "statement": "Dataset change tracking compares content hashes and avoids writes of unchanged entities; written versions receive incremental dataset-local _updated counters used to record a pipe's since progress, so rescanning input need not rewrite unchanged output.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/datasets.rst#L8-L10", + "version": "repo-lines-v1:sha256:964d9ea7fedbcf77e445e432ef3fcb7e4503a7d0e5e685ebe270a4a69c09aa9f:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDgzY2U5Yzg4MWZlOWUyY2Y1OWIyNjVjYmZkNGVhYjgwOTA5OWYyOWRjN2ZkNjlmYjZlMDIyNjVlMzQzMWFkMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzIzNDdlMGJlYTcwM2MyOWY2NTAwZmFjODE0ZmI0N2NjNWQ5NTY5YmU5NDQ3NmNmZDQ4Y2Y2YmZlZjllOGY4MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2U3ODQ1N2UwMTVkZmRjNzQzZGM3M2Y1NmY1NWUzNzhmNjQ2MWNlNjI0YTI4YzI2NDc1YTYzOWFlYWJkOThjMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDU4MDQwOGZkMGYxODllMGUwMTA0NjcxNTRlZjRjZTQyYjBjZjVjZjQ4ZDk3YzA4MjFlNjI1MzRkOGI2YjNjZSJ9" + }, + { + "resource": "repo://hub/features/change-tracking.rst#L8-L28", + "version": "repo-lines-v1:sha256:49af7d725009172683f9ab5e62a0de8604de50079aaca0accca4da5f0dfd2bb4:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk1YzM2ZWNiNDk3ZWYwZDEyZTU5NTYxMzEzMTU5MGJlMGEzN2NmODZhMjBkNTM2ODc1MTUyYzM4NTljZTRmNTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU0NzBkODlkY2E2MWQyMWIzMTE5M2FhYzJjMzgzZjU2MDRkYmJkZmYwZTdmN2I1OWMzNmRkZTA4NzU1MmUzNDEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFmY2YzYjM3MzdhZDBmOGIxOTY5OWFiYzYwMzhiY2Y1YzlhMDI5MTJhZjViMGU1ZGUyYjFiNTlmNDhhOTUwZjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg1YzdjMDY5NzkzNjBhNzE4ZGEwNjQ4NzgwMjMxZGFlZjUwN2UxM2YzNjk2ZDI3MGU3ZTNhMDZkYzc3ODIzNGQifQ" + } + ] + }, + { + "id": "claim_26cda1391cf042d2be2d8e4c1293aa37", + "statement": "The active part of a pipe is its pump, which drives entities through transforms from source to sink and can run on interval or cron schedules and perform full rescans.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/streams-of-entities.rst#L26-L26", + "version": "repo-lines-v1:sha256:7423b68954875d9f59c60eed9877c9455ab2dc08bfbbcb689fdd705b2b8f8f88:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzQyM2I2ODk1NDg3NWQ5ZjU5YzYwZWVkOTg3N2M5NDU1YWIyZGMwOGJmYmJjYjY4OWZkZDcwNWIyYjhmOGY4OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzQyM2I2ODk1NDg3NWQ5ZjU5YzYwZWVkOTg3N2M5NDU1YWIyZGMwOGJmYmJjYjY4OWZkZDcwNWIyYjhmOGY4OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjgxY2E3Mzk4ODk4MDJjMThmZDM3MjVjM2NlZWJkZDU3OTY3MGIxYmM5YTFjYzJkZDI5MTBhZjY2N2MyODRhNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzQwYzBiMjViMDFiMTc3M2VkMTg1NWEyZGFiMzRiNDcyNDcwZmNiNjYzODc3NzdkMGU0OTQ1OTc1YzJkOGE0MSJ9" + }, + { + "resource": "repo://hub/features/scheduling-and-signalling.rst#L8-L8", + "version": "repo-lines-v1:sha256:f7c6e8c28374e224246e7464b3bf27a8227da39ca9bc3804cefa2751fc8482c4:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjdjNmU4YzI4Mzc0ZTIyNDI0NmU3NDY0YjNiZjI3YTgyMjdkYTM5Y2E5YmMzODA0Y2VmYTI3NTFmYzg0ODJjNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjdjNmU4YzI4Mzc0ZTIyNDI0NmU3NDY0YjNiZjI3YTgyMjdkYTM5Y2E5YmMzODA0Y2VmYTI3NTFmYzg0ODJjNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2I4YTEyZmZlYzc4NmMzMDExMTAwOWU3Nzk3NTY1ZWFiMjQxYWJmZmNmYTEyYjhjMzIwNzIxYzM0OTA3NTdkZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjIsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDJjMmNiM2UzODI0ZTNkMTQyYjYyNWU2ZmVlY2U0YjY3NmY0ODg4OTEzYzhmNzRkNjg4ZTExZTRlY2JlODI2NCJ9" + } + ] + }, + { + "id": "claim_9b85f48046e14538bd14630deeb228ef", + "statement": "Signalling schedules downstream pipe runs when upstream datasets change without interrupting already-running pipes; the dataset-source reference qualifies the globally enabled default by automatically disabling signalling for sub-hour intervals or cron schedules unless explicitly enabled on the source.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L108-L121", + "version": "repo-lines-v1:sha256:c74ffe7071bff74efd194661ceae6134488ea5fa81bca959e8234a33d3204da4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2NjQ4MWE5OTMwMWY5NWMxYzIyZjczZDgxYTUwMTNkZjA5NDIyNWY3YTM4NjUxOTljYjNiZjdhNzE0YWI4N2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM2OGQ1YmQ5OGRmYTFiZTdlNGY0MTQxN2MxZTQxYTZmNTU2ZDM4M2NhN2QzY2YyNmM0NzU2ZmM2MGRkMmQzYzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNkZTFiZDY1MWNjODFkNGY0YWZjNmNkNDVlNjEzNmU4NmIxOGUzYmJmOWYwYzZiNDg0ZDc4N2ExN2U3ZDEyM2UifQ" + }, + { + "resource": "repo://hub/features/scheduling-and-signalling.rst#L10-L10", + "version": "repo-lines-v1:sha256:e2f48d16fff3f9ac4214c8aa31d447c4649c3115207cd9c8f85ddbcf6f2b7b43:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTJmNDhkMTZmZmYzZjlhYzQyMTRjOGFhMzFkNDQ3YzQ2NDljMzExNTIwN2NkOWM4Zjg1ZGRiY2Y2ZjJiN2I0MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTJmNDhkMTZmZmYzZjlhYzQyMTRjOGFhMzFkNDQ3YzQ2NDljMzExNTIwN2NkOWM4Zjg1ZGRiY2Y2ZjJiN2I0MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWRhMmVkZDlhODNlNjVjN2M3YjE4NDhiNjFmMGE0YjBkNDIyYWI4OTg5ZDJiM2JmNTJjNTlhNDllMTE4YTUwZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_dcea1a8ed94e489b923846f386326055", + "statement": "Dataset-sink deletion_tracking defaults to true and, after a full run or rescan, writes deleted versions with _deleted set to true for previously stored entities not seen in the new output; this is not disappearance detection from a partial incremental response.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L140-L148", + "version": "repo-lines-v1:sha256:3b47f3786e52ba59d3e711c53fe5b3e0616ab5d1e46e686b88f235a750983add:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjg5MTc4ODhmYjgyZGVlOTgwYmYyYWEyMzAxOTE1ZDk3MDQ1YmE3NTExYWNlYzNiYTFkMjRkY2E4OTU2MWZmOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDhkM2I4ZGE2YzE1ZTdjZDA1YTJiNmEyYTcyY2YzZWVkYjExNDFlNzhmNWE1YmRmODhkMjI0NGI3MDY0NGRlMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjQzOWZlYTU3MDhmYjUyN2Q5ZWUxMDhiOTM1MDljMDU0NzQ5MGUyOWQ0NTEwY2I5M2U1ZWRhY2VlMmJlOTFmMyJ9" + }, + { + "resource": "repo://hub/features/deletion-tracking.rst#L8-L8", + "version": "repo-lines-v1:sha256:4020424a3c25ef2069d7aa025543cc5ec2d4bc57ed0833a3e2ffc413f7178424:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDAyMDQyNGEzYzI1ZWYyMDY5ZDdhYTAyNTU0M2NjNWVjMmQ0YmM1N2VkMDgzM2EzZTJmZmM0MTNmNzE3ODQyNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDAyMDQyNGEzYzI1ZWYyMDY5ZDdhYTAyNTU0M2NjNWVjMmQ0YmM1N2VkMDgzM2EzZTJmZmM0MTNmNzE3ODQyNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMThmNGY5NzczMWRhZWI3MDE5NWEwNjA4NGU2ZWQ5NWNlYjQ2YmEwYTYwYTk3YmI0NzQ0ZjllMWQ3NDE3N2EzNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_01c3c20b8100448489b0c1b2546d5d37", + "statement": "DTL dependency tracking causes affected source entities to be reprocessed after referenced-dataset changes and uses inverse traversal; it is supported only for pipes with dataset sources.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L9-L11", + "version": "repo-lines-v1:sha256:a1bd2cf1485667322c1d314fe889c2b1f9886d19fe1d007a938a091067598872:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMxNzI0NzM4MWYxNGY2OGEwYmY1OTZkYThkNTdhYzJkOWY0ZTg5ZTliMWIyNGIyZmQyOTE4ZTExMWNmNjYxOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzczODk1MTc3N2Q5OGI3YzFjNzUxYTY0YzQ2MmE5YmRiOWQwN2MzNDg2N2I2Y2QzYTA1YzE5NWFhMTQ0NTllMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzc0NmY5NjM5ODUzY2I2ZGZiOGMzOWYzMTZiZDQ0ZDg4YjYyNjc1NmMwZTM2OTI3NzM0NTAwNzNmOGNjYjg5YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjgwNmNiMmI0ZWQ2M2ZlOGQ1YjhjNzkyZmM0YzZmMTNiNWViOWU5YzRmYzcwYjU3YTYwNTBjMjBmOWRiOGExMCJ9" + }, + { + "resource": "repo://hub/features/dependency-tracking.rst#L8-L14", + "version": "repo-lines-v1:sha256:752f9ae994e38b757195dcec312457813f6ed823de4486cff9a14aae1b61267b:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUzN2VjNzZlZmRiZDZlNTU3ZjQ4MjFkNmEyMWM4Y2E3YjBjYTdkNjdiNmNjNzIxYTBjMjI0YjU1ZmM2MDMxZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDYwZjVhODVlZmEyYmE5NDM1OTViYjFiYmQwMTZhMDVlMzk4MTljOWZmNGNjMjFhZWQwNTM3NTdiNTc4MDUyZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzI0MGVjZWQ1MDEwYTQyZjEwZDcyZjFhMDU5YTA3ODliN2NhZDVlN2E1NTA1MTFkYzYzM2FkYWQ5OGU3OTQ0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWUxMGM2MDA1NjAyNjMyOTgzY2QxMTJiYTVjZWUxZWIwODkwNjYxYzczNDk0NWNhZjllMzVjM2QyMTk3MjY3YiJ9" + } + ] + }, + { + "id": "claim_6ad5c2b6c9df46f1ba01c2328d2af647", + "statement": "A merge-source pipe does not support DTL hops or apply-hops dependency tracking and should be split into separate merge and dataset-source transform pipes when this is needed; in chained transforms, changed join criteria relative to source entities can break inverse dependency traversal.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L9-L17", + "version": "repo-lines-v1:sha256:15a83e71a8a25c2484bf0a89f0feecb09097722a7889a40d73f51f01b108923d:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMxNzI0NzM4MWYxNGY2OGEwYmY1OTZkYThkNTdhYzJkOWY0ZTg5ZTliMWIyNGIyZmQyOTE4ZTExMWNmNjYxOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDBmOGRhY2Y4ZWY3NzRmYjI5OGM3ZDQ0MTI4OTQyZWU5ZTZiOWM4MWFjMTU1ZGNmMmJmNDAxMDllMjU5YjM4NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzc0NmY5NjM5ODUzY2I2ZGZiOGMzOWYzMTZiZDQ0ZDg4YjYyNjc1NmMwZTM2OTI3NzM0NTAwNzNmOGNjYjg5YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_87c1e0d7abbc4e6ea8059b56ac901508", + "statement": "The entity _tracked property is documented as superseded and associated with an old dependency-tracking implementation, so log-head materialization descriptions should not be treated as evidence of the current storage algorithm.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L124-L134", + "version": "repo-lines-v1:sha256:ec396663ffedd310efc2e71ab2c5a7f929ecece32fd40d805e5e2528baad0403:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY3MWMxOTY2YWExMjA5MDZjNjNjYThhZmVmYjgyZTZlZDJiMmUzODY0Y2JiNWQ5YmQ2ZjMzNmU0MjYyMDk3ZTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliNWU0MzlmMjY1NzU1NDU0ZWQwMTBlN2M0YzU5YWZhOTI2YzVlMDQyMjdlMDNjNzZjODQ2NTRkMDcyODQyYzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU2MDU2NTIwNDA1OTAwMWQxMGUzNzZjMWQ3ZWM3MTllNDRlZWVkMmExYjI3YTdmMjE0ZWFiYmExYjkzZDBjMDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImViN2NjY2I5MWE3Y2RlZjg5NjZmMmMyNWIzN2EyOTIyODI2NzQ2M2YxNzdlYmE3OGRiN2IyYmMyMzJmNGNjN2MifQ" + }, + { + "resource": "repo://hub/features/dependency-tracking.rst#L8-L10", + "version": "repo-lines-v1:sha256:c72c8aa0c47791e1b192d80c8bbe07e13eeebdcbf64a6e8c95af3fd5894d7313:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUzN2VjNzZlZmRiZDZlNTU3ZjQ4MjFkNmEyMWM4Y2E3YjBjYTdkNjdiNmNjNzIxYTBjMjI0YjU1ZmM2MDMxZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGExYzE4ZjFmMDJkN2Q1MzQ1YTY5ZWQxYjM3OWYxNDAwNWZmYmRmZjZlZTEwODY1ZGFiNjk4NDY2YjhhMzMwMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzI0MGVjZWQ1MDEwYTQyZjEwZDcyZjFhMDU5YTA3ODliN2NhZDVlN2E1NTA1MTFkYzYzM2FkYWQ5OGU3OTQ0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2JlYWJiMjFhYTBlOGRkNDU0ZjkyN2ZhMjE0MGZlNDM4YmU2OTI0ZDA4NDViZmFhOTNkZGUzMTg4YWU5NjQ2NCJ9" + } + ] + }, + { + "id": "claim_78c017caa4ed461bb5a394eaa0e52df0", + "statement": "Pump error handling logs failed entities, can retry failed writes, and can route terminal failures to a dead-letter dataset depending on configured retry strategy.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/pipes.rst#L78-L82", + "version": "repo-lines-v1:sha256:d0b17e64c7eef119376d4939ec4951bfd5ea4d25bb2c84e7224fb2ad15f5e066:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzM4MjY4MDgzZDA1MjM4YjlkYjY2ZjM4MzgyMTJhNmY4NmViM2IxMDRhZWYxNjI5ZTFhODA5ZGY1ODY4NjU5MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODFhMDkwY2FkYTMxZjE4ZTMwOTM5NDhiMzExYTUwMTVjNmQwMzFjM2VjOGZhYTc2ZTFjYjgwODYzMTlmMTQwNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjFjY2EyY2I4MzdkNTk3ZmQ3YjEzM2JjODJiZDMwMzBiOTQwMjM3NDQ3ODVlOTIyYjE2OGU1MzBjZjQxZTgyYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_b2158d6cd0b14e58a9e886ad68581ee9", + "statement": "Configuration changes, dataset recreation or deletion, source truncation, backup restoration, and changed joins can leave pipes out of sync; enabled automatic reprocessing may reset and fully rescan or rewind, but reprocessing_policy defaults to continue rather than automatic.", + "evidence": [ + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L8-L52", + "version": "repo-lines-v1:sha256:92fac78a647b7940273ffbb1be6db26e0078dd789b15a5dabf20ceacc2759d47:eyJzZWxlY3RlZExpbmVDb3VudCI6NDUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2ZTYxZDE4YzU5NzViYTYxMGJkYzNiM2M3MjE5Y2QzNDRkZWVkODU0ZmQ5MzNiOWRmMjgwMDVjZDA5MTRlMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ5ZDk1OWZkMGVkNDIzMTVjZjE2Y2Q3MDkyMjc1YjVjMDVkZGMxY2I5ZWYwOWU1MmNmODg3NTQ3Y2NhMDNjMGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_06d473d1c54042d3bfd8465e1f04c303", + "statement": "Bidirectional synchronization returns global master data to business systems, but safe two-way flows require duplicate management, protection against overwriting source data not yet observed by Sesam, and completeness before propagating downstream updates.", + "evidence": [ + { + "resource": "repo://hub/bidirectional-synchronization.rst#L26-L56", + "version": "repo-lines-v1:sha256:9544252190c76a78a103e42c3167280f1ef817af4a64ee717e8d211a07d08bd8:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFmYTIxYTE4NTVjNWFjMWRiNTg0MTFlMDUyYmI1OWU0MDIxMjJiY2E4YjBjZWYwODJlZGI3YjU4YWEzZmY5NzUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY2MWIzNTQ4NTljYTRkMGM3YzMyNGNmMDQ0ODQ2YTNjMjkwZjE1ZThiNTcyZTVmZDI4NjRkMDNiZGE5YzUxZDgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUyYTE5NDFjNDEyM2I5MTI0M2UyZTVmYWM1OGIzYjc4NTVhNGYyYzNmZjdmZWZmYjIzZTA3N2MwMDhhMDIwNmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ4OTlhNjNjZDQyYzg1ODY5YWYwMTBjM2Y3N2M2NTViMjZiY2ZkYTk2NjliM2VmZWRhNGNkNDM5MmQ5YjQ4ZDkifQ" + }, + { + "resource": "repo://hub/bidirectional-synchronization.rst#L9-L15", + "version": "repo-lines-v1:sha256:9f7e5383d1bdf32e705b13cb2031c42ac83b24a6bcdee080e8682339a631a3d0:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjY0NzliZGJjZDFlMGFlNTMyOTcyZDY4MDczYjdhYWFiMTUxODc2MTIzMmMwZDg5NzZiODE3MWE1OTAwMjZmYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWRjYjI0MjRmNDUxNWQyYzY5ODFkMjQ3MDZmNGVkN2MwZDE5OGE5ZWIxMWYxNGU3N2JmY2JkMDk5YTQ2NzIyMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmIyYmQ4ODQ3NGRmNzk1ODcxOTNhMDRlODZjMzAyYTE1OGFkNzRiODQ4MDZjZDJlYmRlZDhiY2YxNWUyNzhkNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzRjYTEyOGYxMTZlMDY1NWY5MjU4MmQzOTEzYTA4OTI2Yzc2YjYwNTkxZmQzNjk0NmEwYWZjYjVhYmUzZTRiYiJ9" + }, + { + "resource": "repo://hub/core-principles.rst#L132-L154", + "version": "repo-lines-v1:sha256:c9b3ded43c590bc00bc101c265d4ee4bce7758833d0523318c775d85b276c6ca:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk1MjUzZDVhYzAxMTMyNDRiZjg0NDk5OGJiNDA5N2IxMGM2MjhlMGMxOGY0MWU2MGU3ZWQ3NTE2YTFlZTgwYTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2ZGFlNjQyMmFhNjNkZDBjYjY3YjhhMzI2NmEwYjExNGVjMTlmZGNhMmEzZmFiMTdlN2Y5OGIwNzMwNGUwNDEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZjYjVmYTE2NGM1M2U4NDNiNGM0ZDRjZGNkOWExODA1Mjc3YzI1NzM3YjhkODBjOTU1NDY4ZGQ3YzQwMjMxNGYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM2NjUyMDUzZGUwYzQwMDZjNGI0ZWVmNGJlMTIzNzc1NTkwMGVjNzYzNTY3MzM4MjhlZTgwYTY5YTc2MGI2MzMifQ" + } + ] + }, + { + "id": "claim_35ab45bed84246a3842331afb8847294", + "statement": "The authored product references distinguish data-processing service responsibilities, Portal subscription-management APIs, and the Management Studio administration UI; the reference repository provides documentation and API specifications rather than an inspected implementation call graph.", + "evidence": [ + { + "resource": "repo://README.md#L1-L35", + "version": "repo-lines-v1:sha256:ae44a4ec5abe7bba90c99290987dce31ebb624e26dd6054616c728fa550544e3:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhNmRmM2U0MmQ0MGU2OTM5MTQ4ZGZiZDNjY2E2Y2M2YjA5Yjk2N2Q4NGJkZDk5M2EzNzRkZDUxYzU2ZWI3MWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkN2E1MTVjNzRmOTkwYmEwN2FkNjcxMWFkOTY2YTU4NzIwNDYxYzAyNDZkNjAzMjdjYmUwM2ZmYjU0YTIzOGEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/api.rst#L223-L237", + "version": "repo-lines-v1:sha256:dacb0e40a83472968be7a2746a566428d4f908d54aae0313d5c88e230b3da77f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ4ODg5ZDM4OWU4Y2FiOWFlMWZiOTdlYzRhOTE3ZDBhZTIyYmM2NDA2ZjhkMzg5Zjg0N2NkNmFiYzA3MWE4MWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmNGYzYzRmNGU3OTg5YjZlMWViMDVjMjhiMGMyZTc5OGYyNjQ5YmI1Yzk5M2Q2ODIwODAxYWJmNTRkMDgwZGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjExOWYwZjQ1YjcwNmJmMmE5NTE0MTBiMTE5M2UzODhlNTViOWIwZWNiZjk5OTY0ZjQ2ZmE2YTM2ZDM5YTdhNWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVlNTc1MWEzYmQyM2UyYmZjY2FiMDI5NjgzMTZiYWMxMjljMDU1YjM5Mjc4MWNlMDUxNTEwZmE5ZGUwYThlYTMifQ" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L29-L41", + "version": "repo-lines-v1:sha256:c4ba6e7e2de75921011dd12242d3b38522f74078a5795eda666104de48f1bab6:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU3NmZmMThmYTg3OGU2OWQ4MWVkNWFjMmY0ODg5OTBhNjUzODI0MDEzNWYzZjM0ZWViYTMxZmM5OTQ5YWExNWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhODNkY2Q2MmRhMDY5ZTQ1MWEwNDFlYzJhYjIyNWU3OGM0ZDFiZTZmNjFjZmRhMWZhMjVkYWFhZmJiYWY2NDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZhNzFmM2Q1ZTM3OTQzNDQwNmNjOGZlNDYzYmQxNzA4ZmE1OTQ5Yjc0NGM2ZGRjZGI5Y2IyMTZjMGY5MDg4ODAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJhZGI2YzI1M2IwYjFmMjM2NDMwZmExYTdjNjdhNDEwZDhmODc5YzljZDg0OGZmODRjNTU4NDAzNDM3ODI4YjQifQ" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L60-L76", + "version": "repo-lines-v1:sha256:9c0c1cb3bd4d36b9135d32a885ea561c057a585f8e5293b4f4cb9e8d19dde78a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3Y2IxOGI0OTM4MzZlZmZlOTBmNzE5OWE0YTQ3OTkwNzUzOTJlMjAxNDA3YTNkZTM3ZTJkMjU2MGExYWQ3ZTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEzZDE5OTQ5ZThjZTJhMTMxMTI0YTk4NGNkMDJjZWYzOGRhYWYyYjE4MzA2ZmQ4OGZlMDljZjg0YTBmNTlkNDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgzMjMxZTAyYjY3MGRkNjIxMzlhMjgwNmU4YzJjMDQ3ZDhkNWI0NzRkNTljN2Q5NjA3NmI4ZjE0NWQ5NzBjNmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ2NjU0ODJmZjk0ZTExNzlhZmMzZDNhY2I0NTk1MTljZWY4NjI2MjBiNjU1ODU0NGY0ZDRmNzlkNjcwODJjMTAifQ" + }, + { + "resource": "repo://hub/management-studio.rst#L9-L16", + "version": "repo-lines-v1:sha256:f77cb8d92961bfac8b28b4876fbeea9590d99695c4fa837b99aaeb7aa33ae419:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2ZhNTNmYzBkYWI4ZWY5NmQwNWQ4ZmQ0YzdlNDFiNDkwMTgyODAzNzI1YzY3Yjg2YTUzMWUwOWVmZmM1ZmE3NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzg1ZGZkY2VkN2M1ZmRjM2FmOGVmNjQzNTA4MjVmNmNlZTUxYzQ4NzAwNjllMzg1MmY4NDFlNGQwZmNjYzQ3MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDUzYzQwYmIwMjBmOTQwODViMjg4MjZhNjFiMjM5ZjMxNTM2NmM4ODg3ZjkyOWY3NDE2MGMwYzQzMjliOTJkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzRjOGQwNzEyYjY0NGM0YjE3NDU5MDc3ZmFjYWFhNThmYjgxOTQ0MDk3ZWY4Y2YwZDY2OTUwOGNmMjVmMjVjOCJ9" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L353-L449", + "version": "repo-lines-v1:sha256:3d160143ebe47224a79cd56e31ebac020e9c846d178eab4c07d4651ada1360cb:eyJzZWxlY3RlZExpbmVDb3VudCI6OTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNkODJmM2E0MmY5Y2E4OWRjOGM3Y2JmZWYwOTlmODJmNjIwYzQ5ZTM4ZDQzNzkzYzQ0MDg5ZDI3NWE5MTMzNWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2NTJmZjU2ZmRmNzMyNDJlYTJkZDQ0MTBlZjI0ZTZhNmY5YWIwMmUyZDMxNTU4MjE0NzU3YzM2M2MxNjVmMDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhkM2VkMmMyYjc4MmRlYTVmNjdiYmMwMmRkOTgxZTA0MDk2YjIwNWQ0OWE1NTE5YTljMTQ4Njg4MGU1NGJkZWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQyOTkyM2QxMzkzMWEwZjIwNDhiYThjYjYxN2EwMWFhODhhYWY3YjE5YzRmNjMwNzk1YWFlMTZlMjdhNDcxMmMifQ" + } + ] + }, + { + "id": "claim_d63a40ef3d0347dd92724b8b544aacf9", + "statement": "In the documented single-machine deployment, the Sesam service instance, commonly called the node, hosts the Service API; in the clustered deployment the aggregator hosts that API, the storage node stores configuration and provisioner topology, the provisioner provisions processing pipes, and service nodes run one or more pipes.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L29-L41", + "version": "repo-lines-v1:sha256:c4ba6e7e2de75921011dd12242d3b38522f74078a5795eda666104de48f1bab6:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU3NmZmMThmYTg3OGU2OWQ4MWVkNWFjMmY0ODg5OTBhNjUzODI0MDEzNWYzZjM0ZWViYTMxZmM5OTQ5YWExNWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhODNkY2Q2MmRhMDY5ZTQ1MWEwNDFlYzJhYjIyNWU3OGM0ZDFiZTZmNjFjZmRhMWZhMjVkYWFhZmJiYWY2NDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZhNzFmM2Q1ZTM3OTQzNDQwNmNjOGZlNDYzYmQxNzA4ZmE1OTQ5Yjc0NGM2ZGRjZGI5Y2IyMTZjMGY5MDg4ODAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJhZGI2YzI1M2IwYjFmMjM2NDMwZmExYTdjNjdhNDEwZDhmODc5YzljZDg0OGZmODRjNTU4NDAzNDM3ODI4YjQifQ" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L60-L76", + "version": "repo-lines-v1:sha256:9c0c1cb3bd4d36b9135d32a885ea561c057a585f8e5293b4f4cb9e8d19dde78a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3Y2IxOGI0OTM4MzZlZmZlOTBmNzE5OWE0YTQ3OTkwNzUzOTJlMjAxNDA3YTNkZTM3ZTJkMjU2MGExYWQ3ZTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEzZDE5OTQ5ZThjZTJhMTMxMTI0YTk4NGNkMDJjZWYzOGRhYWYyYjE4MzA2ZmQ4OGZlMDljZjg0YTBmNTlkNDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgzMjMxZTAyYjY3MGRkNjIxMzlhMjgwNmU4YzJjMDQ3ZDhkNWI0NzRkNTljN2Q5NjA3NmI4ZjE0NWQ5NzBjNmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ2NjU0ODJmZjk0ZTExNzlhZmMzZDNhY2I0NTk1MTljZWY4NjI2MjBiNjU1ODU0NGY0ZDRmNzlkNjcwODJjMTAifQ" + } + ] + }, + { + "id": "claim_8096818855b94ac8b45e3ca50e68ee7a", + "statement": "The local Portal API specification documents listing and creating subscriptions, retrieving/updating/deleting a specific subscription, issuing subscription JWTs, and providing the public key for JWT signature verification.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L300-L326", + "version": "repo-lines-v1:sha256:bd51f01d4a5f1729891066dbdc178765b7ec23bba6018e3222d705aaabf87f5c:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxODEwNTg1MWQ0YTFkZGU0NzFiYWIyNTlmZjZjMzg0MGZhNzhkYmUyOTMwOGZlYWZmNTM1MmNkOGUwMGM4MmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE5Y2M5YmVjY2U1YWViYzBlZDU0YmJjYjVhYjQ5MjQzYTNiMzBmMTIyNzA0YjA5YzY3Mzk1OWEyOWI0NTI2ZTEifQ" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L353-L449", + "version": "repo-lines-v1:sha256:3d160143ebe47224a79cd56e31ebac020e9c846d178eab4c07d4651ada1360cb:eyJzZWxlY3RlZExpbmVDb3VudCI6OTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNkODJmM2E0MmY5Y2E4OWRjOGM3Y2JmZWYwOTlmODJmNjIwYzQ5ZTM4ZDQzNzkzYzQ0MDg5ZDI3NWE5MTMzNWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2NTJmZjU2ZmRmNzMyNDJlYTJkZDQ0MTBlZjI0ZTZhNmY5YWIwMmUyZDMxNTU4MjE0NzU3YzM2M2MxNjVmMDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhkM2VkMmMyYjc4MmRlYTVmNjdiYmMwMmRkOTgxZTA0MDk2YjIwNWQ0OWE1NTE5YTljMTQ4Njg4MGU1NGJkZWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQyOTkyM2QxMzkzMWEwZjIwNDhiYThjYjYxN2EwMWFhODhhYWY3YjE5YzRmNjMwNzk1YWFlMTZlMjdhNDcxMmMifQ" + } + ] + }, + { + "id": "claim_0afe32dafa204c9e83026a9b2696a24b", + "statement": "Management Studio is the subscription configuration, management, and administration UI and is reached by selecting a desired subscription in the Sesam Portal.", + "evidence": [ + { + "resource": "repo://hub/management-studio.rst#L1-L16", + "version": "repo-lines-v1:sha256:b21a5773f9406e55e4b8b1ce0aaa960a0d310a081e9d71dcf83170fa048da4be:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNhOTY3ZjNkZWMyNWJkOWE3MzVkZmE1NWE3MWY4MzM0NmRmYTcxY2RiZjVlYWVkY2QwYTJlZmZlMDEzN2I5ZGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4NWRmZGNlZDdjNWZkYzNhZjhlZjY0MzUwODI1ZjZjZWU1MWM0ODcwMDY5ZTM4NTJmODQxZTRkMGZjY2M0NzIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM0YzhkMDcxMmI2NDRjNGIxNzQ1OTA3N2ZhY2FhYTU4ZmI4MTk0NDA5N2VmOGNmMGQ2Njk1MDhjZjI1ZjI1YzgifQ" + } + ] + }, + { + "id": "claim_ae36ff2fa0af42b4b638d17e0fc96076", + "statement": "In the documented authorization flow, the portal issues a signed JWT containing the user's subscription roles, the GUI sends it in the Authorization header to the node, and the node verifies the signature and checks resource ACLs before returning dataset data or 403 Forbidden.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L26-L63", + "version": "repo-lines-v1:sha256:4d5f3c4e09701487f81340389d0066e9f088e6c1f6362fd0db86a60cc7dd037b:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMwNTdhMTZhNjhjOWZiNGJiMThjYjQ2MjZiNDAwMTYyZTU0ODdiYzk5MjhhMTRiYTY1YTg4ZGMyMGUyOTIwODYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU2ZDg2YjdjNGIyNmE1MGU1YjVjY2Q3ZjRiZTIxNzdkZGNkY2I1OTU0MjY1ZGYyYzQwZmY2Zjk1MGRiYzk3NDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5YmUwZTVlMmZkZDkxYTZjMDY0MzVkY2JmZDZiNzhhYjE4NGY0YjliODU0NjYyZGEwNWY1N2QyYTk2YjM4YmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhiOTc1Y2Y3OTBiNGMwNTRhNjQxMTFhODgwM2UwNWExYTk2ZjU0NWNlZWRhNzUzNjAzYTU3ZDA1OWEwNzIwMWIifQ" + } + ] + }, + { + "id": "claim_e43a09f387ba4bdd834e96752ca3130a", + "statement": "The Service API controls a Sesam service and its data, exposes /api/pipes and /api/datasets as central entrypoints, and reports supported pump operations through the runtime supported-operations field before operations are posted to /api/pipes/{pipeID}/pump.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L10-L20", + "version": "repo-lines-v1:sha256:2b0dfaa70c6101b550419fcfa76cdb41f3f0d33fb46a65e8181904f073f16263:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2MGRhMTJiNTFlZDQwYmIxZGE5ZWY2NDUwMjFjMDY3Yzg2MmM2NDE5ODljOTY1NWY4Y2FmM2I4NjZjY2JiZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI0Y2VmMTRmZDIwNDllZWMzNjJiNTVmNWE3N2I5ZTNiMzdjYWI0YjA0NzUxZWQ1OWY2OGNlOTM5NDQyODA5M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdiZWY2NmU2N2FlNWFkNWY5MWRlMDc4MDQ5ZGY3ZGY4ZDhkMWIyMThlZjk1MzEyYjM4NTgzZDQ0YWY3NzdmZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ1MWU2YmExYzAzOTdkOGM3MzI5MDNhY2E0NWE4YmVhMjNiOWUxMjkwNDg1OGRkMzllM2MwZDBlZDI3MTRlOGIifQ" + }, + { + "resource": "repo://hub/api.rst#L60-L123", + "version": "repo-lines-v1:sha256:2387f24ef7dfe4e4c0b20a67a875f157f88023b162d40e97a75c0c860fe9f8a2:eyJzZWxlY3RlZExpbmVDb3VudCI6NjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQwYjk2MWQ1MmU0MmY5OTNmMjhlNWIyNWQ5YWM1NDc0NjA5ZjhkOTljY2Q0MmNjNTRjODc5NmMyM2RiZGYxYzAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ3ZWRlOGViNjQ5NGM4NTkwZDNkYTIyOWYwNWVkNWE1MTEzZTQyNTM3Y2M4MDcxZmUxYjQ2YmJmN2Y5YmM4MjUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyODMwOGMzNWRhNmFjODgzNTA4M2ZhMTkxNjFhN2Y3NmQ0NTA2ZDM1NzY3NmMyNzgyNTdjYjZiMzU0NmZiN2UiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjcifQ" + } + ] + }, + { + "id": "claim_178f19134f204369a16f09721a7dcb16", + "statement": "Bulk uploads through /api/config or /api/config/{config-group} replace all configuration in the selected config group rather than applying additive patches.", + "evidence": [ + { + "resource": "repo://hub/features/api-config-groups.rst#L19-L46", + "version": "repo-lines-v1:sha256:c999d0781c13571aa17b156074089875ac8550317a0ee234bbe9044a87639670:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzMDE5NDY2ZjdmZTc0ODQ5M2I2YTQ1YTE0NzNiMjg3ZjQ4MWY3ZTIwY2FhZTQ3N2FlYTA3Mjk1ZDU1ZWE4Y2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhhNTM0YTY2Y2FhZGIwODhlZDY5MGM5YTAzOTM0NmI1YjM5MGNiYjNkMmIxOTM4N2ViZWE0YzRiZjQ0NTg2MzUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUyOTM3YzA1MzY4NmRiODM5OWY1ZWEwMTE1NGJiNjZjNzljNDcyMjBmNTk0OTY2ODg5NDQ1NzBiZWQ2ZTYwN2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_e5fd7c5a8c5c421098aed2889624d850", + "statement": "The Service API documentation warns against using the dataset API to write production data and directs ingestion through an HTTP endpoint source or JSON Push Protocol instead.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L150-L156", + "version": "repo-lines-v1:sha256:a71abf3960cce1e76b5f76e1b1d9317fa9b0b19ada7b37a8d31856731c7ab81a:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTQ4MWM0NjIyOTA3MGNmZjdlYWQyMzBlOGI4ZGZhNDlkMjMyZjQyZTkwNDMyYmJiMDE0ZmMzZDQ1OWVjNTMwYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGZhYmI3NDE3MTllMzNjNWNjOWNhZGJjZGUzNjMyMDczYzg0NGE0NWQxZDYyMDU2NjA1ZDg2MWEwMDgzYjJiYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmEzY2Y1MTkyMzU0ZjcxNjE1YWM1MTAzNGIzZTk3YzIwZWRhOTk2NDNmY2FmNWJiZTZkNDFhZDU5YmQxMjE2NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWY5YmQyZGI1MmRhNmM1MzQ2NDIxMTc4M2E1YTg4ZTk3ODY2YWNlNmUyZTk4YzE5OTdlNTZhZWEwN2EyZGEwNiJ9" + } + ] + }, + { + "id": "claim_f4bb30434b0148ab84cf8a7e3b46a88b", + "statement": "Sesam is documented as primarily asynchronous batching and stream processing; its Service API is not intended for many concurrent clients or low-latency, high-throughput user-facing applications, for which data should be streamed into dedicated publishing systems.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/streams-of-entities.rst#L29-L31", + "version": "repo-lines-v1:sha256:a4687f186dcecf812846f0e8e8bc71a95fb916a4740fb8d65dc686f19b7bc7b5:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDBhYTMyYjYyM2NlM2M3NGEwNzY1MzllZDI5OWJhMmQ4ZjFlNGQyYzYwODdlODdjNDJmNTQ0OGRkNDgwNDdmMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmE0ZTc3NDkwZjY1ZjIxMDAwMzkzMjVmMTVjYzAwNGUxM2YwMGFmYWU4MDExNWZmYzU1ZjBhM2VhZjFlOWJiMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_331a6be63c884a898b214cb48984eac0", + "statement": "Custom source, transform, and sink integrations can use URL systems with external endpoints and JSON pull/push protocols or microservice systems with hosted microservices.", + "evidence": [ + { + "resource": "repo://hub/extension-points.rst#L7-L19", + "version": "repo-lines-v1:sha256:686fc2c5cde95f5fff5365d60c34f6df1d2798c76e0ac0c29a2487ab4a793a38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJhY2EzYzFjNDFmNmViNGY4ZDdlYTgyNGViNjI0ZmViYTMzYmVkNmFhNTk3ZmExZjk4ZDZhYmI1NDgwOTA0ZTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4Y2IxOGFkMjhiYmQ5MWFiOTNmMDU1ZmQ1MWJkMWI2NWJlMzNiMmEzMGRjYzRkZTMwMGUzMmI1ODE2YTc5YWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ0OTUyNzlkMzQ0MjQ0ODcxODU1NTJiZTg0YWM3ODg5NTkzNDkxNmJlMTAwMmMyMWIzZjEyNTAxY2UzYTI1ODMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNmMDJjODQ0Y2I1YWU2NWI3ZjQ4Njc4OTMyZTVkZGM1ZmZiNmVmZWZhMTA4MjVmY2I2MjU2OGJkZTA3MzVmNWIifQ" + } + ] + }, + { + "id": "claim_fe6a73cc24394597a111b5648e42cc58", + "statement": "The deployment reference documents single-machine and clustered container-based service variants and persistence in RocksDB using MessagePack storage, distinct from the logical extended JSON-based entity representation.", + "evidence": [ + { + "resource": "repo://hub/core-principles.rst#L119-L121", + "version": "repo-lines-v1:sha256:7386c87573d231a2db06b5f30c1e7e1759b18289c45262c1dcb7cff7f3772e90:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzQ3YWM4OGQ4YjVmZmI5M2RmMGRlOWYwODk5YzQ5NjM5MTY2Yjc0YTI4Y2ZlMWY4MTg4YTIwNWZjMGQ1OGZkMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTFiZmRjYzcxNTJhOGVhNWM4NzE1ZjVlMTkwNGVjYjdjNDBhYjhlZDBmMzk5ZTU2YWIxOTZlMjQ5NGZmYWUyYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTEyODRlMzVjYWM1NGYwY2IyNTZiZmJlOTVjNzcwMDFiNTI5NjBkMmMwYWJkOGZlYTE5YmQ3NzFkZDlmNjVhZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjAwMzg4OTY2YzBkMDY2NzEzMWU0YzYxYWMyYmE5M2I1ZmRmMGEyZDU4ZDYyY2Y3NzY4ZDk5YjNhYmQ1ZmQ2MSJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L25-L25", + "version": "repo-lines-v1:sha256:3d921a7d290e19b6a106876bd4353067881aa192b207760d6f489e3c1f25c795:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2Q5MjFhN2QyOTBlMTliNmExMDY4NzZiZDQzNTMwNjc4ODFhYTE5MmIyMDc3NjBkNmY0ODllM2MxZjI1Yzc5NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2Q5MjFhN2QyOTBlMTliNmExMDY4NzZiZDQzNTMwNjc4ODFhYTE5MmIyMDc3NjBkNmY0ODllM2MxZjI1Yzc5NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDk4ZmVmZGIwNzRiMjQ5NTEzOTJhOTcxZDYxMjY0MzE0ODcxNTFhNGU2NzkzY2U1NmE3ZmFjZmVjOWJmNTM0ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODU4YTVkZWQ2Zjg2MDFhM2UzZTlkZTNjZTU5MjhlZGQyNDBiMjI3ZTFmOGE4YmI3NDNlODE5ODlkZmFmY2VmZSJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L8-L19", + "version": "repo-lines-v1:sha256:ea10dac824ecdf8a114831227e430363a1f0416daf1905d5e4b16fb3aa8a4c8c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzYzNkNTg1YzU1NTdmOTAyN2RkZjBkMWI2NjM4OTNkMzVkNDE4ZjE2Yjk5ZmNkMTU5NWExNDkzOGI5NzQ2N2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM3ZmYxYjk2MDU4Mjc0NmY2ODdjMTEzMzI5ODlkYjRlYjFmZjE1YzUzMDMzZjRmZDYxODhiZTQxZDdmY2M5OGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdiZWY2NmU2N2FlNWFkNWY5MWRlMDc4MDQ5ZGY3ZGY4ZDhkMWIyMThlZjk1MzEyYjM4NTgzZDQ0YWY3NzdmZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdkNDEyMjNmMTExOTZkNjNmOGI0MzU1NjAwY2QyZDM2OThlN2VhMzYzOWYzYzUxNGMxNmNmNjg5YWI4OGNiOGUifQ" + } + ] + }, + { + "id": "claim_d5383e18fbe1499fb320e1bdba03e726", + "statement": "The documented local configuration test workflow drains non-output pipe queues, compares endpoint-pipe outputs with expected results under expected/ using paired .json and .test.json files, and runs through sesam -vv test; output pipes should be disabled or unable to send data to external systems.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L21", + "version": "repo-lines-v1:sha256:d728920650b733582762cd2916dd09f6f0f0af185fdda8c3774bd133cdd1ef38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + }, + { + "id": "claim_7ce9637613bc4ef5bce37c4dff30783a", + "statement": "Tests against a shared CI node must run one at a time because the Sesam client overwrites configuration during testing; the CI node should be unable to write data to external systems.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L7-L22", + "version": "repo-lines-v1:sha256:81b97600d1a11a87e4d614dec70be22441d2ef3700e558ebea7fc43c37265492:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5NWQ0OTIyYjgzZGRlZTFkODI2ZWNhNWFlZGYyNTUyNTVhYjZhOTlmYjljZTBhNTcwYTE4MTFlNjZmZDQ4ZGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk2ZWExOWRlYWQ3YzQ2NzExMzJjY2Q3NDM5NmZmZjFiODg3NTQ4YTkyYzdlNzQzYWRkZjlmMmE0Y2M3MmQ0MGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU4MjMyOTcxYzUwMTJkZjU1ODc2MDZiOTRlMjVhOWI0Y2VlOTA4NDQ1MzUwODlkNTEyZjkzMTk5YjA0MDQwY2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQwOTE0NjAyZThjNGJmZDI0ZTVlODRiYjdjM2NmMDg1YjIxYzZhMTQ0NTk4MjAxMjIyMzRmZjhlMWEzMTk1ZjcifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/concepts/dtl-evaluation-and-operators.json b/openwiki/.claims/concepts/dtl-evaluation-and-operators.json new file mode 100644 index 00000000000..94482f5b232 --- /dev/null +++ b/openwiki/.claims/concepts/dtl-evaluation-and-operators.json @@ -0,0 +1,976 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:8cceb513ef9852ef565bc765d5f346244f087492313d284eae176c7f2bc579f5", + "claims": [ + { + "id": "claim_52eaf6739d894d44898d28df7781eee7", + "statement": "DTL uses JSON function syntax to apply the same transformation to each source entity in a stream, constructing a new entity stream and permitting composable functions and dataset hops starting from the source.", + "evidence": [ + { + "resource": "repo://hub/dtl/introduction.rst#L4-L30", + "version": "repo-lines-v1:sha256:21e07d20358118d66db50e52c0146eb10ec9415905c168e1d19a85fa3194cae7:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE4MWUyYjQ4ZjRjYmYxYjg0NjJiNzM5YzcyMWVlNzQwZTA5Mjg1MWRlZDkxYzFhZTczYzg5YzVjZTljZDBiZjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBjNGU2OTNmMTliMmFlYjQ4OTBkNGQ4NzU0YmI2ZWZhMDM5YTU0YzJlZTg3OTAwZGJiMzZlMTkxMGY3Njk2YWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdiZWY2NmU2N2FlNWFkNWY5MWRlMDc4MDQ5ZGY3ZGY4ZDhkMWIyMThlZjk1MzEyYjM4NTgzZDQ0YWY3NzdmZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_49765c584a4f449e9ff85237092d6f00", + "statement": "A pipe's transform field can contain a single configuration or a chain of transforms between source and sink; a DTL transform requires rules.default as the source-entity entry point, with other named rules invoked through apply or apply-hops.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst#L7-L27", + "version": "repo-lines-v1:sha256:3a5d094a76101dadfe786faa581fb445abd37145ebac60a2ccea2e9317807775:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU5MjlkNThiNjE1YzExY2Y5MjUyZDE5MTk2MDBlNDk3OTY4YmEyOTQyY2U0MzQ3NWRmYzE3N2JhYWEzN2UxNDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQxNmMxMzJjMTFmMDZkZTMxNDllMzEyMzM5ZDU2NjhlYzhkMTViMzZkZTE3NGMxM2UwOTY2M2Q4NTAwZWY5MjIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIwNzk2NjhjYmEzYjhkNzljZjg5YTk0Y2E2ZjM5MGU2Yzg2MTIwMDRhNGUwNDE4OGViZjRkM2YyZDVjOGFlNmEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms.rst#L6-L14", + "version": "repo-lines-v1:sha256:8b604dcad1b39b3c6d9108615e5bb9bd670163f50190f233671085a57b58c155:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODQ5MmIxNjdkMTZlNjQ4ZWM5YTYwODVkZGFhODg2MTZiNWNjMDQ5ZDIwNWIyN2RkZDMwMGQ5NzE4MWRkNGI1NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTM2ZDk3ZjU3NmZmODdhMWRjMjkyNDM5YThmOGNiZjRlMTZhZDIyZmYxOGQ3MjgwOWRmNDQyOGExMmUzMDczZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWFkNTc2MTIzMTFhODE4Y2UzZDZiZjM4NWIxMmIzMmIzOTg0MDlhM2I5ZTZlYmZiYzYzZjU1ZWExZTY3OWE2NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTE5NTBlZGE4Y2MwZWYyMGU0MWJlMGM4ZDAzYTg2YmYzODc5NzJmYWQxMzllMzhlZjhiNzBlODQzMGFlMTcyYyJ9" + } + ] + }, + { + "id": "claim_94a1c3abf4354eb29093c712d1f619b8", + "statement": "DTL rule transforms execute in written order, allowing later transforms to read target properties created earlier; copy transfers selected source properties and add constructs target properties from evaluated expressions.", + "evidence": [ + { + "resource": "repo://hub/dtl/annotated-example.rst#L167-L181", + "version": "repo-lines-v1:sha256:1a5396a8597698116515dbb9a90a41f20141d895d91249766832d3be9031bc70:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZjNjdmNGJjMDEzOWM2YzYzZTI4Yzg5YjE0ZTI0ODA2OGU4NDAwYzg2MmY1YTc4YjdiZDViMWZjZTUxY2IxOGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4NjZjMzdmNjQxZTc1YjJhZDFjYzRiOGM0NzFlZGJmYjc4OGM1ODU3NDM4OGFhZTA4ZDNmMmU2YzQ5Y2RhMTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzODVmNWM3NTM2MTE4ZjM2NTgzYTg2NWE2NjRkZDNiYzlkODE0OTY1NDlhM2YzMzJiZDNjZWM3MjI1ODJkMWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY4MTg2M2QxNTU5NjcxYmU5NTk2OTg3NzRlZmRiOWJkY2U4Y2E1NjYwYzIwMTA0MThmY2IxYzg1YTZhMTNkN2YifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L21-L46", + "version": "repo-lines-v1:sha256:7e8891c17feae44678c566b23345afe5b74d674dcb57a081c6c6117ad2f9cf0e:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA4MDk4MmMwZDI4MDlkZTBiODc0YjdiZmY2NGNhZTQ2NmVlODQzMWNlNjM0MjRiOWJhMzU5YWI5YmMxMmQ5OTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRhNTM3MDU5OGExNzBkNmUwMzg2MTMyMTBhZTFjZjU2YTk3NzMxYmM5OWNlYTQ0ODY0MTIxYzliOWEwNGQ5MDEifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L291-L309", + "version": "repo-lines-v1:sha256:dbb4606b8cb97fc2f838b6cc72da7dd514d271c3e725324cdbb6d5df1971d1ba:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY3YTVkOTQ5MTRhNjc2NjRjNTg2NTJhYjEyMmU5YTNlNzZkNTkzYWNjNDQxYjRiNTVlOWYyNGM5NzY2MWQxNWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBhYTY1NzhjZTM4M2M0MTI3NjViNTRjOTZhZGM5NzNkYWRmMjIwNWJkODhmZTUwYzNjMmJkY2Q3MTdjYzY3YTcifQ" + } + ] + }, + { + "id": "claim_f6dd65b825254c2e92bf4b7dfe976bed", + "statement": "The default transform operator is distinct from the default rule entry point: it adds a target property only when that property does not already exist.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst#L23-L27", + "version": "repo-lines-v1:sha256:3827ce86a4c0614af5c827694e2ccd057b1c8c1a183ee856b7dc9aabb33e65d0:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjU5NDhlMmVkZjZlOGYyNjA5MGVmM2I3YWM3MGEwNGNiYjY1ZTkzODE1ZDY3M2EwMTNmNWExZTgzNjcxYzFlNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjA3OTY2OGNiYTNiOGQ3OWNmODlhOTRjYTZmMzkwZTZjODYxMjAwNGE0ZTA0MTg4ZWJmNGQzZjJkNWM4YWU2YSJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L424-L459", + "version": "repo-lines-v1:sha256:4f345cc12c9361592186f71952d30cb9579bc1daa2ad5bdd20a1151b72311033:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUyMDM4YmQwMzZmYjg4ZDc4ZmM5ZGNlODEyOThmNmJmNjRkYmQzODJjYTQ1YzZkZTJjMzFkMjQ3ZTJiOTc3MDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRiNTZiYmQzMmJiYjQxZjJhZjZmYmEyMzJhMDkxYzExZmE0YTFmOGJkNmIwNTk4ZmNkNGYwN2FiMmVmYjAzMGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZkNjBlY2ExMDE5MTYxZjhiMzUyMGI5MzhlNjU4ODI4M2FiZjk2M2Y2ZTk1MGQzYzg3ZGM1ZWM3MzI5YWIzMzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhlNjYyNjNlYWYwYWZjYzE0YjU0Y2Y1NzNkOWYyM2IxMWExODVjYzQ4NDNhZmE1NDcxMDgxNzI1YTljMmU1ZjQifQ" + } + ] + }, + { + "id": "claim_0fe240f06799450f87633775f4053497", + "statement": "DTL expressions return values without side effects, whereas transform functions have side effects, typically modifying the target, and have no return value.", + "evidence": [ + { + "resource": "repo://hub/data-transformation-language.rst#L27-L42", + "version": "repo-lines-v1:sha256:972861fd872f976e1d980c7010ca8afa79224e374a131dba4317c898c5f271c4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5MDQ2ZWEyZGY0ZTkwYmEyMDAxMTMyYjRlNmIxM2YwODIyYzhhMjFlMGJjM2VhYWFmZDRjMTgwNjIxMGM0N2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJmNTlkNmM2ZjA0MmY5YWE4MGQ0NDY2YmRkNGYzMDU0ZWQ4NTgxYmFjNGUwOTYyNTU2ZjNlZmJhZjQ2ZmFkYzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY2NjdlOWVkYzJlZWU1Y2Y5OTgxNmI2MzQ3Y2EwNGY1M2E2YzcyODg2YmQzM2I5NDdlOTBmZjdlODdmZjY2OTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVkYTQzZDU4MGYzMmJiN2M5ODM0NTk4ZDJhYzJmZTQyMDI4MTU4YjJiMDQ3ODY0MDI0NWI5MzdlMmJlZDY1YmEifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L6-L7", + "version": "repo-lines-v1:sha256:46c9d8971adcde31b58e0e51e1cc3bbdd2643c77fed4832f22c7a4e191ad25cc:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGY2MWE0OTVjZGJiOTI0MWVkNzY3YWE3OGQzYTYwMmEzZjRmM2Q0M2I0MjNjMWYyOTk3Njg3YzRjNmVhMGFkNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWZkMTdlY2IyNWYxOTYyNDlkNTBjMGUyZjA5ZWViNGQzODZjY2Q4NzgzMzg2NzQ1NTE3MmMxNjY2OTgzNjY5ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzU5ZGFjNTE4NzhiNzA2NzNjZmIyZGNkM2E1NmMzNjAxYmFjZWJjNzU2MjVkMzAwNTM1OWJiYzJiOTcxMDljOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjUyYTNlYjQ3OWRmZTEzMjk0ODU4ODUyYjY5MDA3YjA0YzcwNmMzYWIyYjZlMDdjNTQ4NjliZmM1ZDIxYmM2OCJ9" + } + ] + }, + { + "id": "claim_73ef2a0318524659999e7b4d2a5ef11b", + "statement": "DTL id_required defaults to true and fails on missing or non-string target IDs or invalid create/create-child arguments; when false, invalid values are ignored instead.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst#L29-L33", + "version": "repo-lines-v1:sha256:a3e79fbe316d0d702677ecafb014eb9c734b1126e3a6f1f25510a3cde738f1ef:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDRkYzdiZWUwNTk2NjNhMzNkZjM3MGY3ZWI0ODc1NTQxZGE5YzM4MWRjMDBmZTk5MDM1MTFkZTI1ZmYxNDgxNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDA5YjdjY2ExM2M0ZDFlY2RmZWJiMjQ0N2VmYjlkMzAxM2YwYjVmZjY1NTZiOGQwNDgzNTZmMmE1NTZhYjBiZSJ9" + } + ] + }, + { + "id": "claim_e7f5fad31dc940c38388b47fbc4f0ffd", + "statement": "The experimental trigger_on DTL option gates transformation by a property path and a wildcard-capable matching value, passing the entity through untransformed if the key is missing or the value does not match.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst#L35-L42", + "version": "repo-lines-v1:sha256:220178bf50836f0f3c10265631422e41f958fd6f44ad74220a90fa4051430bdf:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWUwMGEwNzU0Y2ZlZTM5ODEzNmNiM2FkYmE2NTgzOTkxMjdkZTRkNzA3YWM3YTdiYmNlMmE3NzQxMTNhMWNkZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODNiNzI0YjA4YWE2ZjE1MTFiMzNiYWZkYTc2YWIwMTBmMzAxNjRlYjJiYzc2OGU2NTkwNjU2MTliMDQ2ZTIzMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzY4ZDViZDk4ZGZhMWJlN2U0ZjQxNDE3YzFlNDFhNmY1NTZkMzgzY2E3ZDNjZjI2YzQ3NTZmYzYwZGQyZDNjOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + } + ] + }, + { + "id": "claim_93d947c0b4524da1b9f9ade08d8a8c89", + "statement": "The pipe transform side_effects configuration flag concerns changes to external systems and protects preview from inadvertent changes, rather than merely denoting DTL target-property mutation.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms.rst#L56-L59", + "version": "repo-lines-v1:sha256:169fa530aee25ddee9075084e25c959b3d7dd5586baae8948a067519970045ff:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDhlMjI5M2E5NDI0Mzc5YTdlZmU0NzJlZTMzYmY4NmI5ZDQ1M2ZlNTg1MmRlMjc1ZjhmNWQ2ZGQyMWQyY2UxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZThmNDY1NzNlZDYyOGQ5NmQyYmM5ZjViMjgzYmEwZGJkMzYyNGM5MmM5MTA3Y2RjN2E4MWJmMjA1Nzg2M2VlNyJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L6-L7", + "version": "repo-lines-v1:sha256:46c9d8971adcde31b58e0e51e1cc3bbdd2643c77fed4832f22c7a4e191ad25cc:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGY2MWE0OTVjZGJiOTI0MWVkNzY3YWE3OGQzYTYwMmEzZjRmM2Q0M2I0MjNjMWYyOTk3Njg3YzRjNmVhMGFkNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWZkMTdlY2IyNWYxOTYyNDlkNTBjMGUyZjA5ZWViNGQzODZjY2Q4NzgzMzg2NzQ1NTE3MmMxNjY2OTgzNjY5ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzU5ZGFjNTE4NzhiNzA2NzNjZmIyZGNkM2E1NmMzNjAxYmFjZWJjNzU2MjVkMzAwNTM1OWJiYzJiOTcxMDljOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjUyYTNlYjQ3OWRmZTEzMjk0ODU4ODUyYjY5MDA3YjA0YzcwNmMzYWIyYjZlMDdjNTQ4NjliZmM1ZDIxYmM2OCJ9" + } + ] + }, + { + "id": "claim_838e0517b7bc4f369fa36c3d572a38fd", + "statement": "DTL defines six built-in variables, with _S and _T forming a source/primary-target pair for each applied transform; nested apply makes each input value the nested rule's source.", + "evidence": [ + { + "resource": "repo://hub/dtl/variables.rst#L6-L41", + "version": "repo-lines-v1:sha256:ec730944b3e90fb71743cd342e80322443b9709cc527c1c1dffc7b5588a2d052:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI5NmMwMDU0YzA3ZWI3NzY2ZjU0OWU0MjAyOGJmZWYxYWYwNzI4OGVkZDEwNDgwYzNmY2FiZjQxMWRmMTA4ZjciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4NWZiMDEwNzFhOWIwYWFmYjkzNGExMmYwOWI3NThmMTEzNzgzZjI4ZGY2MjgxM2M4MjFkNmFjN2Q5Njc4Y2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5ZGY3MmFjMmVmMDRkMzQ1MWMyNzdjNzhhZTQ3Yzc0YjkxZGRkYjJlOTM4NGE2MjZiODU1OWYxNDc3ZTQ3OWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU4ZDQxZDE2ZjljYTgxZjMzZjNkMzhkYTc0NjM0ZTBjMGUyZDA2ZTk4NTQyOTIwMjMzZWI2NDZiZjYyMzI1NTQifQ" + } + ] + }, + { + "id": "claim_355f8725df814f35b24414562e64a55b", + "statement": "Inside apply, _P is the parent context dictionary containing _S, _T, and optionally a further _P, but not _R, so parent and grandparent values can be addressed explicitly.", + "evidence": [ + { + "resource": "repo://hub/dtl/variables.rst#L49-L64", + "version": "repo-lines-v1:sha256:92c331eb7deea9fe6eaaa8932a59191ea8636b386394eb6092ef627d84ef6fa5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhMzU4YjVlMGU5ZjI3Y2I4MDU2NGYyZWQ3YzgzMGZjYWNhOWQ2MGNlYTY5ZDdhYTQwMTk5ZGE0ZjM3NjZiMTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgwN2YxMTM0YjhhZTIzZmZhNzMxOGRjMTNjMDc4ZTcyYzA0Mjk2ZjY3YjI0YzFmN2U5ZWRiZjYyNTg5ZWYxY2EiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE3NTYzNjFhOTY5NjVkODUxMGE1ZDcxYmVmNDNiZGU1OGVmYzk4ODlkZjg1ODIzY2RhMGFlZjc0OTA2YjE0YTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRkMDM5NDM2ZDZkMjc5Mjg1ODM5M2QzODU5ODQzYjA4MTAzZThiODM0YzhjYTFiNzg5NjliMzcwZGI1ZjYxMTQifQ" + } + ] + }, + { + "id": "claim_43cb423f8bdd4701bcc095f49be394c1", + "statement": "DTL _R contains the source and target of the outermost root context, in practice the default rule, so nested rules can address root values independently of their immediate parent.", + "evidence": [ + { + "resource": "repo://hub/dtl/variables.rst#L68-L81", + "version": "repo-lines-v1:sha256:b634f24eb64fb2102f2811ec3023fc1a78724cac257a4a7a24d3e18a0be89266:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEzYTZkMTI4NmIwZjM5OTg2NmMyYmQ0ZTU4MTA4MmNiN2Y5Yjg2ZjQ0OTJmMmEzMTZkNWRlMjBlZjQ4MWQwYmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiMWQ4ODM2M2E2OTA0YTViMzY2M2U4NzhlNWFlZjAwZDM1NTE4ZDg0ZTJjNmMyYjc1MmMxM2E3ZjhlYWJjNDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRkMDM5NDM2ZDZkMjc5Mjg1ODM5M2QzODU5ODQzYjA4MTAzZThiODM0YzhjYTFiNzg5NjliMzcwZGI1ZjYxMTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcyM2Y4ZDdkZWRiZjQxOGJmMWUwMjU2YmI1NDhjMjQ0NjU4YTg1MDk2Njg4MTk1NTY1NDJmMjMyZTYwMjIzNGEifQ" + } + ] + }, + { + "id": "claim_3107432d022a410bb7f0b61e9e542e6d", + "statement": "HTTP endpoint sinks have no ordinary pump and flow entities on endpoint retrieval; supplied URL parameters are bound in _B for DTL transforms on the pipe.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-http.rst#L40-L42", + "version": "repo-lines-v1:sha256:bbff73f0393ad2e6d2d0eed7dcf67b00578a06a8dd488110defc56706ae44d07:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODY1NGVmZDU3OGY5MDM3ZDZiMTU3NDkwN2FmMjNlOGIzOTE2M2M2YzVmN2E3OGVjZDNlNDJhNWQ1ZTQzY2E5MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTk1ZGVlMWQ2OTY5YjAzZjM5ODY3NjJmZjA3MWU4NmE4ZDNiMDQ1ZTY0YTk0NDgzMTFiNGZhMTA5NGMxZDA1NiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTM0MGE2ZGU4YzA1MzkxZTMyYTAzZTY3NjQ2MDE2YTIzNDdlMTk2ZjQ2ODRiYWYyZGYyYjZiZjc2ZDZkN2YzMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjIyNTI4YjBmMzFlOTc3ZjJmZDc2Y2JiYjlmZTUxYjBiY2NlZTE0Y2FkNTE2ODViZTBmMjQ5NjIxOTIxNGJiYyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-http.rst#L7-L13", + "version": "repo-lines-v1:sha256:647f73623aba377b0265ef93205803f69ac18567819ba080a31ce3599698f6a7:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGIzNTFiOTc2ZWUyODkzNzZiOGM0NGFhODAwY2FiZTc5MzY4YTNmOGRkZTIzMGM0NThkNWYxZTRjMDhiNjVlMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUzYWU2YTI4OWM5Mzk3ZDgxNDkxZWVmMjk5NjA1YjBhMTY0MGYzNzg2YzczZWI2M2NkNDEwNzg0MTIwYzlmNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2M5OTBmNTQyZDM2YjU0YzRjOTcyZGFkN2I1OGM5YTc1NWRlZWU1OGE2Y2U3ZDk4NTVmYTQ1MTk0ZjI3NGUxNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWIyOGU5ZDEwYjU1Y2QxYWViZmJkNThiOTg4ZjQ3Mjc4MDhhMjZhMzQxYjc5MzNiYWE3NDA2YTU1ZWQzZTIwNCJ9" + }, + { + "resource": "repo://hub/dtl/variables.rst#L85-L91", + "version": "repo-lines-v1:sha256:0ec5d073a982d05c2d81e41181e4fcde37d1e133da30a566047c9252254e6fd9:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWVjNjAzMjlmMzA0MTExMzM5ODNkOWExYjM1NjVhMzcxNmRiYjM4MGVhZjk5YmEwM2ZhY2YyODkwOTYyYmM3NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWI0YjI3OWM3NjEzODhjYTU0MGY4YWUxZTAwMmNmYTRhZWQxMzVjYTYxNThlZTAwZGE0YTM3OTJkY2IyZWViNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzIzZjhkN2RlZGJmNDE4YmYxZTAyNTZiYjU0OGMyNDQ2NThhODUwOTY2ODgxOTU1NjU0MmYyMzJlNjAyMjM0YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDYyNzFhYTIzMjBkYTNkOWMzMDkwYmIxYzk1ODExN2FhZGM2MDg1YWMxODJhMzU0NDdmYmU2MzU1OGMzYTUzMSJ9" + } + ] + }, + { + "id": "claim_7cdd1e8dd1054e1291d41ef3c1d94d0e", + "statement": "The underscore variable denotes the current value within functions accepting functional expressions, including filter, sorted, min, max, and coalesce, rather than a universally available source alias.", + "evidence": [ + { + "resource": "repo://hub/dtl/argument-types.rst#L46-L50", + "version": "repo-lines-v1:sha256:042a69bb77375a37cbe366753d1534bf4a938eb75f34fa851147868d3d03b379:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTZlYmRlZjE4NDgyY2Q5ZWNiZDU5MTNkYTIyZjE0NDNmZjQ3NjQ3NzYzNDJmYzRjNGZhYmE3NzA4NzYyYmYwZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDdlMzQwNmUxMWM2MWEwYjQ0OTIyZGM0NGU1MDI1YjQ5N2M5YWY2ODNhNDZmODg5MTJkNmY0ZWY2ZTdmOWZmOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTFkNTY5NjZhNWM2MDQ4MDcyMDc4MTgxZmRhNjdiNDE5MzgxYzU3ZTZlNjM5OTk4Zjg0ZjQ1Y2E4MmE2MmJlZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGYzOTZlOTFhMTRmNTJjNzMzNDFjNWExZjBhNmY0YjQxNTBlNWM1MDc2N2E0NmYyNDZkOWYyMTdjNGQyYzExNSJ9" + }, + { + "resource": "repo://hub/dtl/variables.rst#L95-L105", + "version": "repo-lines-v1:sha256:5659742efaa564d44610091682f5df2e4c4dcac3fbc6bf75af9b47a01f5e9887:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhYzNhMGQ1NDY1MWMwMzEwZWZkMGExYTliYzQ4YjY5YjhmZGFlZmY1MTU2NWI1ZjhlNTU4ZjRiODcxOTZjZmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk2YzViZTI5OWM2NTlkYzUwZDliYTY5M2IxMmIzYTQ3OTIwMmJhNTFiZGVlMGI1MmUwN2FkZTI1NzQ0ZTllZGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ2MjcxYWEyMzIwZGEzZDljMzA5MGJiMWM5NTgxMTdhYWRjNjA4NWFjMTgyYTM1NDQ3ZmJlNjM1NThjM2E1MzEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_c51fa42df9594b63bfbce5b917da9392", + "statement": "apply uses a named rule from the current DTL specification and returns transformed values; additional standalone emission is the separate responsibility of create.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-dictionaries.rst#L405-L428", + "version": "repo-lines-v1:sha256:d2e5bd291a0dcd9a17e16107684eb88fc2f9ba94137815bfbf6e1454d3675951:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI5ZjE1ODk1YTMxYjk4ZDQ3ODNmOTg5NzQ4Njc1OWZkM2U3ODc2MTQ0YWJjYzIxYmMyZmE5N2Y3NjYyYTFmZWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxMjBlNGVlZjEwODE2ZTdiZmNhMGU1N2Y1N2JjZjUxMmRhNWFiYjhiMzAyZGYxZDMxMmI0ODhiMDBlZWYxMzciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU1OWFjMWQ4YTMxNjViNzFiMmZmM2M3Yjc0N2VkODM0ZmUzMmJmMTc5NmFlYWQxMDYyYTExOGU4ZDRhMDUzMjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZjNmJmMzEyMDVkOWVmZTAwMDM0MzI2MzFlODE1MTcyZTIxN2NjODBhNmZmNGNlODdkOTRiYThjMTdlZDZjYWQifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L353-L381", + "version": "repo-lines-v1:sha256:f96ead99f98986cea4a1986af271a756ec41f3bd4ebe153a5ff0e24b87f7185c:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE2NTI3MTJjYjk3NzI2OWQwNzgxYTkzNjczZThjYjBjNWJkYTM4MmVkYzA1MGZkNmVlNDE3NzAwMzQ0ZGU1Y2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJiYjZmNmI3OWE0MzA1Yjg5NzU0OTlmYzZjOTU3YzcyZDk2MmVmNDJlMjVlYTdlN2EyMTg3MDE0YTkzNzY0YWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNiZjQ2NWUzZTNmNGFlOGIyMzBkNjMxN2E4MmIxYWU0MDJhMDY0Njc5NjM1Y2FhYjgxMzcwNzc0ODJiOWI1ODQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU2YTI4OTA0MWU2NDJhOGNjZTEzMTFhZGY1ZDIxZWQzMzZmNjIyZjU2NjFiZmNhMDJkMmZkN2Q5ZDMxY2VjNTMifQ" + } + ] + }, + { + "id": "claim_19b2072c73054474928432a7a4106860", + "statement": "create emits additional entities into the DTL output pipeline, while create-child adds entities to the target's special $children property; normal validation requires string _id values.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst#L29-L33", + "version": "repo-lines-v1:sha256:a3e79fbe316d0d702677ecafb014eb9c734b1126e3a6f1f25510a3cde738f1ef:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDRkYzdiZWUwNTk2NjNhMzNkZjM3MGY3ZWI0ODc1NTQxZGE5YzM4MWRjMDBmZTk5MDM1MTFkZTI1ZmYxNDgxNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDA5YjdjY2ExM2M0ZDFlY2RmZWJiMjQ0N2VmYjlkMzAxM2YwYjVmZjY1NTZiOGQwNDgzNTZmMmE1NTZhYjBiZSJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L353-L417", + "version": "repo-lines-v1:sha256:e221127327896693d921ed860ee17f0c56b3ac27c083b28da19e2323569339f5:eyJzZWxlY3RlZExpbmVDb3VudCI6NjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE2NTI3MTJjYjk3NzI2OWQwNzgxYTkzNjczZThjYjBjNWJkYTM4MmVkYzA1MGZkNmVlNDE3NzAwMzQ0ZGU1Y2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZhMGI0MWI0ZmMwYmYzZTg2NzQ2NjllOGI4NTE4OTliMTMzOWRiNDFhOTRhZjc2YTVlZGE0ZjMyYjU4NGI5YjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNiZjQ2NWUzZTNmNGFlOGIyMzBkNjMxN2E4MmIxYWU0MDJhMDY0Njc5NjM1Y2FhYjgxMzcwNzc0ODJiOWI1ODQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImIwOWE3MGIxMDQwZWZjODU4NDIzNTVjOTVlMTU0N2JjOTc4YzlhMDliMjUwNGFjZmZkY2MxZWEyMTEyMGE1YTIifQ" + } + ] + }, + { + "id": "claim_3551b01418f246e8a7a6b1a3f14d81c2", + "statement": "The list-expression filter returns only input values whose functional predicate evaluates true, binding underscore to each individual value, rather than filtering the enclosing source entity.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-lists.rst#L149-L174", + "version": "repo-lines-v1:sha256:2209e9e146c3b4ec271305f773a6d7b0756b1cea873ae8eec78409424e3811ac:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEwMDUyNTdiYzk5N2Q1ZTVmOTE5ZTdiYTRmY2Y1ZWZjMDU1ZmYzYWM5Nzg0YmM1NzBkMjRkZDJjMzI0NDg4YzAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiNjgyNWVmM2Q4NWExNTQ0NjhjZWNmMjcwNjkwNGJmMDE4N2E1YjMzMGY0YjBhYWJhMWVhMjE1M2NmNzgzNTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE1ZDg4OTY2OTYwOTY3MTk4YTYxMGY3N2E0Mjc0MjY0OWYyMzcyZjU3Y2I3NjgyNmMwMDFiNDJlOGQ0MzEyMTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU1NDk2MDk0OGM4MWQ3ZWNjZjlmY2JkZDllYjllMDJlN2RiMTY5NzFmNTk1ODlhNDgwMTY0YzMxMGI5NmNkZjAifQ" + }, + { + "resource": "repo://hub/dtl/variables.rst#L95-L105", + "version": "repo-lines-v1:sha256:5659742efaa564d44610091682f5df2e4c4dcac3fbc6bf75af9b47a01f5e9887:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhYzNhMGQ1NDY1MWMwMzEwZWZkMGExYTliYzQ4YjY5YjhmZGFlZmY1MTU2NWI1ZjhlNTU4ZjRiODcxOTZjZmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk2YzViZTI5OWM2NTlkYzUwZDliYTY5M2IxMmIzYTQ3OTIwMmJhNTFiZGVlMGI1MmUwN2FkZTI1NzQ0ZTllZGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ2MjcxYWEyMzIwZGEzZDljMzA5MGJiMWM5NTgxMTdhYWRjNjA4NWFjMTgyYTM1NDQ3ZmJlNjM1NThjM2E1MzEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_d4301bcf5c8a4102826c0e232dd9ce90", + "statement": "The transform filter continues when its condition is true and stops further transformations when false; with no condition it stops unconditionally and suppresses the ordinary target output.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L561-L619", + "version": "repo-lines-v1:sha256:58f65b32680a0eeff993824edfec4d760a6bc6b99235f0e2a36e877ebbfc2aa4:eyJzZWxlY3RlZExpbmVDb3VudCI6NTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRlY2QxZDBiNWFhYTlmYmNiNmYxMzExN2Y5M2JmN2UzNmFhOTE1MWU2MDA0MzkwZGY4MzM1NmU4MTk3OTYzNWUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5YWIxOWZiOGI2MjA0ZmQzN2IwZTRhYmJiMzZhMzVhMTJlNTc2ZTdmMjc3NDdkYTBiNDVmZDAyNjU3NmU4M2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZkNGU4NmI4NDJmNTJjZWEyZTc2ZDdhMjc1YThkOWJjZjRjZWZkODRlODJkYWRhNzcwMGVhYjhmOWYyYTljZWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRhZTczM2JkNzkxNzBjYjk2ZTU0NDVmZjQzYmYxZjMwM2YyNzQxYzk1MjM1MDkwMzA5Y2U0NWE4OWIwNTBhNjUifQ" + } + ] + }, + { + "id": "claim_220f12821f3b441e908bf78ba40232c0", + "statement": "With a dataset sink, failed transform filters emit _filtered:true to enable incremental deletion of existing, not-already-deleted entities, and subsequent transforms must handle such entities carefully.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L585-L607", + "version": "repo-lines-v1:sha256:92ca38f544361a863f431df6a4103384851664343cb68a3ea8aa4379827422d4:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY1ZThkZGFkZjJhYzUzNWI1N2JhNTkyMTM4MjdiNTc3NDA3ZDU1MGMwNWJiMzAyMDg1YTViMDNiYTQ4NDM4YmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzMDVlMTNmOGFmZGNkYjhiYjUxMDAyZGEyMjJiNjU4N2EyYzVmN2I4YjhmMTcwNDViYTNhYmM1NDc1YmVlMDQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg0ZjMwNTg4ZGY3M2YxYjRjZjQzMDBhZGU2ZWNhZmJjOTVhMjRjMmZkMmE2MDg5ZWNmZDJmNTFlYzdmYzJkYWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU1NzRjMTE0ZmNjMGM4ZjJhNDcxN2I0MmU4Y2ZkNDdkODI3YTQ5ZTJmYzkzMGY0YWJjODg1MzgyOGRmMjIzMmIifQ" + } + ] + }, + { + "id": "claim_26e3788ab4f3487789f1eb7439ed2331", + "statement": "discard drops the target when its condition is false, or unconditionally without an argument, but does not delete an entity previously sent to the sink and is therefore unsafe for previously emitted IDs.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L514-L558", + "version": "repo-lines-v1:sha256:f84e2bc284951494f02cd900b32171a2c4085e8594eff7e32077bfd593048060:eyJzZWxlY3RlZExpbmVDb3VudCI6NDUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE0ZTljYjU4YTdhNjkwYmZmYWI1ZWMyMDY4MzExYzhkYmVlYjc1OWE2NDg0NThjY2FiY2U0MjMzNWMyZDFhYmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ5M2U0NzZjYWJlZmViYTIyNmM2Y2Q1ZWU0ZGUwYTcxMGUxYjU2YWUwOTg0N2Y1ZGJjNTY0YmFkZjc4N2I3OTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNmMTczNmViNDM2MGNhYmYzMGM2NzU4OTEzNDkzNWUxM2VkODVjYjg4NDE1NDkxYWEwMzIzN2FlZDI5OTE3YTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyMjkzZDEwMzk4NDAxM2IwYmI3OTk1MjM3ZWFlMDQwNzhjYWNiNjQwZjVmMDc4MGEyN2EzNDQ2YjFiN2ZiMmYifQ" + } + ] + }, + { + "id": "claim_44add7ebeaa64ab2a767b6e890551ec6", + "statement": "Neither filter nor discard cancels entities already emitted by create, so an output gate must precede creation if it must govern those additional entities.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L533-L537", + "version": "repo-lines-v1:sha256:ae32e7694bcd69874fcc030d7195522ace609cfbf242be668946501c376bce53:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGMxZWYwN2Q0ZWE2ZDBlOWZmMTJmMGIyYzA5ZTZmMWMyNGJhYjJlMzQzYWM3NzFiZTJmYjU2ZWU2NjJjZjkyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWUyZmVjNzgxMTFhNmFkNDNlZTYxNWRiYmQwMTQ3MzI5ZTE1MmQzZjAyNzRmNmZjMmJjMzdhOWM2YTQyNDIzZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTE1M2NmZjUzMmY2ZjUxNGRjMTdkMmY5ZTRhYWZlNWY2ZDhmNTlkOGVkYzQ3MWVmNjg3YmI3YjU5MjVhOGUyYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTFmMWU5YWZhZmZkYWU2MWY3OTg0ZmUxMmMxMDk1YmJjYTVkNzY0ZDI5M2Y0MWIyNGY3NGRjOTg1MDBkNDNhZiJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L576-L580", + "version": "repo-lines-v1:sha256:99bc1cfe8c8efe0d624cfe2d09a43c34634eea29c09ec18a2e5cc6088ad66239:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGMxZWYwN2Q0ZWE2ZDBlOWZmMTJmMGIyYzA5ZTZmMWMyNGJhYjJlMzQzYWM3NzFiZTJmYjU2ZWU2NjJjZjkyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDk0ODA2ZTY1ZTJlZWYwZjQxMDVkYTU1MmY0Nzc4NzBjNzM0MWExYWFkZGZjOGFmNDNhN2IwOTk4MDhjNTdmOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjNiZTM5NDE0NzVmMWRmNGU4MTZlZmUxY2NlYWQ0ZWZiYTFiOWRhNTlhZGNiMjMyN2ZhMmJkNmI5MGYxMzk2ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWRlZGEwZDM1NGM5ODc0MWEyZGZkMTc5ZjJlZjI4MjVhZmJmN2JlMDdjZGMwNzQ0YTdiMzVhMGJmNzc1YmJiNCJ9" + } + ] + }, + { + "id": "claim_4428940ddb4344cd845252db13d06040", + "statement": "Property-path strings start from a variable and traverse only its entity and nested values, potentially yielding collections; a trailing dot such as _S., _T., or _. addresses the whole variable value.", + "evidence": [ + { + "resource": "repo://hub/dtl/paths.rst#L8-L17", + "version": "repo-lines-v1:sha256:8cc43987d211dff3ef8c4f7f6b4f1a48b2d13f0552e573a4c5c6966c5c479c1b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwMDMwYjI1NThkZjQyYTNhNjhhNmYyMjA2MTk0Y2UxMWJjMWJlZmQ4MDg4ZGVlZWNhODEzNmY4MTZhMGU4ODIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMxZWYwYmQzMzc3Y2MyMGQ3OTc5MzA1ZTAzZmEyYmYyOTI1ZmJmMjYyZDhjNjc3MjIzZWMwMTczMjQxZjA4NzIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA1Njc5Mzc2MjAzODAzNzIyYzRlNGM4OWU3Zjc5NzNiNTM3ZTAxYzk2ZWRmOTUyOTllMTNlN2IzMjI0MTY0N2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJjNjYxNDQ0Yzg0NGRjZDZlNTlkYTNjYWMyZjg2MTU1MjE5OWI0MDIyMTRhNWEyMzEyOTY5YWY1YzNhYWY3YTAifQ" + } + ] + }, + { + "id": "claim_d3e171ec40954b07bd7d680f5f119c2f", + "statement": "DTL path elements containing periods can be single-quoted, with doubled single quotes escaping an apostrophe, so _S.foo.'john.doe''s'.bar addresses the literal key john.doe's.", + "evidence": [ + { + "resource": "repo://hub/dtl/paths.rst#L19-L20", + "version": "repo-lines-v1:sha256:79b463c340ea7567a62111dc0c2d6d4eef8bd9a78703452f9217a40de56bf4ee:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGVkYzVmZmMyY2YyMGY3Yzg1OTdiYjNiNmU4ZjVkMTc1YzcwODM3ZGE3ZWVmODkxNDIxZDQzYWNmNGNlOWMyMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjViYWE2MGE5OTc5NTg5YjY2NWQ0NGI1ODNjMThkMzFjMDkyNTE1OTMzMzE1MjhiMWJhYmZhNmY2ZjA5ZTgwNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjUzZjllMDJjZjQzNWU3NzlkMWRhMGUwZmVkNjQ3MTczOWQwYTVmZmJiMjZjY2E3YzY3OTU4ODE2MzUwOGJhMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2EzNTdhMmJmNDBmOWE0MzdhY2MxOTMyMDgwZTc2NWIzYjU1Yjg3MjAzZDkxNjI4NzkxMDUzMGY0NDU4MjQ0ZSJ9" + } + ] + }, + { + "id": "claim_f64b5e7102404cbb93536c61f5516958", + "statement": "The explicit path function evaluates its VALUES input before traversal and accepts a path expression resolving to literal property-name strings; non-string steps are ignored, missing properties yield null, and an empty path returns the input value.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-dictionaries.rst#L317-L373", + "version": "repo-lines-v1:sha256:92eee807e0bf77fe6976c7b7f2cdb5de0d8b049b3a79de6c8ac907d131159546:eyJzZWxlY3RlZExpbmVDb3VudCI6NTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZiNWJlYWEyMWRkYTJmNTI0YWE1ODFkZjE2ODA5YzVlNjcxNzU5MWQ1ZmQ3NjQ3MWRhOWNmYjY4NGVlOTg0YjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAwY2M3MDY4ODI5MjFlOTBiNWU4YjMzZmM5NTJhZGZiYmQ3MjhlYzAyZGFmMDVmM2YwNDU2YjE0MDJmYzIzYjEifQ" + }, + { + "resource": "repo://hub/dtl/paths.rst#L22-L28", + "version": "repo-lines-v1:sha256:6b1b2c7539ce9e71255d57ca508e82367ff3389cd4892de2ce0727dc0f1d0c04:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjkzZTFhYzlhMTU5N2MwMmU2MTk4MTljNmQ3YjA2NWZjODc3YmQ0N2I1ZmY2ZmRlYjBiZmQzYzdlOWZmYzdmYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmNkMmNjMDYzM2FiMmExMjNhZGYzMzYyYmZmMDllY2U5MmFkZGVlYmM3YmM0MjI2NzQ0N2IzZWQ2Y2U5NWY5ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODQwMTMwMDZiMzdlMjhhMjhiY2NiNjlmMmYzODczMTNmOTYzOTljYmY4YmFhZWM5ZTM0NjNiMWMwNTcyZjJjYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTdiMzM4NDhiZjc3N2ZhYjgyYmY2YmY4YTY2NDgzZTRjNTMwMjI1ZTk3ZDgxYzU5MTc3MTIzODBjMTIzNWQ5YiJ9" + } + ] + }, + { + "id": "claim_a931f03b1d5a44679082ad90d1d44bdc", + "statement": "Hops join eligibility requires eq arguments each referencing exactly one unique dataset alias and connecting different datasets; all declared aliases must be joined and reachable from the source or compilation fails.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L93-L97", + "version": "repo-lines-v1:sha256:e130d32e1a7a12d84d8e07e1dd2026da0b52359c9b253d54bd2e86357d51be67:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTAxZDg0NjU3YjVkZmQ4NmVmNWE5OGUzMmRiYmY0NGUzMGY5ZjFmMjU0MDVkNWE5ZDcxM2Y2NDM2NzBiYzVhMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTFlNDI0NWNlYWMxMTdmMDcyZmU2MmYxNTdiODdiZTBjNzAwMDcwMjkzNjg3MjlkNjYwMDNhNWVjYjBkNGYzMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGEzMmNiNzcyNTg3MjNhNzIxNjBkMmEyNjg4Y2I2NTRiYTdkMWVkOTExOWU1ZjIyZTNjODRiMzA0YWE1ODBmMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGRjYjk3YWQyZDBkNWIxZjU4ZWFiY2M4MTRhNDEwYmRjZjAwM2IwN2NiMjk1NjJiNTk0YjZhZGNjNTI0YWU5ZiJ9" + }, + { + "resource": "repo://hub/dtl/joins.rst#L52-L56", + "version": "repo-lines-v1:sha256:41cd83504175b516234df4adfc8a5cbe33699a75c3f58b632edf1107c6c7a5a6:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWM3YjYyMWIzZWQ0MTZkNjBhY2FmMjNjMTgwODdiYjY3MzM5OTQ5N2FmN2YzOWZjZDBkMjYyNDZlZGM1ZDg2MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDcxOTYxZjRiMDhkNDg4OGYwYWNlZGI4YjJkNTVhMjZkODI1NTIxZjlmMDMyNjA4MDIyNGFhN2NhZGUxMjYwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/dtl/paths.rst#L50-L53", + "version": "repo-lines-v1:sha256:a2d70a3a0c60aa8892fad9bd9540e8aa3ae420e8f511d9563fed7d5a53e44f32:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTM3OTA2MDY1ODdiMzNjN2JjZWQ5Yjc3ZTFiZTg5NzAwMTY3NzEyOGMxMjZiODBjOWU2YzJhNDg0NzUyMWJmMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDBjNGUwNzY2MjYwZWI5ZTczNWZlY2ZjZGNiZWY1OWEwZDcyMzRjMDczOWU3MWU2MTJkNjkxYzY2MjVjNmM3NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjVmMTc0OWI4NDc3NjAzNWFmNzRhMGJiMmEwZTljNThhMDM5M2RkNzA4MzIxZGVkYWRmOTZkY2RmNGQxMzBmYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_cef90242e262458b8e54ea3e894f4fe6", + "statement": "Hops specifications declare dataset IDs with aliases, combine a list of where expressions with and, and return values from the last dataset alias by default.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L21-L31", + "version": "repo-lines-v1:sha256:a1120be182ba6b0e6260495033b1073d5a9f6ac9f462bff4a6798ec23bcf04fe:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVjNmVjZDUyMjkwOWJiOWNiOTViZWQ5NmNmMDEwNjM4Yzk5ZDY2NTNhMDZmODg3NmYzOTVmYTUwYTJjMDVjZDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVkYmU3ZTVlNDg0M2RhOGFmZGYyY2I2NGMxNTRmNGYyZDMxODExOWNjYjBmOTlmMTUwYWEwOGVjYjczMDY2YTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhYTgwMWY3NDhlMDU4MzFjZjNhNzlmMWQyMWI5MDk4M2U5MWExNDVkY2Q0NThmNDE0NzFkN2FlZDU2ZTI0ODYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlmOGIwNGZkMTk1YjhhZjI0YmIwMzQ1MjIyZWNhZDBlMWY3MzA3NmI2MmNiOGU3OWFiMTFkNWU4NDA3ZmQwYzAifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L53-L63", + "version": "repo-lines-v1:sha256:821dc65b7cf7c65e2e904c2297158642e27952f7d44834b8ab7a94e1ad74de39:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlYzA2ZWRmMDI2MWMxZTdmNjZlZGU3MjkwMWNmZTA3ZGI3YmRlYzZlODZhYzJmZWZiYjk3NzM5OTIyZWY5M2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE5Nzg4OTk5OGM1YWJmYmMyNjU1OGE4MjU1OGQzYzhkY2NhN2M5YmI4MWQ5MDc4OGE5YjgyM2ViNzQyMDM1NmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMmViYWJmOTAyMGFmNWVlMzUwYjYxOGU1ODg2ODBhMjhkMzY4MjM3N2RjOWQ3Y2M0MTQxNDgxYjU3OTAxNTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJiODlhMDU3OWYzMjUxNjNhNWQ0OTJlYzQxYWI5ZmYwM2Q3YzFhOTc0OTAxYWQ0Y2YzMzI3YTBjNmU5Mzk5NWYifQ" + } + ] + }, + { + "id": "claim_b16aff4b721743179583cf76fec9e952", + "statement": "Join eq succeeds on overlapping values, including scalar/list combinations, whereas ordinary eq coerces arguments to lists and compares exactly, including ordering; intersects is the non-join overlap comparison.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-comparisons.rst#L16-L39", + "version": "repo-lines-v1:sha256:427d692ab9b13e0b2e0cc8bd9445f5fadfbadab6ab61a23e35d54881d696cff2:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4OTVjNTBiMmJiZTBjYjk4NGZiY2ZiODVjN2U5ZmVlZjg2NzNiOWI4NGRlMDAxNDRmNWRjYTQyMGU0NDY4MGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxODEzZTNiMWNiNjFjZTI2ZDUzYWQxMmEzYmQ2ZTBhZjgwY2FiNmNmYWRiZmFkNDc3ZDZkN2NhYjdiMjJhYWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY0YTc4YWQ1YzBlMzRjZjllMDMxZDgyNGI2ODZlYjhkMWIxZjYyOGQyZGVkNmFmMzYyZTQ2NTZjM2YwZGM5ZjkifQ" + }, + { + "resource": "repo://hub/dtl/joins.rst#L25-L44", + "version": "repo-lines-v1:sha256:6f139fdf39330e735bbb4edcf11e2735840db3ef0d45da25cdac7139e29249ca:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwOTlhYThmMTYyMGFlNjM2OWM5YTMzY2Y5YzMzODAwNWViNWY4YmQwZThlODljYTA0ODVjMTIxOTc2NjE2YmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg3Zjc2MTQyNDQxMDE4NTI2MWZiNDQyYTkyMGEwZWM4ZjQ0Nzc4MDIzMDk3ODY0NDI0NjZkZDRmYWNlODFjMjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI5ZGMyMGIxN2ViMzljMjVmZmMxMTc0NmJkYzY5NjE2ZjdlMDEzMzg3ZjhlZmRhMDg3ZmZmNjYwOTUyYTgwMjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg0NjdiODcyODcyZDNhYTAxMzZlZjRhN2M5ZjgyMmYyOTlhMmI0NDQ0ZTE0YzU2MjkyNDE1ZmViM2ZhOGRmYmEifQ" + } + ] + }, + { + "id": "claim_0a49d50541474c3f85bfe5e89d795295", + "statement": "Null values and deleted entities are not indexed and therefore are not traversed by DTL joins.", + "evidence": [ + { + "resource": "repo://hub/dtl/joins.rst#L48-L50", + "version": "repo-lines-v1:sha256:b022b18aff150ebec1adf63ef873e2d322e45b9a6907b63356976b5a7539a525:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2E1NTc0YTUyYzM5Njg3YzI0YTBhNzk1ODhhZTUyOWFkYzcwZDUyNTUwMWY2ZTU3ZTM1NGY0NDE5NDlkNGUxOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjNiNzI5MzJjZjFjNzRhZDI0NGU2NDFkYmVlNTY3ZDZhN2E3NGMxNzM3YmYzMmMwODM2NWFiYTRjN2Y0NjcxNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODQ2N2I4NzI4NzJkM2FhMDEzNmVmNGE3YzlmODIyZjI5OWEyYjQ0NDRlMTRjNTYyOTI0MTVmZWIzZmE4ZGZiYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2JlYWJiMjFhYTBlOGRkNDU0ZjkyN2ZhMjE0MGZlNDM4YmU2OTI0ZDA4NDViZmFhOTNkZGUzMTg4YWU5NjQ2NCJ9" + } + ] + }, + { + "id": "claim_967ff836fd2f43f688983e05d64ff759", + "statement": "Hops results have deterministic ordering for identical input entities based on _id, but require an explicit sorted function to obtain a chosen business-property ordering.", + "evidence": [ + { + "resource": "repo://hub/dtl/annotated-example.rst#L183-L186", + "version": "repo-lines-v1:sha256:0f9180295637e5f1901b52cd68780c50bdcd4d8061dca61614b5ca6e14cf1193:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWQ1N2RjNGMyNGM1YTlhN2VkYmJlNTUwOTViNzNiODgxNGQ4OTkwMDczOWJkYTQwZTVhNjk2ZjA3YmFmYmY2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk4NTcwZDIzMzY0YzEzMjVjMTkyYjYyMzVlNDk2ZmYxOGE1NWY5OWM2ZWUyZjQyNGUzNmZlN2NjOTY1Y2JlMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTBlZWQ0YTBkNDNlNDZlNDlkZWJjZDIwYWQzYmI0ZDE2ZGJiZDI2NDdiMGE0MTU3MWJlYzNkYTk3YjJiODExNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDYxMTgyZWQwMzRlNmJmZjIxZDY5Nzk3N2MwMGIxY2RjMDk4YzIwMTJhNzcxOGQ0YmMwNjMwNDNkNjExZWM4YiJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L104-L108", + "version": "repo-lines-v1:sha256:d0e6d02c03dd48cf6313627a2d23575ac90829cf384a6727b40368b22a7b3ee7:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGJlM2Y0YjNmMDRiMWVkNTdlOTJhNTIxZGQ4ZDkyOWVlNDAzZDNkODExN2I1OTc3OTUyOTg4ZWY1ZTIwN2Q0ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjgyYjFhNTY2YTM4ZWU5OTA0ZGVmNGFjZGRiNDdiNThkNWFmOTg0YWE3YzM2ZDg4ZTE3Y2YxYTBhYzEzY2Y1YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTAzMWI2MDdmOTg3YjhmMzBkZDNlNmJkYzJkMDQwYTU5NzRlYmFhNzE3MDljMGI2ZWFmZDc1NWU1ZTRlNDEwMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGEyODQ0ODcyOGQxZDkyZGJmMzViMDg2NDAyYWI5YTVhYWIxMzI2ZDQ2ZDMxNmI2MWU5MDA1NjUwYjQ4YjdmMiJ9" + } + ] + }, + { + "id": "claim_e9bfa0ae2493403bab5f3cb4d7b03873", + "statement": "apply-hops runs hops and then transforms the results with a named rule; calling apply on a rule containing hops or apply-hops is prohibited so dependency tracking can work.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-dictionaries.rst#L430-L469", + "version": "repo-lines-v1:sha256:97628644f74800095a37cc64893c4da761cb4969f7acc12c94bbdac5eb7c1deb:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhMDg3MmRiZDE1OTkyMTA5YTI2NjM5ZGFhMTAyYTMyMTk4MzFkMzdkYzg2MzA2Njg3YzYwYzk5NTRjNTFmNGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkZDM5ZTQ1NTZhZmUzZmUwYjJhYmEzYzFjMGMwMzEzMGZmN2JkMmY3NjIzMjVjMDk1YjAxNmQzZjAxODhhNGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZhOTkwOWFhZjU2N2U1MGQ4NGUyZjdkYjgwMmJjOWYxMDZkY2YxOGIxOWRhYmNhNjExM2RkYjg3ZWQzZGVmZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_438a483a77de48c38f07d7f29806c229", + "statement": "lookup-entity requires its referenced dataset to be populated, returns null for an absent entity, and does not support dependency tracking or automatically refresh output when the looked-up entity changes.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L173-L200", + "version": "repo-lines-v1:sha256:d14bab3df9a4c3366addbea9bfac10fcb4822ca568300ac92af3a2fa06ef7862:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA4MzBmMDBmMzVmYWUzOGY5OTdiNDc0NDFlNDE1ZTAyODMzMzc5ZDU2N2ZhNmFhODg0MzRiYjQ4ZGYzYzNkZTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI1Y2E1ZjVlYTNhYTFhMGE4MDViOGFiZTVjM2Y5YjExYjNkYmYwY2FhYTY0NDZkOTZlOTA2NWU0OWFiMzg1NjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ4NWRlYWZhZDIyNmY1YjA3OTkzMmNiODZmYTE3YWNmNDFkZGY1OGY2ZjE0NTRjMDIwNzlmMjFjMDM1YjRhMjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_73465358aceb49d196c5301e5b81f8a7", + "statement": "DTL argument tables distinguish logical argument names, types, and cardinalities; value expressions can yield null/scalars/lists, wildcard literals support * and ?, and transforms arguments may be single transforms or lists.", + "evidence": [ + { + "resource": "repo://hub/dtl/argument-types.rst#L4-L72", + "version": "repo-lines-v1:sha256:0f1af001c7c3c8fc7a3e58e02331e7a078eb3e494d5e4286cd747cd983fb7466:eyJzZWxlY3RlZExpbmVDb3VudCI6NjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNjMmJkMDNmZmFhNTExYjc1NGNmZDAwMGU0MWIwZTJhMGRjYjgzYzQwZmY2MzBkODQ2NmViNTkyMDJhOGRjMDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4Mjc0M2RjMzdhZDk3MjM1NDZhNWM1NDI3YjUwNjFjNzQ1OWUyMDNjOTFjNmExNDNhMThmNzE2NzM4MzZjOWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUwZTIxMTgzMzAwZmY0NjI1MmRiODU4YmI3ODk2Nzc4MjA3MTY1MzcyYTFjMzRiYmU4ZWU0OTg1ZDcwNWU3OTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_8327d2e0957a49c39a1de923d1deb6b2", + "statement": "The expression conditional if returns a branch value, while transform if applies branch transforms, so identical operator spelling does not imply interchangeable branch argument types.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-conditionals.rst#L74-L97", + "version": "repo-lines-v1:sha256:1ac7787c4a6163f10c4e19bde88c6119244416df4fd42d4d76cfacb58e07b578:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4ZjM4M2U0NGMzMjQwMGZmY2FiMTRiM2I3ZWQyNWYyMDNmMjJhYTY3MGM2NWFhMzdjZGI3NDBhOGJiOGFjYzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg3ZmI2N2UzMDAyODQ5NmRhNjY2OTdiOWM5M2FkZWQyYWJjNGNkY2IzN2VhMWYwYWQ5ZDQ2ZWIxZGUxMDA4NGYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ0OTlhMGFhMTk2NjNlYWI5NDc1NzgyZWJhN2UzMzQxYWJjZjNmZGNhNzRlN2EzZWM4ZmMyZWMyZGEzMmQxOTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L622-L647", + "version": "repo-lines-v1:sha256:08ad4372b95c28788d4c16f229e097384f1d2267f84300c618ce7fdc2f73b901:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMDI2YTk3YjMzYzA3NDU0MzZlYzZjZmRiMDliMTk0ZWY4NzhlNmYxN2RjNTczZGQzZjVlMmFmZTQ5OGIyYmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI1MGU2MzRjYzE5N2Q0MjU5ZGM1M2M4NmUwMDI0MDJlMTkwY2FkYzZjNzBiNzhlYTEyYmFhYzU3NDZkZmY3MmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFjOTQ5YzIzMGZjNDgxOTNlYTY3NDNhMWVkNTFmNWIyNDY2M2JkZGMxMjIxNzA2ZWFhYjJjYWU2OGQyNmY4MGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhkYmJlZTA0YmQ5MDg0YWFjYTM5YTQ1OWJiMzcwNjhhOGU4NTEyMDM4YjNhNzQ2MjUxMGM5MzUxMTc0M2Q1MTIifQ" + } + ] + }, + { + "id": "claim_f79316c43426451fa1703c3960f465f7", + "statement": "DTL boolean-expression truthiness treats only false, null, and the empty list as false; all other values, including zero and the empty string, evaluate true.", + "evidence": [ + { + "resource": "repo://hub/dtl/argument-types.rst#L31-L35", + "version": "repo-lines-v1:sha256:d2758ac9762dc14a5d238af475bb1055123727c190f16beaa5250e4b25e4af89:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWIyODVhZTM1OThkYzkwNDA4YzRhMzg5MDUxNjI0MGMxOTk1NzFmNDYzODgyNTI1ZTVjMDhjZmFiYzhiZDVkMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODQyNjJlYmQ2YTEyZjRmNjExMWMyMjI2MmEwYWYxMTliOGRkNTUxMGU2NmQyMzM3ZDFjYTIwNzc0NjZkNGJiNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNWI2MDQ3MDc2ZjUyMDI4NjkzZDcxMjIxMTQzYjVkYWQ1YzIzNTAxNmIwYTM4NWRhMTZiMDk2OWM2MWFlNGEwZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGM5ZTA0YzlkZTIyM2U3OWI1NTVjZjJiYTRmZWQ0NTBiMzgzOTFkMDkyY2U2ZWFiNGRkYjQ0NDZhYmI3ZGM0OSJ9" + } + ] + }, + { + "id": "claim_aa74097561484bf49a1b0e598a7342ae", + "statement": "literal returns its argument unevaluated, allowing variable-looking strings and function-looking arrays to be returned as data rather than interpreted as DTL.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-misc.rst#L100-L126", + "version": "repo-lines-v1:sha256:3239da54cdea9e74abdbc2f6cc2c97b2319daa949ea45824d5f58bc9d88c9a6a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyYzc3NmUwMmY0MTEzY2YyZGEzOTZhMWUwMTU0ODg3YzcwYWRmN2FiZTI1MWJhNjRmOTUyMmZmMmQ2NGRjNzAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1ZDUwMzBhZTg0Njk5MzBiZGQ3MDg4ZGJmNWUxZGI3ZDllNTc2MTgzNjk1N2Q2ODljNjg1MjZkMTA0ODZhMDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjEzOTUyZmE0ZWRjZDMwMGJhNzI4MGQ2MmUyM2E3OWFlMzI5ZjJlN2Q4ZjFhZjRjYzViOTQ5NzkyZmQ5MGZhZjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk3Mjc4OGMxODcwZGZjZTIxN2VkYTcwZWFhMDY1YjAzZjhiMjhiZDlkODJkZDY5MThmZjMzZGRkMjA1ZjEyMGEifQ" + } + ] + }, + { + "id": "claim_02cdb8ada768432db3f1165e58c7ae51", + "statement": "list constructs a collection preserving nested values, whereas combine combines its arguments into a single list and treats null as an empty list.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-lists.rst#L4-L37", + "version": "repo-lines-v1:sha256:e0c2d80e05123cf7fe5c8540129bdd695998671d88ec6144566815678bb21146:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhM2YzNDc5NGYxN2ExNGVjODZkZWFhYWFlMzBhZDkzNGYwMTkwYjdiZmNhYzNkM2Y4MjNkNTBiOGE1NzJiNzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU0MjQ0ZDFlOTM3ZWU1NzcxOThmYzk0NDQ4ODg3NWNjYTk4ZTlkYTdhOTgwYzRhYjI2YjY1MGE2MTMzMWNkNjQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE3ZGU1YWY1NjMzMGE5ZWZlN2JlYzFhZGRmYzAzOTU3ODJmYmVlZDhiMDQzNDU4MGIzZDY4ZWIzNzAxN2RlMWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM0MTYzYmVlMDk4Njc5NWUxMTcyNTM4YmU0N2Q0MDhkOGFmYTEzODU2MmY2ZjIxZWI1ZDIzZTcyNmQ2M2JkNDIifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-lists.rst#L520-L546", + "version": "repo-lines-v1:sha256:205538107508f59e576339bceaa6ca13cf59ee424afd6b0cc71dc5b3214f6cc5:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI1NmU1ZGRjOGU0ZTM5MGUzMWE2YjJjYjQ4NzA2ZTdkNjZkYWI0OGM4NjAwMmE1ZmZlNDhmY2Y0MGIzMzk3YTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzZjA5YTVlYTQ2NDhlZDdlOGMwMjE4YjYxZjAxZmRhODJlYjVkOGRiYTgyYTFhMjdhZWJlNDA5MGM4MDY4M2MiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY1Mjk3NDU4YjI2OGZlNGVlN2Y1MjE0NDE0NDg2NWIzYzI3ODBhZTBkYzJjNTQ2MTBiYzQzMzRiZjY3OWM2MDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI1YWIyOTQwNTE0OGNhZTg2ZGY2ZTYzM2JlM2NkNDkwMTBjNDdkZDFkMzc3OTE0YzhlNDdmMjFjZTY4YWM5NmYifQ" + } + ] + }, + { + "id": "claim_da4b0a62eae0479bbe16b71f2ccee552", + "statement": "flatten constructs a new list by flattening input one level, not recursively.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-lists.rst#L206-L231", + "version": "repo-lines-v1:sha256:770d6428da959150a326ffad2a6478e28722be52b0ae1bd7b2ee48565b2115a7:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZlYzM1ZDJkMDllYjFjN2M4ZGNjYmNjMTQ2ZjJhMjZhZGY4MmI5OTA5YWJmYjEzYTlkY2Y0OTg0NjU2NWNjODMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE2NjRiZDA2OGUyMDgxZjU3ZWZhYTI2NTUyNDYyMjJmZTM3YjhmYzExODczYjg4YmE4ZTVkZmNkOGVmMWVhNmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI4ODYyZjgzZTVmMzNjZDVmM2MzZjZlNTQ4OWI0OTVlNTM3YjBlNGZlYzEyYzU5MmY5MWRhMDQzNDJiNTU0MzYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImIyMWE2N2ZmZDZhMGVhYjg1ZDI5MjE0ZWFhY2NkYTdhOTM2M2YyM2JhMmViMWRkZGYyMDViZjc1MjM3OTdhY2MifQ" + } + ] + }, + { + "id": "claim_115f8c5759e94518ae380642f579de0e", + "statement": "count returns the element count, counting a scalar as one and null as zero; first returns a scalar unchanged and returns null for an empty sequence.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-lists.rst#L176-L204", + "version": "repo-lines-v1:sha256:7f8f87ebb193f1ccc078ee00b0082b3aaa4eedd1fee6e6a88e539d9f9c622acf:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhNWZjOTg5YTJkZGM0MzVlMWIzNTVhOTg5ZjQzYjZmMGRiZjgxNDNhNzMwYTkxY2JhYzQ5NzZiZmMzOTFhNWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVlOTNmNjQ5YWNjOTQyMTViNzcxZmNlZWU2ZGU0YTZlYzBmYjMzNGQ3ZmEwNzMyNTA0YWY0MmRiMWIyYzUzMjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRiNTAxMTc1MTI0Y2ZhNzcxYmYyOTY2NzA5MzQ0ZTZjOTJkZTIwZDBiMjUyNDkxNzViMmIwYTgwODcwYjZjZmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM2MmFkNjYxYTRkNzk4ZGQ2ZWU4MGViZTc4MTZiYjNmNjA3OWZjMTNjMTY3YjFlYzNlMTE5MmFlODk5ZDk4YTAifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-lists.rst#L39-L65", + "version": "repo-lines-v1:sha256:c778eb4b08e2a1cda9bc9b5141ddc28e6666d20c51cd6ad293f9cac158376590:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjljMWZhOWMyZmVmYTg4MzhiZTMxNWY2OTI4ZmJiZmRmYjE1NGEyZjkxOTU1ZDk5MjYzOGE0ZDljNDA3YWYyMzgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMWNmOWEzNWRlZDE1MWVlM2JhMjk4MzUzOGRiZWVlYWIzOWE3Nzg0ZDlmNTRkNmRkOGNlM2IwZDZiZDM1NTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdmN2ZhNWE1MTVjYzAxMDk1NmE2ZTYxMTc3OWQ4M2QxNGFjMTAzNTFiY2FkZWI4MGUzYTljODU2NWRmM2E5NDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM2N2U3YWQwN2VkNGZjOTU1MWU0ZjUzOTk5OGNlODQxZThlZWQ2ZWJlYWQwYmUwMjZhOTE0NDFmMGMwMjE5MzcifQ" + } + ] + }, + { + "id": "claim_4aab1767f6ff44e5a1bd0a1afb734284", + "statement": "Named plus, minus, multiply, divide, mod, and pow are map-style arithmetic, while symbolic equivalents use natural operand order and the first value of list arguments, producing null for null operands; symbolic division by zero also yields null.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-math.rst#L171-L194", + "version": "repo-lines-v1:sha256:1518a744e5936cd4b87697f2f37c6b91ea29c9602b6d733f8710d71457804cea:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwYzdhODdkNjllODE2ZTc4NDBhMzE5OWM1YjI0YTMwNTI5NzA4ODU4ZGI2NTQ0NmEzYjI0YTVhNDVjNjA2NDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZmZWIxM2RiNjAwMjg5NTU3NThjOGY3MGQ1OWM1YWRkZTFhYzFmZTg2MDlmZDBmZWNiNzM2OGI5MjRiZjEzMDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU1ZTU3OWJkZTgwMzFjYzIzY2UyZTE4YTdmYmQ2YzVmMzVkNzVmNWZiODEzYjNhYzRmYzA5ZDQzNjBlNDA3ZDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdhMTIxZjAzZGMwYjA1MDIyYWIwMGRkMTc4ZDdhZmZhYTI4MTI3ZjAxNjRiZDI2ZTk0YTcyM2ZhN2UxN2RiMzQifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-math.rst#L4-L8", + "version": "repo-lines-v1:sha256:b8ac6d609a415c6a35a5dbda36f18a2cfe740f07947e25896e8d22481650fd7b:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTkyZWM5MTAwY2Y3MTQxNzQ5YWU1OWMxNDZjZGE4MDJjZGQ1ZjQxOTI5OTBhZjgzZGNhMTliNjMyOGVlNTI1OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDZiYmRiNTRmMTY3MzA2N2Y4NzkyZGE0NzMxN2E4YzczNmVmYWUzM2M1MWY3N2FhOWJjYzc5N2E0MzViZjkwYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmZkOTNlMjU2YzQxYWU5MDc0YjE1NzU4MzBhM2EwMDM4ZTk4YTk4ZDY4MTJlMjdmNDE1NmUzMmUxZmNiYmIwMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWYxYzhlNjRlMzY3ZGZhN2ExYjU0MzIyMjRlODRkMGU2MWJkNzZmMzg0MGI1N2E2MGE2YzU2YzhkYTFlZmNjYyJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-math.rst#L438-L462", + "version": "repo-lines-v1:sha256:20ba75b056d58ee1a3d405e2483effcf2f0085d304b8be57c169df546926fac2:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzMGE4MzkzNzc4ZWY2Y2M4NTE3NzIxZWNhOGY3NDQ1M2RkODdlYTdiMGM2ZmUzNzU5ZWRhODhlZTBlMmM2OGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZmZWIxM2RiNjAwMjg5NTU3NThjOGY3MGQ1OWM1YWRkZTFhYzFmZTg2MDlmZDBmZWNiNzM2OGI5MjRiZjEzMDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0MjA1NzY0ZjJjOWEyODZmZGE5ZTFlYWM0NTRlYWI0MGE4ZjEyNjY2NzU1NWM5YWViZWFiMjY5YjYyOTUyNmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQwN2JkZTJhMWQzN2U5YzhiOGQzODI0NWNlMjc5ZWZlYzFmN2FjNDAzMzI4Y2QwOTNhY2ZmMWU1ZDkzMTk1MzUifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-math.rst#L65-L100", + "version": "repo-lines-v1:sha256:3c813144dcea85048883270f6862ac1a4affb0cd400c0f17d3328ede56986b5c:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE3MTE4NTk2ZGEzYTY3NTY3Y2NhNjhmMTU0YzkwZGZhNTg2ODNhZjgxY2Y4OTRiMThkNGJjNGNiMjIwZDMxMjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTNkMGNlODA5ZmQyZDRiM2VkNzU2ZTVjOThlOGYzNjgyZWJlYmNlYWZhN2JjMTFhZDhiYjFkZjFjZWMxNGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0MjA1NzY0ZjJjOWEyODZmZGE5ZTFlYWM0NTRlYWI0MGE4ZjEyNjY2NzU1NWM5YWViZWFiMjY5YjYyOTUyNmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ3ZTE2NDUzZTQ0MDI1ZWRiYmY5MGZiNjU5NDA0OGI1MTgxNzkyZDBmYjU3ZTZiYTllMjgyYmMwMmI4MjYwZWEifQ" + } + ] + }, + { + "id": "claim_e9ac01ff53344021a3f347986fb7cd7c", + "statement": "Ordered DTL comparisons gt, gte, lt, and lte compare only the first value returned by each argument, rather than validating every list item.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-comparisons.rst#L41-L127", + "version": "repo-lines-v1:sha256:de4253700acdc7f3f63fa4ccb6da777b8b2d30be9c6d998ba0081dbed034d06a:eyJzZWxlY3RlZExpbmVDb3VudCI6ODcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMyZjAxZDBhMThhNGU2OTI1ODYyODcwMTU2NDE2MTE3OTEwMDlkMDM5ZjE4ZTk3OTYyYTA3MmZjNmZhYzllMTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIzMWU4Yjc3YTYzYzIyZWQ3ZDQ3NDlhMjI1NTU4YTk2YzFlYzFkNTY1OTM1Y2NlNjdhNGNjNjVhZDQwOTcwZjUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYyMDNmYmM5NjMxNjhjZTI2Njk2OGJiODBmNWZmNjlkNGQ3YWY1YzMwYzQ4MmFmNzg5NWYwYTYxYTk0YzMwMzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ5MTBlNWYwNDI3YTQxZjQ4ZmRkNmYyOThjZGYyNDBjOTg1YjQ3MjNiNTcwMDIzMTNhOTU0YmNiMmMwNjk0NDQifQ" + } + ] + }, + { + "id": "claim_ab925208f9ed402e88e44a8ab9d1e8af", + "statement": "concat concatenates string input values and ignores non-string inputs instead of formatting them implicitly.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-strings.rst#L4-L39", + "version": "repo-lines-v1:sha256:b5141b8d18821c4545caddf9450f471ecf3dfd0d9d964e94b0529c3cbd1019dc:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjY2JjMDQyYjk0NWJjMzViMjA4OWY1Y2I1NDVhNGE3NmMxMTlkODYzYTdjYjg1ZTU2MWNmOWRiYjk4OWQxZTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjllNTNlNDFiNzNhODMxZjA1MGY0Mjk1MjI5ODdhZDk1MDQxZGI0N2FjNThjMThjMmQ1OTlkYjA2ZDg5NWE3MmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE4Y2U2OTlmMzVlYmIwMGU5ZTc2ZTY3OTdhNTc1MTIyZGQzZDM5NWE1NDJlN2M0NjE3ODRkMGZkNTc1NzAxMWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE4NTg2Y2ZmNTdlMDU0MGYxMDk2ZjU0YWY4ODI5MGY3ZTQ0ZjI2MmM1YzRlNjhkN2I2YmQ0YWI0NjIxMzZhMWMifQ" + } + ] + }, + { + "id": "claim_6cb5a22db9644552a80813cb76955fff", + "statement": "Type predicates including is-string, is-ni, is-dict, and is-decimal inspect the first item when supplied a list and therefore are not whole-list type validation.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-dictionaries.rst#L88-L116", + "version": "repo-lines-v1:sha256:697d91d58015ebff3cef35f36da3e0ba5123175ec716a60bde93276547522e09:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdiODE1N2QyZTcyNTMwZTJmODc4ZTk5YzBhMWJlNGViZmMwZjQyYThkNGJmNTNmNGYxOGIwMDczYThkNTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM0MjJmM2QzNTQyZjk5ZWM1YjVmMjhlM2RhZTlkM2NlNDdjYWI5OTE4Y2E2MjRiY2EwNGZkMjRmOWNiMDE2M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ3ZWFmMGEyMDlhNTI1NDFkNDk1N2JhMDA3NWFhNDI3Njg1MmZkM2Y3ZTEyNTlkY2JiOWZiMGRkYmMzNGFmODEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE3ZTVjMGQwMWQ0ODk1NjJmOTZmZjNjOTU2YTE1NzYyNjYwMjdkMjkwN2FiODdlZDYyMjMyYjdmNjZlMWQ5OWEifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-namespaced-identifiers.rst#L4-L36", + "version": "repo-lines-v1:sha256:e19e36f5c7dcf09b34d74db9bc4de242e7b0f87ef48b3f2522dfc7613051fb24:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ3ZjE5YjBlNWQ2NTgwNThlNzNmMWQzNWRjZDc1MDNlNmI4ZTE5MjIzNjk3ZWIxNDViMjA3Mzk1NmE1OTU4ZTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1NGZiMDBjNGEwNDRkNzZlNTFlZTQ0MGUwZTBhNzRiZWM5ZjY1Y2JhNTAxOTUwNjQwZTFjNDc5MWI2MjllNTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA1ZDcxMThiYzhmYzU3NGQ3NGVjNjRhNjg1ZjA3OGI0ZjhlNWIxNzg2YzI5ZmZhMmEyY2ZlNGFmYWExZjM4ZWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNjODk1YjYzN2U1OTRhYmRlZjQ4Y2QyOWEzMWMwYzFkNjJlNmNmZDc0YTZkMjBhNDEzYmEyMGQ0NjJlMmI0YWQifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-numbers.rst#L203-L227", + "version": "repo-lines-v1:sha256:be29c5c53cb6f0dd728b99ce26f3e6ce79e78c50e1969b6141f6d5da0eeaed5a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzNzJjZmU0MmQxYWUyNzBhMTM5OWM4Y2M4ZDA5M2M0YjY1OWY0ZTEwNDVjMGZjNjc3MWE5ODZkZjBhYTlhOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkZmZmNmI2OWVhMGI3ZjUwZjEzMGJlZmFiMGE3ZjA0NWIyYmUzOWZmODEwNDA0MThmN2NiMGY3NTQ5NDc3ZTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjcwOTgzMmRkZWVlY2VjYjJhYzM5MjRiOTUxOGNlZmNhZmE0MjYxOWVkOTU4ZTAzNzIzNzBhNjliZjlhN2QyYjMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcxZmY2NjFhMmNhY2Q2ZGI4NTVhNjZjNWU1MmI1YTZlYjgwNjFhNzFiYTA3MjgwNmMzYWUwNGU5YWQ3MTdjM2MifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-strings.rst#L41-L74", + "version": "repo-lines-v1:sha256:f8c4f4d5f514d5b04843d186490816ce82a9d1ee8a929d254eb6202c76de7f7f:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjExMmNlNTBjOGUxMjlmZWEzNDYxNzk1YzczZTliNTIwMWVjMWVhZmRjNmM3MjJkN2M1Yzk5ZDNmMjE3ZmMzNmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZjYjA5YzVkODFkZTEwNzkxNjMwOTIzZWEwZTQ3OWYwNmE4MGRhNDc1YjJkNzFiMzc0OGE0OGMzMmIyYzc4ZGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJkNTM4N2QxMTMyNGQyZDQ1MjY0MWQ3OTM2Mzg3YWE4YmYyNjI1ZDA4Y2E1ODhhOGRlMGEwNDBlZTVlMzM3OTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU4ODBjODIyMGJkMGFiZDgyOWQ3MDg1ODgzY2FhOTQ3YTJhYTI5YWNiZTM2ZTk5ZjM1ZDBiZjUyYWYxYmMyM2QifQ" + } + ] + }, + { + "id": "claim_95830c9d15404e7095048134726f37ac", + "statement": "The entity model has JSON-like standard types plus Transit extension types represented by tagged strings in serialized JSON, including typed NIs, datetimes, bytes, UUIDs, and decimals; an ordinary colon-containing string is not an NI literal.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L183-L298", + "version": "repo-lines-v1:sha256:4b09404272669c8f45680a4c44c76f2f1b88f7e2791fa0a0a4f77b98c25bf0ed:eyJzZWxlY3RlZExpbmVDb3VudCI6MTE2LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJiYzJhZjAyOGZjMjFkZGU1NDIwZjhhMWM0OTE2Yzg5YmMzOTBlZjViMGFmNzhhYjVlYjIxNzIxZTRhYTgyNWVjIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJhYzcwZDUwYzJmM2E3OTU4MDZiZTg2YzgwNDE3NmZiOTAxMjljNGY0NDQyMTFjZjAzOTIyNzUzOGE3YjIxMzExIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI5MjM1MjYyNDQ3YjM0Zjk1MWVhMjBhMTYyYTg5N2FiYzBjNmY4NmNiMDhjMTMwNDcwNjgzMGMzOGM4NTNjNjY1IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI5NTM4MzA1YmViZmU4YWU1ZDI0OTk4M2RjZTY5YzE1ZjdlMjc0OTk2MDRjNGRkODk2NTQ2MTA0ZDY3MTRkZDZiIn0" + }, + { + "resource": "repo://hub/dtl/dtl-functions-namespaced-identifiers.rst#L19-L28", + "version": "repo-lines-v1:sha256:32a50ae84bbd419cc6d2069b5e16d63317849f185754862df0a7fd178f6dee74:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNjMzRlOTEyMTYyYjY5ZTU0YWIyNDIzNzk4YWMyMDJkNjRmMTE2YzEzODQ2OWZiNzNhZjM2MDM1MjZhYThmZDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1NGZiMDBjNGEwNDRkNzZlNTFlZTQ0MGUwZTBhNzRiZWM5ZjY1Y2JhNTAxOTUwNjQwZTFjNDc5MWI2MjllNTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMwMDYxODRjMzgyNDI5OTgwZWEyYzY1YWE0ODI2ZTQ2ODg3YmQ3NzUwMTBlOTY5MWMwNjAyZjFkMDc0NTAxZjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhlMzQzMTUxYmZkOGNiMGE2Y2Y3Mzg2NzFjMmRhNzlkOWQxODY4OTRjMzE2MmY4ZjhiNjljMzE5MTM1YThhYmYifQ" + } + ] + }, + { + "id": "claim_c996091d9ec141b190fa7ac263f48333", + "statement": "Decimals have arbitrary precision while floats use IEEE 754 binary64 and may lose precision, including on decimal-to-float conversion; ordinary fractional JSON literals are float rather than decimal values.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L223-L234", + "version": "repo-lines-v1:sha256:9396ffa52c4d51f4e49ce4880c12d07c1522765ee1a2ad1c26a64b3a7d021eb1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1ODY2NTVkZjc4NDNiNWMxMDQxMGYwZjAwZGZmMzhhYjk0ZTQ1MTEwNDkwNDYwM2M2ZjI4YmY2OGE4ZDYwMzQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMyY2VkODc2Mzk0M2FhNWJlOWRhMGQxNjQ1ZTRjYTEzNzQ0ZjcyNzBkOWQxYTdlM2UwM2RkNzIyZjZmZWQwZWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ1ZjhmNTRhY2Y4NmE3ZDY1YzMzMjYyYzgyNWQ1ZTRhNGI3MWQ3ZWY2ZWNhOThiMjlhYzRmYTZjMDUzODMzMjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQwZDJmZTAxY2RjODg1NWYyNzVjNWJjZDg5ZGNlZTJmY2RiNjUyMjI5ZDJlOGE1ZDM3YmQzNGY3ODgyODE5OTAifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-numbers.rst#L218-L227", + "version": "repo-lines-v1:sha256:7a71fe6f442a2a2d7f2de2c2b4f5a5e6ffeddafb13b29597b0e5e00b76c2812d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgyMjA5ZmQyNWMyYzBkYWE1Yjk2N2M3NGE1Mjc5ZGE0NzYxNDhmZTE4ODc5OGNhODdkOTRlYTcwMjUzYTFkYTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkZmZmNmI2OWVhMGI3ZjUwZjEzMGJlZmFiMGE3ZjA0NWIyYmUzOWZmODEwNDA0MThmN2NiMGY3NTQ5NDc3ZTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMwMDYxODRjMzgyNDI5OTgwZWEyYzY1YWE0ODI2ZTQ2ODg3YmQ3NzUwMTBlOTY5MWMwNjAyZjFkMDc0NTAxZjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcxZmY2NjFhMmNhY2Q2ZGI4NTVhNjZjNWU1MmI1YTZlYjgwNjFhNzFiYTA3MjgwNmMzYWUwNGU5YWQ3MTdjM2MifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-numbers.rst#L71-L76", + "version": "repo-lines-v1:sha256:96bb35e12e97b89216d3bbbcb81c6de7521f6188c382ac93ca03584d22313881:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWY3ZGQwMzc3MjMwMzBlMTViMzA1YzIwZTdmNWI5ZjEyYWY1ZjUzMmI0MzdmODYxOGEzYzczMWVjMDlkY2U5YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGZkZjczNmYwNzEwY2NkMDFiMmUxODUyNDYxMWVlMDQ5NjJjODI0OTIzNTRlZGFkYzc1YTRiN2NjM2Q4ODExOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWRjODVmYWY2NDljZjk0YTdmMTk0ODNkZmY0OTc1MTRkMDBhMGFmZWY0M2UzNWVmYmVhMDhiNWEwMGU5ZTc3YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNThkYzk1YzBlNDhlYmNjNjY2N2RiNDA4Y2JjODNjODlkMjFjNmNiNTU5NzVmMDlhNzc0OGQ5NDIyODAyNmU5MSJ9" + } + ] + }, + { + "id": "claim_7125df64af0a40a7bc282a1e6212082a", + "statement": "Casts such as integer, decimal, float, and datetime process non-null input values, ignore unparseable values by default, and accept default expressions whose replacement values can introduce heterogeneous output types.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-date-and-time.rst#L20-L47", + "version": "repo-lines-v1:sha256:93d1a66c351ef233e76715d998852ac6ecd541928b27ca67bc0501bb9397ec44:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI5NzM4NTIzYmE0MWViNTAxMTIyMWM2ZmM0MjFhZjE2YWIzZTQ2MjFkMTFiYTJmNTFkY2UzNjQwODk4ZjQ0MzMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ1NWY3ZWNjYWQwYjI1M2FiZjBmMWFjYWIwMzZiZmFiMjZkZjI2NjVlZWViMGY4OWJhMzM0ZmVmMjlkODQ5OWEifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-numbers.rst#L154-L191", + "version": "repo-lines-v1:sha256:028036b0d3f52812fd2722c61735f6272042078baf4e0d7bb3db47ba57195afd:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImViM2QwNWFhYjBkZDZjMDAxMGIwYTY1MDQ2MTAzZTNmYWMwYmNmY2NiNzcyOTc3MWJjMzgxNGYyNjhjNDVkOWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdkZDE1YjRiYjcwMjQxZjMwMDkzNjg2Mzk2NmJlYmQ3ZGQzMDQ5YTUyNThjZWVkMjhlNTA3NjdmNzAwOGYzY2EifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-numbers.rst#L16-L53", + "version": "repo-lines-v1:sha256:42b4d2fedb2a33e338885b7a4566ed21bef8b25351365334168e0f0613bf293e:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg2NzA4MWNhMDczYWNhMTNlZmI4YTJjMzA3Zjc1ZTdjNGFkZTU5MGQ5NTQyNzkyZjMxZDRkZTY0NzM5NTUzOGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFkZTI0NTRlYzU3Y2Y3NjQ5M2NhNDU4OWIyNDg3ODE5YmM0OGFiMmI5NjNjMTBlMDIwNWVhNGJjZmIwMjUxZTYifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-numbers.rst#L67-L105", + "version": "repo-lines-v1:sha256:1822ed3dd9b5edd0c3e762c2a6a02883756112055f1b50faaffbe0c8f53023e3:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg2NzA4MWNhMDczYWNhMTNlZmI4YTJjMzA3Zjc1ZTdjNGFkZTU5MGQ5NTQyNzkyZjMxZDRkZTY0NzM5NTUzOGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI2ZWYwODRkZDA3YzQ4OTc3NThmMzc3MDIzYzAzYWIyMzJhNTQzYTY4MjM1YTA2NDE1YzFiZDA3YTVlNzg3MzQifQ" + } + ] + }, + { + "id": "claim_85d7efcb62b74a1c9a0e7c78d7d984eb", + "statement": "json/json-parse do not perform Transit encoding/decoding, whereas json-transit/json-transit-parse do; tagged URI text remains a string under ordinary JSON parsing but can become a URI under Transit parsing.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-json.rst#L111-L116", + "version": "repo-lines-v1:sha256:49adfac7b2914106e8394baed911d16d822c78e606893b99f88424a0cdc531e5:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDE0ZmM1OWJlNDY2MDFmZTgwZjE4YmY3MDIyYzJiYjIwNzU1ZDE3MTA4OWYwYjc4MDFmNjJhZDk4OWI3ZTg4NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTgyNzFmOTExNWZhZDYzODczNDI0MWY2Yjc2MGE0ZTk2YjRjZjRkZTczMGQzYzA5MDY1MDg4MDAyZmQ2MjZkYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2FhZWI3ZWYyNjBhMTRmMWQ5M2MzZWRjYzc0YzAxZGRmYzhiOWE3OGY0N2NkYmViMmU4ZTE5ZTc1MTIxZTI4YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTcwZmI2MjAwZjJlMjRkMDExYmU3MGIzNDRkYjMyMTJlMjEzNjYzMmUyNGY5NTcxY2NmOTMxNjY0MDhiNDUxMyJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-json.rst#L147-L183", + "version": "repo-lines-v1:sha256:6f2bf1285d7f5ea290a60279c1a6e03674b42c429408f24857c46aec4e73fee8:eyJzZWxlY3RlZExpbmVDb3VudCI6MzcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE3NGRmOTA4NWExZDRhZjkwZmY2NTc1NDU0MzEyZTRlMzM1MGI0ODEzNzExMzViMmM1OTNhMjcyM2JhNDIzODgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJlODI5YTA3OWU2ZTdlMjBiNjRlNjZmN2U5MGZjYWYxZTk1ZmZiOTE4ZjljNjY5YjA1NzZiOGQzMzY0MGY0NjQifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-json.rst#L16-L20", + "version": "repo-lines-v1:sha256:7ae29ccb45f141f09fa2355ecdcc25a6bc6ad6ed99e8ce2404973cbd198db796:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDE0ZmM1OWJlNDY2MDFmZTgwZjE4YmY3MDIyYzJiYjIwNzU1ZDE3MTA4OWYwYjc4MDFmNjJhZDk4OWI3ZTg4NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTE2MTZiNWE1ODkyOTgxNTAxODdhNGU3MDEyNGRhM2U2NDQ1ZWNhMTFmYmNkNzlkNTA1MTdjNDYyYWY5MWQyNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2FhZWI3ZWYyNjBhMTRmMWQ5M2MzZWRjYzc0YzAxZGRmYzhiOWE3OGY0N2NkYmViMmU4ZTE5ZTc1MTIxZTI4YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTkwZTNlYzFjOGJkZDJhMWI2OGU3ODYxZTgwMmI3OTg0YzdiM2Y5MTExM2M4ZDJlZmM5NThjZjBhOWM5NzljOCJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-json.rst#L51-L89", + "version": "repo-lines-v1:sha256:7ba5256b976203970c09b7e549c90ae3cd97ee7585a1dc463a44d996b12ecd87:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4YTI1OTQyZTljZDBjZGU0ODcyM2VkNGZmNmRlYzFkOWFkMTRhMzc0Yzk1N2IxMmEyNjg1MTQ4NzExZmU4YzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM2YTAyOWVlZjkxM2RiNzk0YzYyYmI5YTdiNjdmOGNkZTJlZDJmMjA5YWMxOWIwYjYzZjQ0OTgyZWU3YTExNWMifQ" + } + ] + }, + { + "id": "claim_023027b7d43d4ffdabf75b6818bb32e9", + "statement": "coalesce chooses the first non-null value within VALUES, or the first value satisfying an optional functional predicate.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-nulls.rst#L6-L33", + "version": "repo-lines-v1:sha256:e935fcfcd4420463a7acccf78482b659b8c561670881177c0f2b97004bce1840:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYyNmQxMDJiMzU0YzFjZDYxYzU1OWNlMmQ5MmRlZjhkODljMDQ1OTQ0ZDI4Y2ZmZDRjNWM3NDJkMDBjNzlkMGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4NDRlNWE2ZDQ4YTY2Mzk1NjgyMzMwMjBhODEyNWQ0ODdiM2Q3Y2Q5NzA3Mzg1OTM1Y2U0MDdhNDljYWMzOGYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ1MzU1MTJiMDkwYWY5NDkyZmY1MTVhZjY1MjU1YWM1M2E4MTczNmQ2MjY0ODEzOWRkYTc4MzQ2ODg1MzNiYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRlMTU5MjU1MzBiZTIzN2U0NGQzMGRmYTM2NmExNWIzZmRlYmVlN2Y3OWMyMGEyNzVmYmQ4NDVkMjUzNjcwOTkifQ" + } + ] + }, + { + "id": "claim_e331bd4d9a2e461c9e04e147465eb10d", + "statement": "coalesce-args evaluates arguments sequentially and short-circuits on the first non-null argument, treating an empty list as non-null and returning null only when all arguments are null.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-nulls.rst#L35-L71", + "version": "repo-lines-v1:sha256:2eb501f405bae0b0e2e418dcfa917959dbef9bd3d18aef7346600a3301bf54e2:eyJzZWxlY3RlZExpbmVDb3VudCI6MzcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ0YTFiYzM4NTk2NmJjNmM2Zjc2ZWYyNmUzNTdkMTUzN2I0ZWQ5M2VkYmQ0MmNkZWEyYWNjODlkNGIxMjUxY2YiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlhZmM0OTM3ZjI3YjYxNDg3NjU0ZTlhNmM5NDNiNTVhNjNlYzY0Mzg1OTlhZjI0MTBmOWJjMjkyNTk5MDhjOGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM1YjczYmY3NjhjMGY2ODE3ZTA4ZmZhZTRlNTY4Zjg2OTBiZWMzMDRmZTFlMWNiNmJmODNjZjdlZjFkOTQ4MjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM5MjUxOTQ0NDNkMWEwMWM2MDdmNjEwMWU4MDdjMWEyM2Y4NTc2NGM1MTA0M2VhMzIwMDAwYjVkZGMwMzJmYmMifQ" + } + ] + }, + { + "id": "claim_d25ecc73981c425fa261c391b7329427", + "statement": "is-null treats null, an empty list, and a list beginning with null as null; is-not-null is its opposite, and if-null uses this first-item-sensitive test to decide whether to return its fallback.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-nulls.rst#L73-L196", + "version": "repo-lines-v1:sha256:ad79701a0f9afaab5322a98b3cc0bc32bcb489533d8b124784bd390ffdb50794:eyJzZWxlY3RlZExpbmVDb3VudCI6MTI0LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJhNjA1NmFiMDkzNzNjYmRiZDU3N2FiMDEzZGIxZjMxNDNlYWI0ZWMwNDQ2OGJiYTA2YTcxZjJiOTFiNjNhNzdmIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI3NTRmYjAwYzRhMDQ0ZDc2ZTUxZWU0NDBlMGUwYTc0YmVjOWY2NWNiYTUwMTk1MDY0MGUxYzQ3OTFiNjI5ZTU2IiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiIyZGQ1OGJiNjA2OWYzMjM4OTU4NWY3NzdkY2UzZGU0NmNmMWRiMjI2MGZkZjUyMzYwNmJiYWY1OTAxNTQyMThiIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MCwiZm9sbG93aW5nQ29udGV4dEhhc2giOiJlM2IwYzQ0Mjk4ZmMxYzE0OWFmYmY0Yzg5OTZmYjkyNDI3YWU0MWU0NjQ5YjkzNGNhNDk1OTkxYjc4NTJiODU1In0" + } + ] + }, + { + "id": "claim_f1a8a53bab5a4c7cb0931bac85921b3d", + "statement": "add-if evaluates its optional condition with underscore bound to the complete VALUES result; its default neq-to-null condition skips null but adds empty lists and lists containing null.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L91-L146", + "version": "repo-lines-v1:sha256:8973aed96d56cf10a116d1130676c7489279d0a4acd29016a94d3f2f18710517:eyJzZWxlY3RlZExpbmVDb3VudCI6NTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhNWJmMDg3YWI0ODM4Mzc4YzZlMjY1NWNkODA4Y2IyMzAzOTU1ZWMwM2M3YWJiODkxZGExZDhmNGRlYWJhMjciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5MzRiZWEzYmU5YjdhZjU5NTUxZTYxOTI1YThjNTIzNjZjYjQ2MDM3MjkxMDMzNWEyN2YxZmQxYTM0YTJkMjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNmMTczNmViNDM2MGNhYmYzMGM2NzU4OTEzNDkzNWUxM2VkODVjYjg4NDE1NDkxYWEwMzIzN2FlZDI5OTE3YTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU0MWYzOWIwNTM2M2Q5NjRlZmVkODQ1MDY0ZTJlNDIwNjk3ZGIzZjA0MjUyZWViZGJkZTkwNTRlOGFjZDllNGMifQ" + } + ] + }, + { + "id": "claim_37657517e9024dd380ed5ae91d663fd9", + "statement": "Namespace configuration can be enabled globally and overridden per pipe, with identity/property namespaces defaulting to the pipe ID; add_namespaces runs before the first transform and remove_namespaces after the last.", + "evidence": [ + { + "resource": "repo://hub/features/namespaces.rst#L34-L45", + "version": "repo-lines-v1:sha256:14b4c78660cc61c029f96513b6efe566ea4bd6b753ad41beea42902a4610d889:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgwZDk3MjIxNDJhMTA3MjVmMmMwYzI5M2YwNTVhOTNiOTNhODVkZDRlZGY5OTgwYmFkZmNlNjQyNzk0MGYzZGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJiNWJhMjFjZThkZTAxMDQ3NGQxNjlhYmQ2ZjhkYmIyZWQ1MDdiZTgwMmRkZjMyN2Y1MWE4ZDNlMDMyMDdkNTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImViNTc2NGZjNjk1ZjYxNDc4MDAxMWI5OGU5YzQzM2MyNzMxMWUwMTUxYTRhODE5MGY2NWIzMTllMTEyM2YzMjIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2OGFmNDBiY2U0YWUzNTRmYmEwNDg2MmU4OWY5MGEzZWZiZTMxNjdiNjA5MjU4YjUyMzc4YmU1NTI1Mjc0Y2MifQ" + }, + { + "resource": "repo://hub/features/namespaces.rst#L67-L91", + "version": "repo-lines-v1:sha256:9de36b82b9b3dbabc1ea6b5c9078994634ef4baba9babdd22ad534980304b411:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5YjVjZWJhMzdjNzU4ODYxYjUwNTA1MjQ4MTU4YTdkNjdlNWE2ZTAyNzU3NWNiN2FhODU2ZmY0MDI4ZDIzYTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4ODg5M2UwOTA5MmYzNDI1YjMzNjRhY2NjNjkwNjRmYTY1ZTA0MmQ2OTRlYTNmNTJhN2NhMjIzYzdkNzY2ZmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdlZTE0YjQzOTZlMGRmODUyODNlZDMwOTBhMmJhYzI1MTgxMDVkZmRhYzQ0ZDQ0ODYxNjcyOGRhMGNhYzFkNDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoyLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQxMDRmYTIyNTcyM2I1YzMyZTM5NWFmYTMzNDY1YTY0MjE1MmI1ZjQzYWIwMWQyZGVkZTdkYzk1OTUxNGNhZWEifQ" + } + ] + }, + { + "id": "claim_3aeb9796bb2b450ab491e714d207b6f5", + "statement": "The namespace-aware functions add, add-if, default, make-ni, remove, copy, rename, and path use namespace boundaries for wildcard matching and generally match unqualified property identifiers across namespaces; copy preserves matching source keys and unqualified path can return combined values.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-dictionaries.rst#L330-L337", + "version": "repo-lines-v1:sha256:59eb81556dbe3d14d75c5d29526f1ee545adbe50e06b231b2dceb1bcb5971c2f:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjVlOGRkYWRmMmFjNTM1YjU3YmE1OTIxMzgyN2I1Nzc0MDdkNTUwYzA1YmIzMDIwODVhNWIwM2JhNDg0MzhiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjNkNjIzMjZjMzJhMDc5NmUzM2E0OTNhOTllNWJmMTYxZjk3NWM1NjVhNzBmYzhjYzVmNmVlZTllZDIwZTk5YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNWI0ZmE3ZTk2NDY2ZjQ3MWQzN2NkMGIyZjdjOTAyMGM5NWUyNmMyMGMwZTE2ODkxOWQwNjdmNWU0NWU0MzRhZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzdiNzFiNTAwODBiMGYxOGUyODZlY2RiY2E5MjM5NDRkNGNlMmU1OGFlOTRjNjY1YjMzZGFmYTgyZTQxMDU0YyJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-dictionaries.rst#L385-L403", + "version": "repo-lines-v1:sha256:4ef3005e1ec6222c9215d090436cd5a271e7397a2b7c579c1d3c4cb08e560673:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY3NDEyNGRhNDlhY2Y4YjExNWY1YWY2NDBiYTE3MDAwNzg1MjE2Y2E2YWU2MmU1MmM1NmNmNWJmZjY2MWM5YTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmQwZTA0NmJhMzhmNjU4ODY4OTRhNWEyYmVlYzdiMDFlZTcyNGI1OGY3NTE0ZTZkNGZjMmIzOWEyNjUyZjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE3N2VmMjNjNmY2OTFkNDI1ZTNiYjEzMjViNmQ2MWJmNGRlMzI4YTk5NGYzMzQzZmYwYjJmMDVlNzA5ZDczYjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEyOTVkMTNkMjBkNWFjOTVjNDkwZWNjYmE4ZDcwZDQ1ZDY2ZWNjZDZlNzI3N2Q0OTc1YTkwMDVkOGRkMmI1ZjgifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L301-L350", + "version": "repo-lines-v1:sha256:0f63799bb61a7fad683b7c2ea725a1cfda77778b50a11840f88f24aaf433d06a:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY1ZThkZGFkZjJhYzUzNWI1N2JhNTkyMTM4MjdiNTc3NDA3ZDU1MGMwNWJiMzAyMDg1YTViMDNiYTQ4NDM4YmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAwNDM5NzVlYjljNWM0MzhmY2JiZjRlMGNiYzVhODhmYjQ1MDUyOWM1NDg1ZTViZDRhNDM0MjlmMzg5ZDFhN2MiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY1YTczZmJjNDc1ZTg5MjRjM2Y4NjYwMDkwZTczNDAxNTdlMGZkNjFlMDZiMTM0ZWU3YzBhOWIyM2I5MDQwOGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAwNzgzMzk4MGE1M2NmZjM2ZDFkMTNmNTdlZWRkMjE4ODc4NzY4NzI5YWY2MTNhMGFmZDEwNWE1YmEwYzU3YzcifQ" + }, + { + "resource": "repo://hub/dtl/namespaces.rst#L6-L21", + "version": "repo-lines-v1:sha256:f9fa5b54c7276782d1b018c3ce5c28686a04d7acfcbeae0bdcd89738d1c5733c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk1Njc2ZDhlNmNlNWJiMDYxZDYxYjhkMWRlZDM5YjExYWZjNmQ1ZjdkMTNkMzdhY2FjNDAzNzdmYWQyOWRhMjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAyZDZjYjJhNzBlNDM3ZjYwNGMzZGU2Nzk1M2EyZjdlYWQxOWI5MmI4ZTFlYjE2M2Q0NGE0NWZkNmYzN2ExZTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg4NDk2ZWNjMmY3ZDM5MDRlYTVkNjI0ZTI5N2E3NGU5YTlmNjFmZjYwMTgxOGFhZDNkODY2ZWQxMmEyYTIyOWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcyOGM1NmNjMDljNTJiYjg3N2Q4NWRiNDEyNTZmNGI2MjM4MGU1N2QzYzg2N2ZkN2YyYjc5ZjFjMTdmYzQzNmQifQ" + } + ] + }, + { + "id": "claim_36b7c828817c4d0aa494f9d89fc39bce", + "statement": "With namespace-aware behavior enabled, add prefixes new ordinary properties with the property namespace and _id string values with the identity namespace; fully qualified names or :: escaping can override ordinary property prefixing.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L30-L37", + "version": "repo-lines-v1:sha256:b0d6b4360107e91a54a48ff345a17d67437883e26660af8035665dc7fbf12601:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGJhNzYwYjU4ZTgxOTk3MWEwZGM1MGViMTRlMmZlYTBhNmFmNzcxNGMwYzY5NGE2YjQ3NmVhYTZlNTZjMGExMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDNlNzNhM2FkODI3NmE1NzBhNzdkNjQ4YjJkMTYwOWMzNTJmZmI3MWZjODM4MWNmNzBiNmI3YmJjZjljNTBjZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDlmMDJlNmEwMWE0MDRjZjZjZDUzMzhjOGEwOWYwYzQ4ODY1NTg2NjIwZmI2YzY0YjdjMWFhZjJjMjc1NTUwMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMmMxZjI3YTc4NDQ0YzEwMTkxMzZhYzgwNjQxYTYzNGZhNDU2ZjRkMjdmNzMyMGIxMDQ5MjllOTYzYjk4OTg2YyJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L64-L89", + "version": "repo-lines-v1:sha256:2fcefc83cab777f6815ed81d456b4193cc66eba6d74009ca1a520f6e2989e349:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhNDdmYTc3ZjIzYTcxYzNiZTNlNGU0Y2YzODkxOWE1ZDA0NDQyYWU2NTE3ZDMwOTBiMmNjMzY4YzE3YjBjNDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5MTc3NDNkMGE1YzI4MDMwNzFjMjFhOWEyZGNjNmIxMjQ0N2YzNWE2NmMxNzAxZDQyZTI3MjZhZDVjYjRiMjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE3N2VmMjNjNmY2OTFkNDI1ZTNiYjEzMjViNmQ2MWJmNGRlMzI4YTk5NGYzMzQzZmYwYjJmMDVlNzA5ZDczYjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFlNTdlOWY0ZjhiYjdmNDkwZWVjZDU5Yzk5MDVkNGQ2NGVjNjUwNWFkYmEwNmFiOTI4NzI1YmEwY2ZlM2U2YTMifQ" + } + ] + }, + { + "id": "claim_7137a594aec24de182421ead7be54c19", + "statement": "NI escape prefixes distinguish :: for as-is interpretation from : for the current namespace, allowing path to distinguish an unqualified key, a qualified key, or all keys with the same identifier.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-dictionaries.rst#L385-L403", + "version": "repo-lines-v1:sha256:4ef3005e1ec6222c9215d090436cd5a271e7397a2b7c579c1d3c4cb08e560673:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY3NDEyNGRhNDlhY2Y4YjExNWY1YWY2NDBiYTE3MDAwNzg1MjE2Y2E2YWU2MmU1MmM1NmNmNWJmZjY2MWM5YTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmQwZTA0NmJhMzhmNjU4ODY4OTRhNWEyYmVlYzdiMDFlZTcyNGI1OGY3NTE0ZTZkNGZjMmIzOWEyNjUyZjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE3N2VmMjNjNmY2OTFkNDI1ZTNiYjEzMjViNmQ2MWJmNGRlMzI4YTk5NGYzMzQzZmYwYjJmMDVlNzA5ZDczYjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEyOTVkMTNkMjBkNWFjOTVjNDkwZWNjYmE4ZDcwZDQ1ZDY2ZWNjZDZlNzI3N2Q0OTc1YTkwMDVkOGRkMmI1ZjgifQ" + }, + { + "resource": "repo://hub/dtl/namespaces.rst#L23-L41", + "version": "repo-lines-v1:sha256:0cc80ec22a0be81efd6294a5493b43ebfc3d8d0c54a2aacee6465e7e2265afae:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNkZGJkNjhhNTUyZjMzNGUyMzZmMzQ2YzJkNTZlZGVkMTZlZTU1M2MyM2YwYTM3NjFhNTk4NDk4MTM3ZjJmM2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhlYzQzYzU3OTlkOTljZDc3NzVmZjhhMDk4OTUyYjcxZjAxMjBmOGRjMmMyMjllOTUzYjhmMDZhMmRlZjlhNjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZiMTA0ODc0OGFmZGNiM2VhODEwNmRkNGViM2Y0YmJmOTBhZWYzNmY5YjEzZWNiNTA2YjkwNzQ2NWFhN2UzNWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_63e94d7b0f714e8c9f36d68e75fbc7b5", + "statement": "ni casts strings and URIs to typed namespaced identifiers without string escaping, uses the global namespace when omitted for strings, and only accepts URI input without an explicit namespace, collapsing URI prefixes to declared or generated namespaces.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-namespaced-identifiers.rst#L38-L95", + "version": "repo-lines-v1:sha256:91f0eafd4b502e172bc6b5a7eb2485898c4ab5b9e3c46e0b905cfb60af09b1d1:eyJzZWxlY3RlZExpbmVDb3VudCI6NTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlODNjZTk3ZjgwYjFjOTJiMmU2OGQxM2Q0NmFlZGIzNjg3Njk2NWY4ZWE3YWQwYjgwNmU4MDljZDgwYTY2MTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1ZjcxMTI3MjdhNWE1MjJmNDJiMTY5OGM3MjU1YWM0ZmQ0OGE5MDE4ZjY4N2I1NmYzNzY3ODA5YjhlN2EyODIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAzNzJkNDE4MzIxMWI2YTM5YmVkMjEyMTcxYzNmM2U5OTA5ZTNjOGVlOTUzOTg5MmEwNTUyZmExYmFiZTQwYWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJlMjJkNGI1OTdmNTIwM2E3MmEwN2NmMDQ5YWNkYTQ1MGMzM2I2ZmVmMjMwNzcyZjk1MDBiODY3YzNiZjcwODAifQ" + } + ] + }, + { + "id": "claim_7a1561a509dc4d5e8bf6a03283024d37", + "statement": "make-ni is a target-mutating transform that constructs namespaced identifier values from a source property, rather than the value-returning ni expression.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-namespaced-identifiers.rst#L38-L68", + "version": "repo-lines-v1:sha256:2cd6c324e0e1e7bbf69c2be9724daa4dfe4a0dff65384e51fc4d583dfd6428a8:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlODNjZTk3ZjgwYjFjOTJiMmU2OGQxM2Q0NmFlZGIzNjg3Njk2NWY4ZWE3YWQwYjgwNmU4MDljZDgwYTY2MTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4ZDNlYjU4ZTk0OTY5YzQ2NTdmNzllYTRiNGIwN2E0Y2U3Mjc0MmRhMWY5ODMwYmM4ODRiZTY5ZWYwYzg2Y2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAzNzJkNDE4MzIxMWI2YTM5YmVkMjEyMTcxYzNmM2U5OTA5ZTNjOGVlOTUzOTg5MmEwNTUyZmExYmFiZTQwYWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5NzAwZTk5MzA2MTkzMmNhZDk1NGZjOWU0MzZhOGVjMTU2YjY0NDgwYmRlNGU2NDEyMjE0ZTc2MzhkODY1OWQifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L669-L704", + "version": "repo-lines-v1:sha256:94c7e97f3803ce63169e77f98968f1af8ba5c9668a6f54c3c0025e13b522d761:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJkYWEzOWIzYzMyNjIyYjkzZTY4NmUyZTE3ZDFmMDY2YTBlNmZmYzA3YjA5M2Y0MjgzZWRlYWM2NDUzM2ZkMDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAzNDg5YzY0YzE5MDIxOGUxN2MyN2MxYjQzYWFlNTZjODcyNTdkMGVhZGExY2IwZGRlMDA4MjhmZjJmZGU3ZWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI1NWFhNTVhMzc0MTE2NzU1YmZmNTNmMjE2NjAwNDQxNmRmNjk4NjJiNTcxMTBhMmY3MGFiODEwM2I0ZDAxMDUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ1YjMwZTg3YmI1NTM2OTY1Njc1OTM4ODAyMzUzZDRjMTQzZmMyNDRiNjM2ZTlkYzg1ZWVjNzAwZmQ4YjA5M2IifQ" + } + ] + }, + { + "id": "claim_5f6a0005e7c84e85ad0f54645794dceb", + "statement": "Datetime values are stored in UTC with up to nanosecond precision, and integer input to datetime denotes nanoseconds since the Unix epoch.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L280-L286", + "version": "repo-lines-v1:sha256:dce7192fc9adbed9ff95a8c7551139ad0f1399af541afc11727d038456f48427:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjBiZTc3NzVhZTQ0NzU2NTIyMWIzODc3MjkxOTczYTBkMWU1MGFhNDZhNmM0Y2M1YWJhNjJkYmM0Nzg4YjdjNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGZkZmI2NWRjZWI5ZTdiNTBkZTJhZTg1ZDkzZmQ1YmQwMjI4ODRiZjkwYWFiNGE5ZmRiYjExNDYyMmYwMjJiYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTIzNTQ5ZDNkMzUyZDhmNGE1M2M5ZGYwYmQxMzJjMmEwMTU5MTU2NTQyMWM0YjIyZmQ1MTE5NGM1MThlOGQ5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2IwZWVkODVjNWQwODMxMmQ0NTJjYjcyMWZmMmI5ZGQ2NjgyODFjYWY1N2RlY2Q1MGMwZGQ0MjVlNjI2NWJjMSJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-date-and-time.rst#L29-L37", + "version": "repo-lines-v1:sha256:256a78fb6eb4afa154fa0d41c32f8029665a073cad9791569ef0bbe86758c2e7:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzBmNGViZTczYjMyZWZhMGYxNmRkYmFkNmMxZWQ4MDMxYTAzYzhiNmEyYTE1YzExOTcwNTJjMDZiNTQ0MGQ1ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWIzZDc4ZWUwNjY1NzNiYWY0MzcyMWE0YzNmNzExMTIyYzBjNDk4YmEyYTdkMTJmNmUwYjc5MmI0YmM2MDg5YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTg4YTFkZDE0NGQyNmU0YWExOTlkZjFiOGQxOTljOGQ4ZGMzMjcxMjEzYzBhZDQ0MGI4NGI1ZTU5MGYyODZmMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWU0NDU1ZDllM2FlMTZjNjRiZTRlMTkzZmRmN2UzNDg1MzE0NzhjNTQ0OTlkOGRjYmNkYWVkNjUwNmRjY2E2ZSJ9" + } + ] + }, + { + "id": "claim_6da6025f8ec84ccdb665b05b72f67d33", + "statement": "datetime-parse interprets input strings in its specified timezone, default UTC, while datetime-format converts typed datetime values to the requested timezone, default UTC, and returns strings; %f formatting supports only microseconds and can lose internal nanosecond precision.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-date-and-time.rst#L121-L169", + "version": "repo-lines-v1:sha256:df166b2452bedea9b43da41584899bd4985363f1a6cae5c6809f313a96062aef:eyJzZWxlY3RlZExpbmVDb3VudCI6NDksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmYjgwZjk1NTEzMjMyZjQzZjk0ZjY2ZjBlYWMxYTQxZDU2NDE0Yjc5NWVhNTlhNGIzODZjNjc0OWI2MzRmNzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImIzZjk3YTJmYmNkYTdjNTkyZmE0MGE1YzYyZWIyNWYyOTIxOTZhODQwMGYwYTYwOTAzNjEzNmUxNjY0ZjJlNWUifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-date-and-time.rst#L183-L210", + "version": "repo-lines-v1:sha256:8d064f3e2bf1babc6c0a38038bbc51703063bd7045aeae2f2d5307b568e0f49f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyZTYwNTNhYzY0ZmQ1YTA0M2Y3ZDVkZTkzMDY5NzI0NTE5MGJkZTQwNDQwZTM2YzYwOTExMDNmY2QzN2ZiNDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJhY2I0ZDA5NWQ1M2YwYzUxNjU1YWFlOTYzMDA5ZTU1Y2FiZTZjNDM2NGMzNDhjODMwMWY1MGNhMzRjY2I5NTIifQ" + } + ] + }, + { + "id": "claim_52b188ffe60047259e8c765aed264da9", + "statement": "Timezone conversions rely on historical daylight-saving tables that can be corrected or supplemented, so explicit or implicit conversion results can change over time.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-date-and-time.rst#L4-L6", + "version": "repo-lines-v1:sha256:a9268f54d9a8d9527ebcea0c8a7660261c387ad98aeece7d586898341faeac09:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmM2OTcxNjYxMWEwNzg3YzEzNTRiYWZkY2FiMTI2Yzc1OTZiOGVmYTMwYzRhNzMyYmViMDBjMjVlMTg5ZDk4YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWFiMmM1ZTYwODg0MThkN2I2MTExOTA4M2NlYjQ5M2NjZTNiODJjNTJmODkzNDVhMDgzMGZmODFjMjJkOTAxYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDc4M2M1NjBhOTNlMTJjNzA4NTY0ZWU2OGRlZWVkZmY5NjEzMGJiZDRmODFmY2ZlNzVjZWE1MWUzZTcwMzNhZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWEwZDRjNWIxNDlmZjYxZDhlNTJjNjRmMmJlOGJiYTRkMmMzMTE5YWZiZTk0ODFjOTU0ZDY3ZDg1YzVlZjNlNSJ9" + } + ] + }, + { + "id": "claim_ee8b7ef7cb1049c59a2fcb53049b786a", + "statement": "encrypt uses symmetric Fernet encryption and returns encrypted bytes, but the documentation warns it is not an end-to-end secure encryption system because the key is stored with the data even when secrets-manager references are used.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-encryption.rst#L116-L140", + "version": "repo-lines-v1:sha256:39d612b1b868649d4abf264bfb77f6f52443b4a793be082fba02508f5578d3d6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlOWU1MDI0ZTQ5MjBkMTBkMGNiNzIyNTdkN2Y0MmViN2YxOWNlNjZkZmNmNzlkMjZkMjBmMzk4NWVmYTA3ZWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhMmZkZmNjNGQ3Y2I5ZjgyZWE4MGVmNDhiN2FiMWU4OWMxYjYxNTBmZWQ3ZjQzOTA5MDY0YzYzOTRjOTAwMTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNkZmQwOTYxYWEwODBmNmVjY2FhNmUxMjdhZWVkOTliYzY4NWIwMWVlYjU4OGQ0MzA2OGI2YTcwZTIxMTk1MTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc4YjE4NTk2MjU0YzU5ZDhjMmZkMzM1NTBlMGJmNzUzZWQ0YTZmZTUyMDVkMjAyNmZlYWMyYzQ0MmIzNjk0YzIifQ" + } + ] + }, + { + "id": "claim_db7ed316bf6247bb8087885bb24e2801", + "statement": "OpenPGP operators encrypt string or list-of-string input into ASCII OpenPGP messages and decrypt with the matching private key and passphrase; non-string data must be serialized first.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-encryption.rst#L142-L180", + "version": "repo-lines-v1:sha256:d266234ea59b01a6dc134d7d8ac6e4663392e3f13a87c74f19bbfa5fc29a96f3:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhNmY3YTExY2NlYjAwYjM3NDEwZjg2ODdiN2Y5YTQ4NTA1MThiOGNkMTkyZGJkMTEwZDg1OWExNTI3YjRiZWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI1MGEyYjcxZTYzYzM0MTA4ODM5YmZhNWM3MmJlMzUzNDg3MzdhNjFmYTA0NmMxMWRjY2YwM2I1OTU0NDlkMjAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZkMTIzNGY3NmU4MmUyNDUzNGVhZjkxZTAyYzU5NWEzN2Q5OWZjZmYyODllODY4M2U4NDM3ZDE2MWIxZTk1MTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAzOGNlNTkyOTJjMWJlNDk1YTk1ZTljNjlhZDRiMTg0MzBkMzE1NmIyMzhjMzljYzYxOTgwY2ZkMWY0NzFlMTUifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-encryption.rst#L32-L72", + "version": "repo-lines-v1:sha256:2d07228d7b55c27f3e6551a6c7e18b3213de96fe89da97f99863a9ce9a44de65:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZmNWNkZTJlZDM1MGU1NjZjZmM0ZGVkNDAzYmM4NWE1ZTRkOTc4NWQzYTQ4MGE4N2Y3ZmY1N2NlMDljYjM5MmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI2NmU4ODRkZjljZDE4YmYwZTNhMTlkOGE5NTc0MTJlN2EwNTBlNGFiMjE5MzkwNTA4NDkyMDY4OWUzODM5ZDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNkZmQwOTYxYWEwODBmNmVjY2FhNmUxMjdhZWVkOTliYzY4NWIwMWVlYjU4OGQ0MzA2OGI2YTcwZTIxMTk1MTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMzY2VhODBmNTNjNmI0Zjc4MGQ2YzE2ZDZmYzQ3ZjI2OTYyOWRhMWNlM2M0MDJhNmVkNDU4MDRlOTE0NGEyYTMifQ" + } + ] + }, + { + "id": "claim_90e4ada91d4e40f199550623dbe608fb", + "statement": "RSA/PKI encryption accepts strings and returns bytes, while decryption accepts bytes and returns strings requiring parsing or casting for typed data; PKI is intended for short passphrases or identifiers, with OpenPGP recommended for larger blocks.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-encryption.rst#L182-L221", + "version": "repo-lines-v1:sha256:5ba829e2acdd026da8ee53ed4d5aa9a0068f2345e75b065895a6d28120cc5b0f:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE3Yzk5NWY5NjY1OTgwMWJkOWU1ZTliNzE5NWJmNzkyOWVjZDdjYzEzYjRiZTNjOTk1ODg5Y2YzMGZiNThhNmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMzOWY2ZTJhNDNlZGJjYjM0N2Y3Y2QyYTEyZDVkYWRlMzhlYWQ0NDY5YjRmMzg0NjFjYWQ2OGI5ODc3YmQxOTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUyMDQ2NTNmYmY4ZjBhMGY5ZmUzYzc0YTEzMmM2ZDQyNDc1MmZlYmZjYWM3ZGQxNDI0NzI2ZGI2ZDA3N2UzMDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-encryption.rst#L74-L113", + "version": "repo-lines-v1:sha256:b6cccf222984abefd9e1898b57b67c1b8e16fac6a32dbdabf1837f96307447b7:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFhNGU5N2ZlZDAyMTJmYjZhMmNmOWJiOTdmOTg5MGI4NzZkNzNkZmZkMWI5NzhhZGE4NGVmNjNlNGM4NDJkNWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZiNjkxOTc5ZGMxN2JiOGJjYzg0Yjc0ZjJlM2FmZmFkNmE4YzFmYTdjMjllNTkwNmFmMzAzYjA1MzQyMTVhZGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg3NDM2NjIzYTBjZWZhNDE2Mzk3MDVkYzM1OTVlNWM1NzU3Mjk5Y2RmNjBkNTg4YjhmYmY2YWIyNjIzMjczN2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEzYzI5NjI4M2NhMzQ3NWNmZmMxMTkyN2UwNjc2ZjAzMWE3N2Y4MTIwNWZlYWQxMTczNDBiNzdiMWE0ZmQ1YTYifQ" + } + ] + }, + { + "id": "claim_048176d15c2d49a1b3f21db9848e80e9", + "statement": "The deprecations document classifies curie, uri-expand, lookup, reference, ni-collapse, and ni-expand as deprecated DTL material and instructs readers not to use these features.", + "evidence": [ + { + "resource": "repo://hub/deprecations.rst#L18-L195", + "version": "repo-lines-v1:sha256:e8906f113134500d628b2393deaa4c6d30fff462e1cd93387eb517ce6c91fab1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTc4LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiIxNWQyYjNkN2Q1ZmU2NDk5NWZlMGFhMmFkZTgxZTcwMjRmMzZmNDBlYmIxYzI2YzdkZDFkNmYzNDRiZWRhZDQ4IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJhODE4OGFiNjdhYmFjNTRjMDdkMGY0MjZjMjA5ZjIzNGVkY2M2YmRlNjUwY2QyZjAxOTg0ZmJiMjE1ZjEyZDIyIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiIyMjFhM2JiY2NiODJkNDc5NGM3NWMzMjEzMzk5MjMzOGM1NzE1Y2FjYmM0Yjg0YmQ3OWVlYWE5ZGRiYmYxZjI2IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI2NGU1ZWI4YjliZTk5YTZkMDQ0OTU2YWM3ODRjNjQzYzQzODUwZWU5OTFiZGZiYjQ4ZmFiMTQ3YzUwNWVkNWY5In0" + }, + { + "resource": "repo://hub/deprecations.rst#L199-L319", + "version": "repo-lines-v1:sha256:9360e2d79180a7cb52c6825a2f834a493c40e188f0b4c312a2404a48167dc01f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIxLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiI5ZWZlNzNjZTYzODIyY2RlYTg0ZWEwNjkzNjllOGVkNjMzODE4NzgyYjFkM2E5ZjRjODJkYjNmZmZlN2VkMzNkIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJjZDczMGExYmZkYzA0YWI5NDljZTgzYjcwNTM3OWFiZmVjMzI1ZWQ0NTJhNmZiMjI0ODAwNGMxYWVmOTNiOWQ4IiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI2NGU1ZWI4YjliZTk5YTZkMDQ0OTU2YWM3ODRjNjQzYzQzODUwZWU5OTFiZGZiYjQ4ZmFiMTQ3YzUwNWVkNWY5IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI3MTBlYjY3ODI4N2EzN2MxMjI3ZWE1YWQyNzNjMzk3MjRjZTc4MTYzN2MwM2ViN2Y5YWY5OWZmM2EzNDRjN2QzIn0" + }, + { + "resource": "repo://hub/deprecations.rst#L7-L8", + "version": "repo-lines-v1:sha256:d8ad1b6ff007e2ce1314748254407f38d35dd98d07be6a7e0ea07f6b65bb1aea:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTljOTQ3ZmY1MjQxY2U5YjdkMTBjN2E0MDZjOGVkNjlkM2IwODc5NDMzMWI3NzY0ZDA2YzU0NTM5YTE4OTI5MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzM3MmY5ZGUxODI4MzIyOWIzZWYwMTFjYzU0Zjg5OWIxZmRlMWY2YTk1MjYyMjk5YjZjYTM3MWJhYTkxNTM0NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmVkNWNmNTYxZDQ5Njk3MjZmZWU3OGZmNGExNjM1ZTk1NTc2MTkzMDUwNjM3OGNlNGMzNzY3ZDFhODJlNDgxYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTYxNmY1NmIwYjU2ZTUzYjJkNTc4YWZjMGMzNTUwZDlkNGNlZGUyYTYwYTYzZGU0OTRiZmEyYjhlYzFiMjJjYyJ9" + } + ] + }, + { + "id": "claim_b3bf79413d71436491784a870037e2cd", + "statement": "The hops subsets property replaces the deprecated prefilters property.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L80-L86", + "version": "repo-lines-v1:sha256:20f8a1caf0a227e8f616e426428e31cb964f9ff015d09ac44a0a6a12191fe4b3:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDM3NDUzM2Q1NTczMTI0YjUwZGY3OTU1M2I5NmI1N2MyZGNjZTAwNDYyZjhhNWIyYzY5NzU3ODQ1Yzg3NWJiYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGVkNGVhNDljZjZiZmZlNDNiNmIyMWFjOTBmYzFkYzE4NjQxMTg0ZTlkNDE3NjRmZjNkZmRiMDNjOGY1MTdlYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjdmYTAxNjAxMTI5Y2RlZWRlZGNlYTcxNGZmYzA4ZThmYTgyNGRiYjMzOWI3NjRlMmQyNDgxNjRhMWE1NDdjYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTBlMzZlNjZjNDM4N2FjNGZkZTc3ZTM1NDg5NWQyZmFiMGI3NzFiODU2OWI3MjZhMjc5MDc3YWI2ODc3MmFmOCJ9" + } + ] + }, + { + "id": "claim_cb13cf95da19469898248b0004aa928e", + "statement": "DTL configuration changes require attention to already-seen input: the annotated example describes clearing last-seen via update-last-seen, while reprocessing_policy defaults to continue and automatic resets on detected out-of-sync factors including configuration changes.", + "evidence": [ + { + "resource": "repo://hub/dtl/annotated-example.rst#L191-L194", + "version": "repo-lines-v1:sha256:b82fca791a7b7b2d3fb51ab633d1242b8ab8c526631de813747a38085560aa17:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODRhMzE1MDkyYjkxMDYwYTVkODQwMzYyZjIxNjMxNWI5NDg2YzZhNTVhZTg2NGE4ZWZkMzY2ODI3YzMwNmNjNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjlkMjc3NzhmNzQxMWU2ZjQ2NzAyNTg3OWQ1ZDZlMTViZjIwY2NiMjBiYjlhY2NlYzY4NmQ4ZTY2OWQ0OWU4OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDU4YjIxYjQwNTUwZTM2ZDIxNTQxMWY4MmIzZDg3YzAwMTE4MTQyM2Y1ODU5OTkwMDYyMzllYWRhNWNmODExNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L44-L52", + "version": "repo-lines-v1:sha256:f0172db2703bd060347d503c0fdd5dff62d2032a5a3636b302a4ad8ef8bbae82:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODQ4YWM4NjZiYTI0YThhZGVmOTkyMDQ0MDlhYTEyYjk3ZDE4Mjg1MDQyNjdlNzFhNGZhZjBiMDlkNjQzZDlmNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L8-L29", + "version": "repo-lines-v1:sha256:a4b946ddb36e387d4a22d297c148b62823304265c2176c1fc46d4042a5bf3e60:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2ZTYxZDE4YzU5NzViYTYxMGJkYzNiM2M3MjE5Y2QzNDRkZWVkODU0ZmQ5MzNiOWRmMjgwMDVjZDA5MTRlMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5MmE2YzI4OWEyMzAxMGE1MTkwNGRmNTViNTljOTdlNzRhMzI2M2QwZjdmOWYzMDhmZTI3NTIwZGM2OGRjZDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ5ZDk1OWZkMGVkNDIzMTVjZjE2Y2Q3MDkyMjc1YjVjMDVkZGMxY2I5ZWYwOWU1MmNmODg3NTQ3Y2NhMDNjMGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2OGFmNDBiY2U0YWUzNTRmYmEwNDg2MmU4OWY5MGEzZWZiZTMxNjdiNjA5MjU4YjUyMzc4YmU1NTI1Mjc0Y2MifQ" + } + ] + }, + { + "id": "claim_1f2f372081924f10be0d520f38188e1e", + "statement": "Dependency tracking reprocesses source entities affected by changes in joined datasets by reversing hops/apply-hops traversal and is supported only for dataset sources, not merge sources.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L9-L11", + "version": "repo-lines-v1:sha256:a1bd2cf1485667322c1d314fe889c2b1f9886d19fe1d007a938a091067598872:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMxNzI0NzM4MWYxNGY2OGEwYmY1OTZkYThkNTdhYzJkOWY0ZTg5ZTliMWIyNGIyZmQyOTE4ZTExMWNmNjYxOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzczODk1MTc3N2Q5OGI3YzFjNzUxYTY0YzQ2MmE5YmRiOWQwN2MzNDg2N2I2Y2QzYTA1YzE5NWFhMTQ0NTllMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzc0NmY5NjM5ODUzY2I2ZGZiOGMzOWYzMTZiZDQ0ZDg4YjYyNjc1NmMwZTM2OTI3NzM0NTAwNzNmOGNjYjg5YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjgwNmNiMmI0ZWQ2M2ZlOGQ1YjhjNzkyZmM0YzZmMTNiNWViOWU5YzRmYzcwYjU3YTYwNTBjMjBmOWRiOGExMCJ9" + }, + { + "resource": "repo://hub/features/dependency-tracking.rst#L8-L14", + "version": "repo-lines-v1:sha256:752f9ae994e38b757195dcec312457813f6ed823de4486cff9a14aae1b61267b:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUzN2VjNzZlZmRiZDZlNTU3ZjQ4MjFkNmEyMWM4Y2E3YjBjYTdkNjdiNmNjNzIxYTBjMjI0YjU1ZmM2MDMxZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDYwZjVhODVlZmEyYmE5NDM1OTViYjFiYmQwMTZhMDVlMzk4MTljOWZmNGNjMjFhZWQwNTM3NTdiNTc4MDUyZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzI0MGVjZWQ1MDEwYTQyZjEwZDcyZjFhMDU5YTA3ODliN2NhZDVlN2E1NTA1MTFkYzYzM2FkYWQ5OGU3OTQ0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWUxMGM2MDA1NjAyNjMyOTgzY2QxMTJiYTVjZWUxZWIwODkwNjYxYzczNDk0NWNhZjllMzVjM2QyMTk3MjY3YiJ9" + } + ] + }, + { + "id": "claim_8e33135d2e84440cbec7e1cdeed372bb", + "statement": "Inverse dependency traversal matches original source-dataset entities, so chained transforms must preserve join-key values; namespace insertion and dynamic _S.$ids rewriting can interfere with join criteria and dependency tracking.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L13-L17", + "version": "repo-lines-v1:sha256:6419ac7275c07e7654cb59fe4c95097379760e036aaff57fd126603e42a284a7:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWI1MzgwYmYxN2MyZWFmOTQxNGFmY2VjMTVkYzEwYTYxNmUyYmIzMWE1YmQzNDIwZWUxNTliMzhmOThhYTdmMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDBmOGRhY2Y4ZWY3NzRmYjI5OGM3ZDQ0MTI4OTQyZWU5ZTZiOWM4MWFjMTU1ZGNmMmJmNDAxMDllMjU5YjM4NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWVlYzA0MGVlYTJmZjliMWM3YTA3MmRjN2ZiNmQwNjY3ZDE1ZTY5ZGU1Yjg5MmVhZmRhM2NmYTRkODQwMDYyNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_0f5a67f02380493fa53a53a98740d2be", + "statement": "The local configuration-test workflow pairs expected output and test configuration files under expected, runs sesam -vv test, allows pipe-stage selection and bound parameters for published endpoints, and advises disabling or isolating external outputs.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L108-L139", + "version": "repo-lines-v1:sha256:0fb86541b0234d1c51be8c1686785f19cfd1cc1bc63dbf5f3b5de8e1aaf4cdeb:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlYmUyOGI4NzIxYjVhZTMzMzM4MjZkYzBlZTQ3ZGU0OWQwY2VmZjdkYWQ1NjVmYzkzMTVjNDdjMTYyYTNjNTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUzNTBkYzY2Njg4M2Y2Yzc0YzRhY2U2Mzk1MjY0MWVkYTRmNWQ5ZDQ0MzI2Y2Y3YmU3ZDQzMDMxNTZkZTA2OTgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4ODA4Yjc3MjQyMmI5NTA4ZGQwYjU2ZWNjMzJjYjFhY2Q2ZGJiOGVjOGRjYzlmNDIzM2Q4ZTQ2Mjc2MDBlNDAifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L63-L91", + "version": "repo-lines-v1:sha256:dc2b0997a2854d04dafce14526c151389c4e5540d7db44e6652cccd0a80fcc3b:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhkMzdiNDcxZTcwOWUwNGU1ZmYwMGI3M2Y5MzNmNjY1ZWMyMjYyZWU1ZmM0MTc0NjBiMGUzYzU4YzZkZGVkNmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzMjExOTAwMjM3NTFhM2M5MWVlYTM2ZTUyN2UwMzRiZGRhZmNhMGY2NzFmMTE4NzY5NWViNDI3MmI4NTAxM2EiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhhMTNlZjY4NWFlNzc5Yzg4ZDJhZTkxNDFmNzlhMTNiYjQxY2JlMmExMDg5MWI4NWNmOGUwZjg0ZDFmNzVkMmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4YjkzNDE2ZGQzNWQ0Zjg0MGQxMjk4YzZhYTYyNzZiMDNmNjcxMWY0OThhN2UyYTViY2MyMDdlYmE1ZTNkZTAifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L21", + "version": "repo-lines-v1:sha256:d728920650b733582762cd2916dd09f6f0f0af185fdda8c3774bd133cdd1ef38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + }, + { + "id": "claim_50975a565a63432f994bd064c9ac612d", + "statement": "The annotated example's proposed two-order output conflicts with its final filter requiring order_count greater than ten, and its explanation reverses the filter's true/false stopping contract.", + "evidence": [ + { + "resource": "repo://hub/dtl/annotated-example.rst#L173-L175", + "version": "repo-lines-v1:sha256:e14a19d2d74d031d9e62313ba0dcd04b6988c77889ba02de3908c1decaf8bda7:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTc4ODgwMzk0YjFkMWVhMTE3YzZlOWZlZWQ4MDU3NjNiNTU3ZmUzMjRiZjA4MGM5ZjEyMmZjMmEyMzFkMTUyZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWRhMTExOWUzN2Y4N2I0MzhhYTQzZTcxMDExYWEyZmQ5MDE4M2VlNDBiOGVjMDU2YTBiNmQyNzBhYjE1MDMyYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODg0OTcwOWEzZWNiYTAxYTdkNWMyYmEwNjA2NWRiNDI0MjBmZDY1YzMzMGQ0ZWNhZDdlYTZhNTg4NjQ0NTQ4NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmI2NDMzMjM4ZjYzZDA1YTE5M2E3ZjZiOWY3Yzc0NjAzOTExOGFiOTc4ZDkzOTliZjM5NmJmNjBhODk3NmUwNCJ9" + }, + { + "resource": "repo://hub/dtl/annotated-example.rst#L26-L35", + "version": "repo-lines-v1:sha256:c7b7429a8f385c6ce8088e537ce6ab257970923d141050ef7acce283599d64b3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxMTFmMjM5YWM2NWM5ZmVjZDRmNzk3NWQ0ZWUwYzY3N2I1OGE4ZWE2Nzg1MmVhMjVkMjc5MjM5MjUxOGQyZjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZhYjkwYjI1OGIwNGIyYTZkZWVmZTY2NWM4MjE3OTBmNjE4MmExZWRjN2ViMDE3MjRlYjY0MTRkNTJmODYzZmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBiZTI4NWIyZDczZDljMTI3ZDg3NDU4YjVjMjQ0ZDMwOTBlZjg5OTJiYjVmMzVmNzY5MmRiZGRjZTlkYzg4NjIifQ" + }, + { + "resource": "repo://hub/dtl/annotated-example.rst#L63-L64", + "version": "repo-lines-v1:sha256:adcc1ca4c26c166969f13c6834c7d782294e2661a78a3613f8b0d80145f82028:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTljZjQxOGExODIwYTQ3ZTUyMDM5ODY0YjhjNTRmY2YwMjI4YTc5Yjg1OWQyY2M1MzRiMzIyYWY2MTVkNmYwMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjE5MmE5YWIxYzU4YmE2MjQwNzJmNjcwYTc2MTkwYTgxZTVhODUwYzFiNjFjOWQ1MDRiOTQ3MTZhNDc4MWFhYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmM0OTgyMTRmNDY1Zjc3YmM5ZmQ2Y2Q4MTlkMDc3MGI2NmRlMjg2YWRkZmI0YmE2Nzc4MDFiYWMzYTYzZDJiYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGZjM2VhMmQ3MTUyMTA0Y2I5YzA3ZDk4N2FhODlkYThiZDQwY2UwNmE1NmQ4ZWM1ZWQ4ODI5NmMwOTg0MzhlNSJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L576-L599", + "version": "repo-lines-v1:sha256:1efed2f237b5e87aad728be01647006e8c410e0330e9ef79dfdb303187a10eea:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRjMWVmMDdkNGVhNmQwZTlmZjEyZjBiMmMwOWU2ZjFjMjRiYWIyZTM0M2FjNzcxYmUyZmI1NmVlNjYyY2Y5MmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1NDhlYTkyNTU4MTZmNDgzMDMxMzljODIyM2M4MmRmYjVhNGFjMDRjM2E3MzlmMTEzNjFkNjY4ZDc3ZTU5NWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYzYmUzOTQxNDc1ZjFkZjRlODE2ZWZlMWNjZWFkNGVmYmExYjlkYTU5YWRjYjIzMjdmYTJiZDZiOTBmMTM5NmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEyYWJmN2YwYmNiZjMwMTVjOGRjMDkxNDFiMWU3N2I2YzQ5OGU1N2ZjZTljZGIwNDZjYzBiY2MyMmZiMjcyYTAifQ" + } + ] + }, + { + "id": "claim_451a0eb7e7ad4ab4b51b40d42905ddc9", + "statement": "The annotated example's proposed target shows numeric order IDs, while its joined/transformed lists use string IDs and the order rule copies _id without a cast, so the displayed target does not establish ID conversion.", + "evidence": [ + { + "resource": "repo://hub/dtl/annotated-example.rst#L124-L165", + "version": "repo-lines-v1:sha256:01dfd9357a3a6947d8301487091ef3d8a215d68700b534ec674744b710cd41c8:eyJzZWxlY3RlZExpbmVDb3VudCI6NDIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlmNzU0M2MwOWY4OTY1ZjM1ZTg1NWYyNjc0MWZiYTBjYTYwOTQ2ZGViZmQwODQzMjYyNmE3YWVmZWYzMjJhNGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzYjEyNDI5YzA0NWRiMjA4NDRlYmEyOTA5OGVkYTg4NzhiMGU4ZTdhYTc1ZGJkYThhMWU0MDUzZDA3ZmUxZGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZhYjkwYjI1OGIwNGIyYTZkZWVmZTY2NWM4MjE3OTBmNjE4MmExZWRjN2ViMDE3MjRlYjY0MTRkNTJmODYzZmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUwMDYwZDkzZjZiMTdhYjU5OWQzNzg5ZWY3ZTRkODBjYTM3NWQ2M2JlODZlNWRmNjY3YTUzZGY2YTQ0ZWNiMGEifQ" + }, + { + "resource": "repo://hub/dtl/annotated-example.rst#L26-L35", + "version": "repo-lines-v1:sha256:c7b7429a8f385c6ce8088e537ce6ab257970923d141050ef7acce283599d64b3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxMTFmMjM5YWM2NWM5ZmVjZDRmNzk3NWQ0ZWUwYzY3N2I1OGE4ZWE2Nzg1MmVhMjVkMjc5MjM5MjUxOGQyZjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZhYjkwYjI1OGIwNGIyYTZkZWVmZTY2NWM4MjE3OTBmNjE4MmExZWRjN2ViMDE3MjRlYjY0MTRkNTJmODYzZmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBiZTI4NWIyZDczZDljMTI3ZDg3NDU4YjVjMjQ0ZDMwOTBlZjg5OTJiYjVmMzVmNzY5MmRiZGRjZTlkYzg4NjIifQ" + }, + { + "resource": "repo://hub/dtl/annotated-example.rst#L66-L69", + "version": "repo-lines-v1:sha256:f1616596b10b103c3f962a79713ced6f24f1578932445ca716f36d375d77ad83:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGMxMGJmZjg4ZDcyNGFhZTBkODA0ZmM5MTdlZDcwMjU4NGJmYmFiZGJlZTA0MTBjODJkNzljODk1N2E2MWRlMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYmFhZThhMGNhNzZmOThmN2I3ZGM3OTg0OTUxZDYzZTU3ZGIzYzY0NTU3OWNhNTFiYWQ2YTUzOWQ2MTRlZGJiZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzJjODkxNWVmMDg5N2Q5YWNjOGMyM2UwZDkxNGNjODExMzM2NTZhZjQ4ZjQxYzAwNjA5MDJiM2E0MDhjNjc5YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTBmZDI1NGM1MWQwOTgxZjQyZjg3OWVkNTk1NTk0ODI0MGM1NWRkZThmZTYxMGYzMGI3Zjg4ZTYzZmIxMTg5NCJ9" + } + ] + }, + { + "id": "claim_10d1742b3850432aa654b021bc24e5b5", + "statement": "The path overview's quoted-path equivalent contains an extra comma, and the dictionary path example contains a malformed list with a missing comma and None instead of JSON null; these displayed examples are not executable JSON despite the documented rule of ignoring non-string path steps.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-dictionaries.rst#L324-L326", + "version": "repo-lines-v1:sha256:9b169c391b598f73518e9c9ac0c307180adf6fec1912bd7241db83ac1db8191a:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTE4OTI5ZDc3ZTAwMTIzYWNlNzliOTJjM2FlZGNmMjYwN2E3YTk2Mjc5YjhlYjdlYzRhNDg0ZjM0NmE1N2Q4MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQ4NjY3ZmVjNGY1OWE2ZTQ2NWVmY2FkODY4N2YyNTVhM2ZlZjA4N2FjZTJlYTA5M2QyOGU2MTBlN2JhYTEzZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzY1YjE4ODliNGUxYmNjYmI0ODdiNTc5NWNhZjM5MTM0M2U3YjY1NWMzMDYyOTBlMTk5M2UzYjNiYWE2ZTc2OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWI0ZmE3ZTk2NDY2ZjQ3MWQzN2NkMGIyZjdjOTAyMGM5NWUyNmMyMGMwZTE2ODkxOWQwNjdmNWU0NWU0MzRhZCJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-dictionaries.rst#L350-L356", + "version": "repo-lines-v1:sha256:a16cf3dfb5dfb81e9016aaddb5466eebac50d07a6b91ff07fa0b20f7b552e101:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTc4OTI3NDA2M2JlYjdmODFjODY2M2JlOTQ1YTIzMTE1MTc5N2VlYTllMTgyNDdjYWRlOTQ4YjI2NjlkMzc1MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGI1NjRhMjVmNzMwMWZhNzg0NjQzYmRjMjJjZGViNDg5OGY0ODliNjFmMjlmODI1NmY0Y2VkYjJjZDU4ZDA2ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGQzYTI3M2Q4Zjc4NTQwMDVkMTliZmE1MTcwMTBjMWYyOWZjZmY1YzZmNzBmNTg1OTg2NTMyMzQ0ZGE4Njk5YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2JlZjMzNTFjN2VhNGJmZmI2OTgzNzMyM2I5ZWZiZDljY2QxMDYxZDBmMjJhYTRkYTFkODEyZGEzYmNmMjAyZSJ9" + }, + { + "resource": "repo://hub/dtl/paths.rst#L19-L20", + "version": "repo-lines-v1:sha256:79b463c340ea7567a62111dc0c2d6d4eef8bd9a78703452f9217a40de56bf4ee:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGVkYzVmZmMyY2YyMGY3Yzg1OTdiYjNiNmU4ZjVkMTc1YzcwODM3ZGE3ZWVmODkxNDIxZDQzYWNmNGNlOWMyMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjViYWE2MGE5OTc5NTg5YjY2NWQ0NGI1ODNjMThkMzFjMDkyNTE1OTMzMzE1MjhiMWJhYmZhNmY2ZjA5ZTgwNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjUzZjllMDJjZjQzNWU3NzlkMWRhMGUwZmVkNjQ3MTczOWQwYTVmZmJiMjZjY2E3YzY3OTU4ODE2MzUwOGJhMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2EzNTdhMmJmNDBmOWE0MzdhY2MxOTMyMDgwZTc2NWIzYjU1Yjg3MjAzZDkxNjI4NzkxMDUzMGY0NDU4MjQ0ZSJ9" + } + ] + }, + { + "id": "claim_6489d47e4c98483fbb84b9c8cf8dc790", + "statement": "tuples constructs products of argument values into tuple lists and is useful for composite join keys, which the join reference recommends over multiple individual joins for better precision.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-misc.rst#L128-L165", + "version": "repo-lines-v1:sha256:62d44fc9cd34d63cbd88e5cafccaa41834976e4b0d9d88587ba1412341fcd04e:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg4YmUyNGI5OTY3ZWU0OWUzMDBjYzY4MjJlZmZmNDlkNjY1YTQ3YTZiZmMyMTMxM2U2NTNhMGVmZjhlNTdmOWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwN2U1MWE1M2Q1NGI0YzhkM2RmMTA4NGQ4ODkzNDhkNWE3NTQ2OTAzZDlhZGRlOGY0NDMyMzQ3ODBiMTI5MTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFkMzljYWMwMmM0Mjk0NzhjNmFlOTNjYzE1Nzc0M2QxZmJlMWFmZjRjMzBhY2I2YzViNzFjNzZiZTdlZjJjYTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjcifQ" + }, + { + "resource": "repo://hub/dtl/joins.rst#L46-L46", + "version": "repo-lines-v1:sha256:6fdf332acd7124e4ffb34f55615e4324baf3d2900339aa362e8db8a86171ad02:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmZkZjMzMmFjZDcxMjRlNGZmYjM0ZjU1NjE1ZTQzMjRiYWYzZDI5MDAzMzlhYTM2MmU4ZGI4YTg2MTcxYWQwMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmZkZjMzMmFjZDcxMjRlNGZmYjM0ZjU1NjE1ZTQzMjRiYWYzZDI5MDAzMzlhYTM2MmU4ZGI4YTg2MTcxYWQwMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmNmMTgwZDQwMzIwNzA5YmE5MjRlNzk4ODI1NmY2ZDliN2FjNTYxOGZiMGNiMTcwYzc3M2RkYjhlNjE1NjFkMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWY4ZGZmZjEzMThmMTM3ZDI0NjAxNzQ1MGI2MjcyODU5NjlmMjI5NTYxZGY5OWJiMmViNTFkNTcyNTY3YmIzZSJ9" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/concepts/entities-datasets-and-identifiers.json b/openwiki/.claims/concepts/entities-datasets-and-identifiers.json new file mode 100644 index 00000000000..76393bf43ba --- /dev/null +++ b/openwiki/.claims/concepts/entities-datasets-and-identifiers.json @@ -0,0 +1,1050 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:429b27019d4efcba0c222deb2abdbeefff178fbbdd41eb0eb946b6064f7fccfb", + "claims": [ + { + "id": "claim_82548c326ba3467783003529ec04796a", + "statement": "Sesam represents entities as dictionaries with string keys and literal, list, or dictionary values; an entity's required _id is a string primary key, not a typed NI or URI.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L201-L212", + "version": "repo-lines-v1:sha256:76e32da288e343b7decd4a133e494ad13812b987018f41e342977d522392751e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU0YWMyODUzNWI4ZDhkZmQzMWI5NWNkOThiYWU0NmVlYzFmNjU1MWIwNDBjZThiYzU3MjRlNDdmYTcxYTMyNWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI0MDFkOWVlYmI0MGM0ZDNhZTUzMDhhMWMxOTU5NmY1NTU1YjUxYTQ5MzlmZmRhMzc2ZmRlYjYxYzk0MjBkMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE0NmQxMGYyOTlmYmNkYTFlZGJhNzI0MmUwZjM2MWQzYTFiYjQ5MTFhMTMxOWZiMmYzYzIwMDI1ZWFjYTg3MGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ3MzcxNzJhODUwZTAzMmIwN2E3MDg0NzQ5MWI4ZmRlNDU1OTBkOWMwNWM0ZDZkMmNiMzA4MGQ0MTRkYjQ4MWIifQ" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L60-L64", + "version": "repo-lines-v1:sha256:1420a14fa48f912a6a404c72d963fea5a900a4af76a23928a00f32193e21fd18:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWQyZDEyMGNhZjU4ZjM1M2IzOGVlYjQzN2VlNWMzNDMzYWRiY2FhOTg1OTg2Zjc2MjM5M2I5ZjljNmRiZjdlYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjdiNTNmMmFiMzlmYmI2ZTNkNzhjMzg0ODY2ZmE4Yjc4NjI5MGNiOTY1YmU0OWFkYjRmODQwZTM5NjEwZmU0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDY1ODY3MTg5ZGQyMDRmYjU3MjM1M2M3NzNmNWJlMjQ2YmYyNjlhNDEzYjY0ZDlhMDI0N2YyNDE4YjVhNzMyNyJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L7-L25", + "version": "repo-lines-v1:sha256:35895767a4bc7b0255aab8297b1b868f0436b4c47d82890cb41895952891035f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJkNzYzYmMyMGRmNWY4YjJkZDM0Yzk5NWExODBlZTY3ODVkZDhlODVmMDgzZWQ5YWQ5YjQ1ZDM4NWMwZTA1N2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNkOTIxYTdkMjkwZTE5YjZhMTA2ODc2YmQ0MzUzMDY3ODgxYWExOTJiMjA3NzYwZDZmNDg5ZTNjMWYyNWM3OTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUwMjYxN2NlOWE1MWMzYjJhN2FkZGVmZjJmZTZmNDU4YzRlNmRjZGRhNzRlYWUzZDczMzRkNzAyZTRmNDgyYjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg1OGE1ZGVkNmY4NjAxYTNlM2U5ZGUzY2U1OTI4ZWRkMjQwYjIyN2UxZjhhOGJiNzQzZTgxOTg5ZGZhZmNlZmUifQ" + } + ] + }, + { + "id": "claim_197f105bc1984c8cbf08862d6f77bb8a", + "statement": "A dataset is an append-only immutable entity-version log supported by primary and secondary indexes; a normal dataset write appends only new or content-changed entities and drops candidates identical to the latest version using content-hash comparison.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/datasets.rst#L6-L10", + "version": "repo-lines-v1:sha256:5b5ff563c911da552ba50940e6872d6af3abffcd29873c0afb06af8434e561d6:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWVmZmM4OTA1ZTNmOTdlMDIyMmM3NTk3NjA1NDcwYjdiMWFjZjcxNzMzYTA5MzBmZDAxYWQyMzhjZWFmMDJkNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzIzNDdlMGJlYTcwM2MyOWY2NTAwZmFjODE0ZmI0N2NjNWQ5NTY5YmU5NDQ3NmNmZDQ4Y2Y2YmZlZjllOGY4MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2MwOWRlMzcxN2Q0MDllZDU5ZDAzYzM3YjdmMjZjYzI5Mzk4YjYyYTc0ODk3NjE1YmUyNjAwYjg5ZDAxYTJkMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDU4MDQwOGZkMGYxODllMGUwMTA0NjcxNTRlZjRjZTQyYjBjZjVjZjQ4ZDk3YzA4MjFlNjI1MzRkOGI2YjNjZSJ9" + }, + { + "resource": "repo://hub/features/change-tracking.rst#L10-L18", + "version": "repo-lines-v1:sha256:a2ce6164c45f60527a5ff3a18870c7f0b6ca944541ae5cdf490cbbd9424bbaa9:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODdlZGYyODczZDBiNGZhNjkzOTBiNTJlNTcwZTE5MmNhNGVhODFhYWRkZDlhOTkzZTBmNDRhMjBhNWNiNGVlNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODkyNzc0NmJmNzhhZmNkNDgzZWMzNzJlNjliODg2ZDZhNGU2YzFiZGNhMmQyNWU5MGQ4Y2EzODUxYWNjNTIzOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjM1N2U2YmM2M2I0YWJjODE4OGI4ZTcwNGNkNWI1ZmU2MWU4MjQ0OGUzNWJhNzkyMWE3ZDk4MGY5M2E0OTY3ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWRmZjM1OTljYWIyZmExMGEwZWY1N2JiNGJjNjMzNDJjY2JjMmQ3ZTNhNzYwYzA2MmI5YzhkZjJiOGU1OWJmNSJ9" + }, + { + "resource": "repo://hub/features/compaction-feature.rst#L8-L10", + "version": "repo-lines-v1:sha256:613edaa2efc6ccfeb889f952823222a47139afd422c3eee2cacb64040e967a9b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTJiZjkyNTRmYmEyNmFmYmY3ZjljMGQwYzFkNjlmYzAzMjI4MzM2OWY1ZmIyNjdmNjhjYWYzNzhmY2M1ODBkYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTY3ZTU1N2U5ODEyNWUzMzRkY2I3MmM3Y2YyNDYwZjNjYjViNTcyNDFhYmY2OGM3MjE5MDI4YTlmMDUxYjY2MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWY3OTMzZjNiODdjYzlhYWZkOWEyMmQ0M2MzYzM3OThmMDEwNjA4OTk4NDYyODFmZmU4ZDYxMWZhY2UwY2U5NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzQwYzBiMjViMDFiMTc3M2VkMTg1NWEyZGFiMzRiNDcyNDcwZmNiNjYzODc3NzdkMGU0OTQ1OTc1YzJkOGE0MSJ9" + }, + { + "resource": "repo://hub/images/dataset-structure.png", + "version": "repo-file-v1:sha256:7a59ced9cb479ea85c9275a8600f8e6a666713f9e6fb3946ef13f9a0c608792a" + } + ] + }, + { + "id": "claim_c64916de1a614b62a901d7549980ef5c", + "statement": "A scheduled pipe pump pulls entities from a source, passes them through transforms, and sends the results to a sink.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/streams-of-entities.rst#L26-L26", + "version": "repo-lines-v1:sha256:7423b68954875d9f59c60eed9877c9455ab2dc08bfbbcb689fdd705b2b8f8f88:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzQyM2I2ODk1NDg3NWQ5ZjU5YzYwZWVkOTg3N2M5NDU1YWIyZGMwOGJmYmJjYjY4OWZkZDcwNWIyYjhmOGY4OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzQyM2I2ODk1NDg3NWQ5ZjU5YzYwZWVkOTg3N2M5NDU1YWIyZGMwOGJmYmJjYjY4OWZkZDcwNWIyYjhmOGY4OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjgxY2E3Mzk4ODk4MDJjMThmZDM3MjVjM2NlZWJkZDU3OTY3MGIxYmM5YTFjYzJkZDI5MTBhZjY2N2MyODRhNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzQwYzBiMjViMDFiMTc3M2VkMTg1NWEyZGFiMzRiNDcyNDcwZmNiNjYzODc3NzdkMGU0OTQ1OTc1YzJkOGE0MSJ9" + } + ] + }, + { + "id": "claim_d71e6436bf8f429faffd766aea0720ce", + "statement": "Sesam is primarily an asynchronous batching and stream-processing system; its Service API is not designed or guaranteed for highly concurrent, low-latency, high-throughput user-facing applications, for which the documentation recommends a dedicated publishing system.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/streams-of-entities.rst#L29-L31", + "version": "repo-lines-v1:sha256:a4687f186dcecf812846f0e8e8bc71a95fb916a4740fb8d65dc686f19b7bc7b5:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDBhYTMyYjYyM2NlM2M3NGEwNzY1MzllZDI5OWJhMmQ4ZjFlNGQyYzYwODdlODdjNDJmNTQ0OGRkNDgwNDdmMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmE0ZTc3NDkwZjY1ZjIxMDAwMzkzMjVmMTVjYzAwNGUxM2YwMGFmYWU4MDExNWZmYzU1ZjBhM2VhZjFlOWJiMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_bde7482677f44f5f90f44d4ae852db56", + "statement": "The normal dataset sink defaults its dataset id to the pipe id, creates an absent dataset when entities are written, and prohibits dataset ids containing / or targeting system: datasets.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L31-L44", + "version": "repo-lines-v1:sha256:52aa3efc9485cdea68e52c669c2f1daa7694f01fb88f7a6b52d77839701372d0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU1N2MyOWFkY2JjMDkxNjhlODFkN2Q2Y2UzNTMxNWM4YTFlNTNlZjVkNzA3MmYyODZlYzQ0MzAzMDcyNDU4MjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk5ZTU0ZTFmMDFlMTJjYjA1NGJmZjlhMmJhZTEwY2JmYWNkNjQyZjVjZTZlNzEzM2I2YTA3MDc4OWU0OWQ2Y2UifQ" + } + ] + }, + { + "id": "claim_e1ca49d464a74e4e82fa3bb32c05f201", + "statement": "A dataset source requires a dataset id and defaults include_previous_versions to false, returning only the latest version per unique _id; previous-version reads cannot recover history reclaimed by compaction.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L91-L100", + "version": "repo-lines-v1:sha256:9345733f8333b3a9a7292a5696014e6eaae4a188034eb07f05175b85507a98b4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZkMjZiNGI0NWYxOWU0NmUxNjYyMWNmNzk1MDRlZmQyODhjMjAzMTRmMTI2YjU1NmExNDQ4Y2VlM2MwMzNhYWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJmZjk5MjRkMWQ4MTRkOTJmYTVjN2E3NTc3NDdkMWU1MDRjZTdmOTZmMTVlYzY3ZjhlMzEyNmYzNzM1MDM2MDgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVjN2YzNzYzMTgzMWI4NzhlMzg1ZGRiY2U2YTc4NzdlYTA5ZmI3OWUyMTk3MjE4ZDg5NDVmY2RkNjIyNzA3OTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc4OGFjNzNlMzEyZmU2YzlmY2I0NThiNWE0YWVmNzc0NjAxNDg3NzBmNTcyNTY1MmZiODkwZjNjOWQ3MDM1M2QifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L35-L39", + "version": "repo-lines-v1:sha256:c4713085110bd110e94f3c44aaaafc049235fa858ee2155b76a8be07784605e0:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTU3YzI5YWRjYmMwOTE2OGU4MWQ3ZDZjZTM1MzE1YzhhMWU1M2VmNWQ3MDcyZjI4NmVjNDQzMDMwNzI0NTgyNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODA0ZGVlNjBmYjlmNjU5YTgwNzA3MGUxN2NiNjViZGZkMDliYzZhZGU4ZTIzYzc2OTAxYjA1ZjA3NDUwMWFjZSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L95-L99", + "version": "repo-lines-v1:sha256:9c8b229fa025af093a71349e59bb5be45388c2d6a5977f63fa3ff5646956935e:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTdlMDU0OTNiMGZkN2M4NTVmMTViODc4M2ZkMGM4MGJlY2UyMjFmZmE5NjNmYWQ5NDljY2YxMGUyMmU3NmIxZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTA3NGI2MmMyYWUyYjRjYmEzMWE3MjFlNGE2ZjIxMmUxNWU3MmQyNTYxNzZkZGVhZDE1MDdiYmVkMjg4ZWYxNyJ9" + } + ] + }, + { + "id": "claim_491c12dfafb7466b93386166609f4140", + "statement": "Dataset sources have fixed supports_since, is_since_comparable, and is_chronological values of true; the public _updated contract allows string or integer tokens, requires consumers to treat them as opaque, and permits passing them back as HTTP since.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L72-L79", + "version": "repo-lines-v1:sha256:ef9d11140cd9b18c16ebd5ffe115f213641977af53a37431b7c1eb326143301e:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDhkYmQwMTk5MmQ2ZDhmNjRjNjRlYjEyMzg2NzkyYjJhMmYwMjlhYTBmYjNkNWU1OGE1ZTdlNDc3MTQ1YTZiMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDRkNWRkODMyNDM0MTEyNTA1YTlhZTRkMTAyY2I2NWFmNDMyMWIxMmI5YTVjZmQ2N2Y1MWRlNjIyYmM4MDA0NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGIxYzBjYTdmYjRkYWFhYmNjZTlhZWQ0NTY1N2MxMTQ5YjUyZTk5MDJlOWU2OWEzNjc0ZDZmMTE5MTYxYzZkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjUxN2E4Y2QxNGIzOTM3YjEwODgyMDkzMGI2OTllNTg1ZGRjNjY5MmE4MzYyMWJjNWM0ZDAwMGE5MDYzNjczZiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L138-L157", + "version": "repo-lines-v1:sha256:f255527102f793601c0f0887c71b0e2da9dad429b1c9d3bec267d073c897c8ed:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBkNzVkZDRmYzkyZTRhOWI2MTE0Nzg3OTg2NmI0MGRkYmI0Y2FiNzc2OTM3NDc0YzViZjE4MjBhMTVkZWJiZmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM3MzM0M2FiNThjMTgzNzg2NWQ3YmI4M2I0ZWJhMmI2MWYxNmM3NzZlNmQ5YzNhNjE1NDk4YjdlYzMyZmM5MDQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUyMTE1MzFmMTk2YWNjYWYwMmMxMGI3NmFjMDY4NjU0M2ZmNTcyY2UyMWMzMTU4NjVmYmMyYjg4N2FkZTdjYTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRiNjcxNmZkODg4ZGM3MTkwODFkNThjNjdkZTI2ODBlYjRiOGUzMmU0MWZmM2ZkMGZiODI4NmRmZWY5MDcxZDAifQ" + } + ] + }, + { + "id": "claim_51a1aa6a1cf846dc92dd8dae7203bd81", + "statement": "Normal dataset writes assign dataset-local incremental _updated values to versions, and a successfully completed pump saves the newest processed _updated as its since position.", + "evidence": [ + { + "resource": "repo://hub/features/change-tracking.rst#L20-L20", + "version": "repo-lines-v1:sha256:cd1fa8ece98789f7886a6b0e8eead19546c39b3adf17d22c51509ba8afe6c651:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2QxZmE4ZWNlOTg3ODlmNzg4NmE2YjBlOGVlYWQxOTU0NmMzOWIzYWRmMTdkMjJjNTE1MDliYThhZmU2YzY1MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2QxZmE4ZWNlOTg3ODlmNzg4NmE2YjBlOGVlYWQxOTU0NmMzOWIzYWRmMTdkMjJjNTE1MDliYThhZmU2YzY1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE0ZTU4ZmNlZDUwNDViMzExZDMzNzYxMDI3NWYxYWVkNzViMGUyYTVkZmFkMzY2MmVkZWJlNTIwOTcxYjZiNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzVlMjUyZWFhMDgxZjQyN2QzM2ZhMWMxMWNhOTViYTk5OTkyMDcyZWJkNGY4YmJjMWJhY2E4NjJlNWI1NTc1YSJ9" + } + ] + }, + { + "id": "claim_e15e7a7e3b0c41ea861d03a1adf57f20", + "statement": "A sink dataset becomes populated when its initial offset is set; the default if-source-populated policy waits for a populated source and consumption of all source entities, while dataset source require_populated_input defaults false and gates execution on population when true.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L46-L63", + "version": "repo-lines-v1:sha256:4268ebfc6c40260783c2011f564082f7d69930d7c4674b75c5de064cd2bf58d0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVkMDEyZDU3OWEyZjMzYWFmZGVmOTE1MzczYjk4YjIwMzBmNGI1NGEyNzYyYjEwNjIxYTIzYTM4MjlhYzAzOTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU2NzBmZjUxM2MzN2Q0NjU0ZDk1OWVmMjk0YWM1NmE0NTBmMDZkMmU5MThkMGExOWZmMzBhZjgzNzc1Mzk4ZDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNhMWIzYmE0ZTYzNDFhYTE5MGYwMTgxYjZhNWY4MjM1ODM1OWJmNzIxMWVjNjE4ZTRmMTJmZDUxMzk4YTRiMjEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L87-L93", + "version": "repo-lines-v1:sha256:356cc04ecca28e377abe51250f02bcae6915b3627978ac034e56a22a9d42567f:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2FkZjFhM2MxYzJhYzliZTU2YjE0OTIyMzE1YTY2MzQwNDcxOWIwZjgzZTJjNzFjNGVhZTg5NDIwNmY5NDc0YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTM3OTA3MGMwYmNmNzUyNmRhOWE0Mzk2YTBiMzBhODgzY2Y4ZWUyNDMzYjZkMjJlZWQwNDY0OGFhM2M4YmY0NiJ9" + } + ] + }, + { + "id": "claim_b075390a269a4a16ba16bf6a85ea19fe", + "statement": "Dataset sink enable_optimistic_locking compares incoming _updated tokens with previous versions; if any token does not match, an error is raised and no entities are written to the target dataset.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L96-L109", + "version": "repo-lines-v1:sha256:ef1fcc3eecfecd346518b9da8682ef745d4b01e284c2a019d89393ce78cd8506:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE2NzUzYWE2MjMxNWNlYmEzOGE4Yzc0MTA5NjkwOTU5ZTMwNmY2N2JmOWE3MDQxMzA0NzZlMDk4YmJhZmIzOTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjExOGE1ZmRlMTcyY2FmODY4MjRkMGY2OTkwOWFhYmJmZDc2NmNkZDhmMmVmYzkzNTQxOTE0NmNhMTgyYzljNzYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY4M2FiMmNiZmIzNWU2N2VjMWVkZTU3MmUxYWY4NTlkNDE1ZGZlZTU5ZTUxYmI3YjM1NmUxM2RmODk4NzgwYTAifQ" + } + ] + }, + { + "id": "claim_70ec873f32fd4460ba1b8e3d1bc2c585", + "statement": "The replicated_dataset sink preserves upstream entity sequence order and offsets unlike the normal writer, but does not support deletion tracking, entity re-posting, or circuit breakers.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-replicated-dataset.rst#L6-L16", + "version": "repo-lines-v1:sha256:1f470800d331ddc8c74225b8750aa98e46d63e73e210cb6f7a4d719d0b33e902:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4YjcxODk2ZTMyM2QwY2YyOTc4MmY4YjIzN2UwZTQyMTU5NTg4NDMxYzZkMWNiMjRjYWY0M2QyMDViODcxYjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhOGEyZTcwMjFlZWJiNWRhZjcwMzhmYmZhOTUxZWUyN2FhYWM4ODNkZmIzODdhN2Q2MGQyMDYwZTNlNzA5MDAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIwMzZmMTdlZTIwM2UzZGZiZWNmOWJkMTUwYzNhZWYxNmEwM2ZkOTAxZjkzNzg2Mjg0YjIzYTY1NmMxYTA5ZGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI3ZTNjYzhmYjIxNWQzNDU5ODA0ZWQ0MTM5ZjhlMjIxZjRjZWFjN2I4NDNmODk1OGI5ZmI4YjQwZDc1ZTRjYTMifQ" + } + ] + }, + { + "id": "claim_b8adbae0a24d42e4a3cfa92825709c9b", + "statement": "JSON Pull returns entities as a JSON array even for a single entity; since starts after a supplied stream offset and limit caps the number of returned entities.", + "evidence": [ + { + "resource": "repo://hub/json-pull.rst#L29-L62", + "version": "repo-lines-v1:sha256:86dd19b7ec8b4945835af29dfd3c7ae7469575589f8b1b42e88211b17dd9956c:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1NjBjMTg2YjliNTc5M2JiYmE0NWE3YWEzNmUxNDkxZWQ3ZmYzOWQ1Y2VhMGQzMWQ0OWQ4N2ZlMzk4NmZkZTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2MzU4ZGExN2I4ZTkwOWUzNzQ5ZWE4ZmIxZTU0NGYxZDkyMGQyYzZmN2UwMTEzYTRiNzAzMmI1MzRiMDdiYTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJlODIzNGEyNGY3ODUzMGMxNjhlNGJlZDBlNzE4NzIxMzlkYjk3NDU2YjUwZDgxZGMxYzk5OTcyNzNkN2ZhNmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY4NWNhODk1Yjc2ZWEyYjZiNTUzMTAwNGM3MjNhMDQ3NDBhZDIxYjViNmVmNjFmN2M4YjJkNGI3Mjk3ZWRkMTkifQ" + } + ] + }, + { + "id": "claim_b778639400f44801b2965fd9ce36ef85", + "statement": "X-Dataset-Filtered marks a filtered JSON Pull stream in which the entity at X-Dataset-Max-Updated is not guaranteed to appear; the latter header is the highest committed dataset offset, JSON encoded.", + "evidence": [ + { + "resource": "repo://hub/json-pull.rst#L78-L82", + "version": "repo-lines-v1:sha256:32d6a9eb238eaac8b89318f5eea082d481c846f201c01a191342f312c6c59f5e:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTdjNGNhZWVmYTgxYjIwZGFlZmIxOTQxMjU4MTc3ZDI3NTg2NjU1YjQzNjY0Zjg0MjNjZWNkMjhhZjIxYzhhYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTU4YTkwMGFkN2UyMzg1MjQyMzQzZTQ4OTIxZmFkZjE1NjUxYmIxNTM0MmFmZGMzNGFkMTY3YzVmZWJkMTE4NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTViZjU2Y2FhMjFmMzgyYTQ5OWQ5MGYwYTE5NDE3YTVmMmZkM2QyOTVmOWMzYWEyOTBiYmYzOWVjZTlmNjE1ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjkwZWU5NmQzMTFhMzdlZTE2YmFhYzRjNDhiM2NhZDA3M2NiNjMwODdkNjZkMGU5ZGZiYmMyMjM4NDlkZDIxYyJ9" + } + ] + }, + { + "id": "claim_d3c0831cd54e4962b64badb0061b4d4f", + "statement": "Dataset recreation assigns a new generation UUID exposed through X-Dataset-Generation; backup restoration assigns a restore UUID and exposes the highest committed offset at restoration through restore headers.", + "evidence": [ + { + "resource": "repo://hub/json-pull.rst#L84-L96", + "version": "repo-lines-v1:sha256:553560646424a120cd4805d3e3709048385db7701bf4dd45baad6b7c75be46ea:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdlMGY0MTdhNDc2ODNiMDBkMDI1Y2YzYjEwYzgzODliMGQxNTQ5ODA5ODU1ODVkYjdmZjIxNWIzNzZiOWNlMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNiZWVkMTQ5NGY4YTY5MWY1YTNjYjI2ZDYwZTUyZGY3ODlhNGQxMGQzY2QyMjMwNTU0YmNkZjNjNWEwOTA2N2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ1YWU3Y2QzZDE5Yjk0M2Y4NGE1MGExNTllOWE1ZDFhYmI4YjAwNTIxNmI1Y2RiMDU0NjBmZDIzODliNWU4YzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM5Y2Q3YTZjZTk1NmE5NWE2NGZhODI1MmUyMGVkMzdjYmUxNWE4YmM4M2Y5NjRlOGVjY2M1MGMzZDg1MDE0MDEifQ" + } + ] + }, + { + "id": "claim_2f00d8e0b1644b5c8ba5640074e5b0aa", + "statement": "Secondary indexes are maintained automatically and declared by hops join expressions, subset definitions, or explicit dataset sink configuration; orphaned indexes currently require UI or API deletion.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/datasets.rst#L19-L26", + "version": "repo-lines-v1:sha256:ad193d9874e1f68818125740ef84db57034fadbd0ef465bb759aad10a16729fe:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODQwZjkxZmM1YzUwODYyMmQ4MjlmOTdkZGZiNDRkOGE5NDJmYjUyYTVkNzI2M2U0ZWMzY2ZlZTQ2MmNjMDk0NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGI5YjVlOWY1YzI0ZmFhYjgyOGY0MzNlNTA3ZWRmMzZhYmJhNjViNDVjZGNiMGNjMGMzZTQ0NzU4MDFhZTAxMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODY4ODA1MmIzY2NmYjMyMmEzYWNiZGYwMmRlZWYxZjY5Y2FiNDI1ZDYwMzIyMmEwZWYwYmE0YjA3NGYzNGEwZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2E3NjA5YWMxYzYwMjM5YjdmMmY2NmRhNmEwZWUyODRiNWQ0NjI4ODEzNDZlNmI5ZGU0MmI4NzQ4YjExNzRhYyJ9" + } + ] + }, + { + "id": "claim_e298c125975042748607499ffacdb6c0", + "statement": "Dataset subsets behave as datasets in sources and hops and are implemented by secondary functional indexes, with one subset per indexed key; almost all deterministic DTL expressions that do not reference other datasets are supported.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/datasets.rst#L30-L37", + "version": "repo-lines-v1:sha256:cff100835b59268670ddaf95d2ced54ccecabee6ee33d0170d53a80c6c49d089:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2ZjYmQ2YmQ4OTE4NWY1OGI3NGZiNTYzNDQ0MGM0NTRiNWQyNDEzZGNkNTFjOTFkOWViZDc2OGM4YmJlZDY2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjhiZmZmZmQzNjA1MjUwODJhMjg3OTk5ZTA2YzQyZmZiNDExNjRmYjZiZTRiOWM0NDg5NWIwZTk2ZGQ2NDE4OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2E3NjA5YWMxYzYwMjM5YjdmMmY2NmRhNmEwZWUyODRiNWQ0NjI4ODEzNDZlNmI5ZGU0MmI4NzQ4YjExNzRhYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_27839be036fb4626bc7c3511846fac7f", + "statement": "A dataset source subset must be an eq expression with an index expression on the left and a literal value on the right; version 2 indexes are required for subset delete support because version 1 indexes do not support deletes.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L41-L49", + "version": "repo-lines-v1:sha256:dcbbc90dcec0546dbdaee717ab484e6768f95fb92f3f2d746686384e4e04f185:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWQ0YTQ0NjY4NzQ1ZDBlM2E0OTFjOGFhMTY2NGZjOTU3NDQxYTdiNmU4ZjA3MzdmMGQxYWQyMTcwNzkzNmQzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzE2N2NjYTNhODczMDdlMjkzZmQwYWNjMGFhZjhiMDU1YzAzZTkzOTNhNDdiYjg5OWFlYjVlMzgxZWE3MjZlOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2Y3ZGJhNGQ2ZmFiNjU4ZmI2YzBjMmJmYTQ3MDJhNzJmOTRiZjI4MTA5MWQ3NmIwNDVmZjYxMGU3ZDQwZWY2ZCJ9" + } + ] + }, + { + "id": "claim_3fcf199992354327ad7253fb91f99144", + "statement": "Subset equality follows join equality, where any overlapping scalar or list value succeeds; null values and deleted entities are not indexed for joins and are not traversed by them.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L48-L49", + "version": "repo-lines-v1:sha256:055eb479073449032ec31f7a3310ea8a9b7cb046d9510507577dcad5c4e0d446:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTUyMjQzOGQzMjliZWI0MGM1NzcwYWRmMWQ1M2E4ZjgzYjM1Njc3NjkwMWZhN2NlZDNlNTZkMTZlOTliODIyZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzE2N2NjYTNhODczMDdlMjkzZmQwYWNjMGFhZjhiMDU1YzAzZTkzOTNhNDdiYjg5OWFlYjVlMzgxZWE3MjZlOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTY4NDYwYzFiMzBhOTQ0NTg0YWZiODgyMWFlMjFjYmQzMTdhZmNhZjIwMmMyN2JkOWI1NDZiZmZhYjAxNzczYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2Y3ZGJhNGQ2ZmFiNjU4ZmI2YzBjMmJmYTQ3MDJhNzJmOTRiZjI4MTA5MWQ3NmIwNDVmZjYxMGU3ZDQwZWY2ZCJ9" + }, + { + "resource": "repo://hub/dtl/joins.rst#L25-L50", + "version": "repo-lines-v1:sha256:45c0a2173bd231406f1fabf6c4036b1d104330d590e998926e17e84779199297:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwOTlhYThmMTYyMGFlNjM2OWM5YTMzY2Y5YzMzODAwNWViNWY4YmQwZThlODljYTA0ODVjMTIxOTc2NjE2YmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYzYjcyOTMyY2YxYzc0YWQyNDRlNjQxZGJlZTU2N2Q2YTdhNzRjMTczN2JmMzJjMDgzNjVhYmE0YzdmNDY3MTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI5ZGMyMGIxN2ViMzljMjVmZmMxMTc0NmJkYzY5NjE2ZjdlMDEzMzg3ZjhlZmRhMDg3ZmZmNjYwOTUyYTgwMjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNiZWFiYjIxYWEwZThkZDQ1NGY5MjdmYTIxNDBmZTQzOGJlNjkyNGQwODQ1YmZhYTkzZGRlMzE4OGFlOTY0NjQifQ" + } + ] + }, + { + "id": "claim_2c40ecbd7b25470397d4c30844f0e59d", + "statement": "Dataset sink indexes set to \"$ids\" maintains alternative-identity lookup for the dataset browser through _id and $ids; service global_defaults.always_index_ids enables this by default and itself defaults false.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L262-L268", + "version": "repo-lines-v1:sha256:b1f5df305df2eaa555ee7c48a26cdd626fd1017e12f4ee40d59ccef6e240f88e:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQ2YWJmZDA3NWE3MWMzNjQyZGM3NjAzYWQwMjZlY2FiOTYwZjI0Zjg2YTM2NmQ1M2QxMjkwZjEzNDZmOGE5NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjNhZTM1ZGQwNTI5NWU3NzViOTFjNmY0OWVmNDBkYjc0ODI4MGM4OGFlZjQzMDkwOWQyYjBkNzY2ZGQ1ODkxMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2M0NmZkMTA5Y2UxYWQ5ZjQ4NTQyMmUwNjM4NWU2NGYzYTQ4ZjZhYmE2ODViMGRkOGYyYWMwNjBjZjVjNjMzYyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L65-L75", + "version": "repo-lines-v1:sha256:c8964b9df210679b3defe846065782ec7d9d00494fc3abd03866aa408983aa31:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkNjdmMWMyZTM2YzM4MzlhZDEwYWY3MjMxNTJlMDhmYWI3YjgzYzUyOTgzZjdlOGY3NTI2MTQ1MmVjYjVhNzAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY1MDcwODEwOTVjYThkNDQ2ZGU4NmE2MTlkZjQ0MmZmODllN2RlNzdlYzg5NzE2MGFmOGNiYzE5OTM0NjU1NWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVhNzRkZmVhNmVkYmNiOWM0MGU0YzUwOTQzZjA2M2RiMjViODY5NjQxMzExMWU4NGQwM2E1YTJlM2E0ZWYzZTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAyMmJhOWJlMzRkZjM5OWMxNThiZmY2YmQ5MGEyYTRhZDY2MjhkY2YzYjZkM2RiNWJiNzVmNGFlMGZiZjQ4YTgifQ" + } + ] + }, + { + "id": "claim_153bb0df0cae479e85a84b6ce4f83311", + "statement": "Compaction defaults to retaining two unique versions per entity; keeping fewer than two makes dependency tracking best-effort and may miss reprocessable entities, with rescans recommended as a countermeasure, while keep_versions zero requires a time threshold.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L44-L55", + "version": "repo-lines-v1:sha256:15796258efe5927782434c201883c1a3841b374c6862a7b3b1d6e68c7f7aa8dd:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjZDIyZDViN2RhYzY1N2QwODZhYTNjMjUwNWU2NDcwYTg5ZTJmYzMzY2EwNzUwZTI4Y2Q2NTdlNGVjNjE2ZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYyMmYzYjhlODgwMmQzNGUwMTRlZDk2Y2E0NjQzODk3MzRiOGQyMWM4YTI3N2FhNWE2ODBmMGY0ZTUwMDE1MWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjljNjczNzI1MTQ0YzA1NjM0NzA1YTRhMWE1ZTU5ODUwZjQzYmE1NDU1OWNmZmU2ZTFhZGNiMDAzZWMyMTNmOWEifQ" + }, + { + "resource": "repo://hub/features/compaction-feature.rst#L8-L10", + "version": "repo-lines-v1:sha256:613edaa2efc6ccfeb889f952823222a47139afd422c3eee2cacb64040e967a9b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTJiZjkyNTRmYmEyNmFmYmY3ZjljMGQwYzFkNjlmYzAzMjI4MzM2OWY1ZmIyNjdmNjhjYWYzNzhmY2M1ODBkYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTY3ZTU1N2U5ODEyNWUzMzRkY2I3MmM3Y2YyNDYwZjNjYjViNTcyNDFhYmY2OGM3MjE5MDI4YTlmMDUxYjY2MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWY3OTMzZjNiODdjYzlhYWZkOWEyMmQ0M2MzYzM3OThmMDEwNjA4OTk4NDYyODFmZmU4ZDYxMWZhY2UwY2U5NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzQwYzBiMjViMDFiMTc3M2VkMTg1NWEyZGFiMzRiNDcyNDcwZmNiNjYzODc3NzdkMGU0OTQ1OTc1YzJkOGE0MSJ9" + } + ] + }, + { + "id": "claim_a27a419eb2764c3bb2acd7711363b161", + "statement": "Compaction is bounded by the lowest dependency-tracking offset on a dataset, and disabled pipes doing dependency tracking also hold back compaction.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L13-L17", + "version": "repo-lines-v1:sha256:161f3d3bb8ab13b7fe0769349e9d01cb9cae336a74eabcd637cb809d0c566485:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjFlYWFjMDdlMDA2Yjc1NjIzNmJmMzllZDhmOWM2MWUxOTk5NjU1ZTAyNTM3ZjRjODQxNTUwMGE3OTY5ODA1YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjYxMjZiMDczNDU5ZjQxYWJhMTBhMGI2M2ZiNWNiYTY5OTAwZjQ5OWU3NWI0MmIzODcxZDdkYTc3Y2ZhNmYzNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + } + ] + }, + { + "id": "claim_66104f58bf524287aacd191246967d11", + "statement": "Dependency tracking is supported only for pipes using a dataset source because tracked entities must be looked up by id before a specific point in time and re-fed through the pipe.", + "evidence": [ + { + "resource": "repo://hub/features/dependency-tracking.rst#L12-L14", + "version": "repo-lines-v1:sha256:575522e2ead826951cfe9c2e534169ad7008885b7a3ff1e59df8a3d5f0b2b530:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDYwZjVhODVlZmEyYmE5NDM1OTViYjFiYmQwMTZhMDVlMzk4MTljOWZmNGNjMjFhZWQwNTM3NTdiNTc4MDUyZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzBlYjY2M2M0MjgxOTdkOTYzMzM1NDFjMjRlZTI4ZGQxODZlZGFhZjk0MjVmZjU4ZDI5YzA4ZDdiYTg5NjFkNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWUxMGM2MDA1NjAyNjMyOTgzY2QxMTJiYTVjZWUxZWIwODkwNjYxYzczNDk0NWNhZjllMzVjM2QyMTk3MjY3YiJ9" + } + ] + }, + { + "id": "claim_848c1c036be04c6395c3d16ac52d0719", + "statement": "Retention and durability address different risks: compaction chooses which log versions remain, whereas durable data uses high-durability storage to reduce infrastructure-related loss of pipe data and state.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L8-L10", + "version": "repo-lines-v1:sha256:613edaa2efc6ccfeb889f952823222a47139afd422c3eee2cacb64040e967a9b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTJiZjkyNTRmYmEyNmFmYmY3ZjljMGQwYzFkNjlmYzAzMjI4MzM2OWY1ZmIyNjdmNjhjYWYzNzhmY2M1ODBkYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTY3ZTU1N2U5ODEyNWUzMzRkY2I3MmM3Y2YyNDYwZjNjYjViNTcyNDFhYmY2OGM3MjE5MDI4YTlmMDUxYjY2MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWY3OTMzZjNiODdjYzlhYWZkOWEyMmQ0M2MzYzM3OThmMDEwNjA4OTk4NDYyODFmZmU4ZDYxMWZhY2UwY2U5NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzQwYzBiMjViMDFiMTc3M2VkMTg1NWEyZGFiMzRiNDcyNDcwZmNiNjYzODc3NzdkMGU0OTQ1OTc1YzJkOGE0MSJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L80-L84", + "version": "repo-lines-v1:sha256:be707cb9f14400b8f53f83871032b352a618e1ea6114458da388d12b4640e9c9:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGZhZTNkNzJmNWZiZDIxY2M3OGI1Y2UwZDM0ODIyMmY1ZmI1N2IzMjAwNTIzOTVhMzEwOWFiYmJiM2RhZWU5NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmM4MzViYTMwYzViMTg1YjUwMjJlMDY0YjVjNzMwMzYwMGEwMDRjNzNmNDQzMTE1ZGE4NGJkMGE3MDRiNTRjZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2U4Y2QyOWQ3ZjVkZmI0MGUwMDYxMWFiZTMwODI5ZDEwZjA2ZGNkYmI3Mzg2OGE4OTVhNjNjNmE0MDZiZjVmZiJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L9-L15", + "version": "repo-lines-v1:sha256:fdd7d1b640d3bf37bee4ddf575ae6416a3145de01b3781d09851632dae3b74c5:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzhjZjAxMzJmMzYxOGFkMGRhOTZiOTcwOTQ0NWNlMzhjMDQ3Y2E1MjRhZWE5MWVjNDE2N2UzOGFkYTA3OTFlMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDNkMTkwZTIxOWI4YjIyZGQ0Mzg5ZDY1ZjhiODNlOGNjYTY4ZGQ1YTE1OWVhYzIzMzIxNjY2NDU2MzhkYzU5OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmZlMTM2NTU3Yzc5Y2FmY2VmNTA3YTE1NzkwZjM1ZmJhZWNmZWQxYTZhNmIxZDU3MzgwMDA4NTBkMDI4MDNmZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDM3ODUxMzZkMjUwZGM1MmU5MjE2MDdkOWM3MDI3M2FmMmYxNmRhYTUxNzk1Nzg2N2M5MjUzYjE0NWE2M2RlMyJ9" + } + ] + }, + { + "id": "claim_fca616c1af394e97a5d4f5dc37d61957", + "statement": "Underscore-prefixed fields are reserved only at entity root level; normal dataset writes ignore them except _id and _deleted, while child entities may contain underscore fields.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L44-L49", + "version": "repo-lines-v1:sha256:e237ceeb7a0e7bc6a6be80b995f72704b772bdcd7468683a681b773ae4579c40:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTg2ODVhMGJlMWZlNWZhZTQyMDRlZGEzZTZhNWVkMjMwN2ExNTRhZTNiMmZlNWMxYWRjNzFiMjgwYTRmYzJmYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzFhOGE4YWE2M2NhZWUyMTg2MzVjYzFkMWYzMWQxMGRmYWU0ZjRjYTBmNjVkZTJhMWZkMzRlNDg3MzEyMTA0ZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjgxY2E3Mzk4ODk4MDJjMThmZDM3MjVjM2NlZWJkZDU3OTY3MGIxYmM5YTFjYzJkZDI5MTBhZjY2N2MyODRhNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjQ0NTBmZmE4ZmRlMzQyMDcwYmViYzNmNmNhYzk3YWFjNzY4ZjU1YjQ1ODM0M2MyZDJjMWRjYTQxMjU2ZTFkMSJ9" + } + ] + }, + { + "id": "claim_c099d630989e41f89d4226d6a9224d0a", + "statement": "The dataset-generated _hash is a string used for change detection; only _id and _deleted among reserved root fields contribute to it, while ordinary fields including semi-reserved $ fields are stored and hashed.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L137-L140", + "version": "repo-lines-v1:sha256:027db407a1960ec6f6af9290395dccd769bd97da9beac2071ffc6ba6a138e042:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmMxMTgxNTY4YjJlOGI4ZDFhMTBkOWM0MTM1Y2NkNTM4YjI5ZWNlOThkN2I0Mzg5YWMzYTRkNThlOThjMWM2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODVkOTIxNWIxNjc4YmU4OGFjNGIxNjJiZDJlNzk3NTQ5NjhiNmFjOTc4ZjhiNzhkMTNlNmE3YTFkZmMxMTA4NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWVkNmU1NmQ4NmY1MjNjZWFlZDdlNzFjNTdkMzc3NzU0OTdiMzFlZTQwY2UwOWI1ZWUyOGZiYThmM2MzZGYxNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjQ0NTBmZmE4ZmRlMzQyMDcwYmViYzNmNmNhYzk3YWFjNzY4ZjU1YjQ1ODM0M2MyZDJjMWRjYTQxMjU2ZTFkMSJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L82-L88", + "version": "repo-lines-v1:sha256:8127481397e75bc5a5554ce37ad567cc324ce0a868fbf981de21e07986beaf7f:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzgzNmE4N2ZiYjIzM2VhNDBkNWYzNjc3Y2NkOTRkMjNlMTEyNzg5NTM5M2I5NGQyOWFlODdjZWVkMTdlMGQwYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmZmOTkyNGQxZDgxNGQ5MmZhNWM3YTc1Nzc0N2QxZTUwNGNlN2Y5NmYxNWVjNjdmOGUzMTI2ZjM3MzUwMzYwOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzYxYjg4OTcwNmNhNWRlZmU3Mzk2YjdmYzY5YWEzMjY2ZWE1MDI1ZTY5NmMwMDgxYjE2NDM1MzQ3NmNjYzQ5OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDA1ZDEzNWY5NmEwNjc2YjI4ZDgwMGRhYjBiYzViNzc5MTMwZTRiOGJkMTNjN2IwYTZjNTI1ZDU0ZjIxMjJhZCJ9" + } + ] + }, + { + "id": "claim_0af4d50beddf411aa0cd32983786d8c7", + "statement": "Only _deleted true marks an entity deleted; a dataset deletion writes a tombstone version rather than physically removing all entity versions.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L66-L69", + "version": "repo-lines-v1:sha256:a574df90b87759a646d3776fab95d9f0c53e2c4b71acb987d9c0f0aacbff3ffc:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDdmZmE2MzUxNzAzYjlmMWVhYzJmOTM2NGY4OTEwZTdkZDI3NDVkNGNjMjdkMDA4ZjA4YThiNjk2MzA2NmNhOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmRkYWVkNWYyOWI4MzM3MjA3ZjMxNDViZDEyMmI2ZGNiZjQwZDM0OGE4MDQ2NmI4OGM3YjMwNzMwYzE0ZTAxMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzY3MTUxN2RmMzI5YTlkNTA0NjE5ODRhM2Q1MzcwMGZkNzBhZDdmZWJiMGViNzgwNmE5ZDllYWY1NTAzOTdhMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTdhZDc1OWZmNmQzYjA4N2RmZTcyOWZjNmNjZmU2OWQ3Y2VhYmJmZDZmYWQ0NmY0N2YxN2IyZGY4YjM0OGUyNSJ9" + }, + { + "resource": "repo://hub/features/compaction-feature.rst#L90-L94", + "version": "repo-lines-v1:sha256:06e3db9ff1bf743284c300ec2c663ef495ac492b2ab9cfe8181ae3ba3167e4d3:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2ZiNmVjYzg2NWVjMTIzNzQ3NTFkYWM1YTdmNDc0MDM5YzBkMjVmM2FkMTM1Mzk1ZjkwYWY4YmE4NjExN2Q3MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzE3OGQ1NTU1MzYxNWMzNjE2NjZmYThiNzg4ODVjNDBhY2JiNzkwY2NlMGRiOGQzYzNkYTE2MjJhMmM5NGE5YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzIwYWYzYmUzZmRiZDdiZDE4ZTcwMzE1MWY2Y2I1YzUyZjY5MWUxNDMyYzQ0MTI0ODY0YWMwNGMzOWY1MTNlMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDhkM2I4ZGE2YzE1ZTdjZDA1YTJiNmEyYTcyY2YzZWVkYjExNDFlNzhmNWE1YmRmODhkMjI0NGI3MDY0NGRlMiJ9" + }, + { + "resource": "repo://hub/features/deletion-tracking.rst#L8-L8", + "version": "repo-lines-v1:sha256:4020424a3c25ef2069d7aa025543cc5ec2d4bc57ed0833a3e2ffc413f7178424:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDAyMDQyNGEzYzI1ZWYyMDY5ZDdhYTAyNTU0M2NjNWVjMmQ0YmM1N2VkMDgzM2EzZTJmZmM0MTNmNzE3ODQyNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDAyMDQyNGEzYzI1ZWYyMDY5ZDdhYTAyNTU0M2NjNWVjMmQ0YmM1N2VkMDgzM2EzZTJmZmM0MTNmNzE3ODQyNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMThmNGY5NzczMWRhZWI3MDE5NWEwNjA4NGU2ZWQ5NWNlYjQ2YmEwYTYwYTk3YmI0NzQ0ZjllMWQ3NDE3N2EzNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_33a7f362324c46f9a08212e2bcd291a7", + "statement": "The dataset generates _previous as the previous version's _updated token; missing or null means no previous version, and a non-null pointer may reference history already removed by compaction.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L91-L100", + "version": "repo-lines-v1:sha256:9345733f8333b3a9a7292a5696014e6eaae4a188034eb07f05175b85507a98b4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZkMjZiNGI0NWYxOWU0NmUxNjYyMWNmNzk1MDRlZmQyODhjMjAzMTRmMTI2YjU1NmExNDQ4Y2VlM2MwMzNhYWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJmZjk5MjRkMWQ4MTRkOTJmYTVjN2E3NTc3NDdkMWU1MDRjZTdmOTZmMTVlYzY3ZjhlMzEyNmYzNzM1MDM2MDgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVjN2YzNzYzMTgzMWI4NzhlMzg1ZGRiY2U2YTc4NzdlYTA5ZmI3OWUyMTk3MjE4ZDg5NDVmY2RkNjIyNzA3OTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc4OGFjNzNlMzEyZmU2YzlmY2I0NThiNWE0YWVmNzc0NjAxNDg3NzBmNTcyNTY1MmZiODkwZjNjOWQ3MDM1M2QifQ" + } + ] + }, + { + "id": "claim_a67cd51bc6824b68a1395e9253288ac6", + "statement": "The dataset generates _ts as an integer number of microseconds since 1970-01-01 UTC describing when the entity was added; it is informal metadata, not the opaque continuation token or an application modification date.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L103-L110", + "version": "repo-lines-v1:sha256:681f8687eb7bd55dfc1d42b81572af8069a01808487091c1176c7c7707537e12:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWUzZWYzMDRjZWQwNTAxOTg3MDhlNmYyMmZmNjVkMzEyYmE2MGE3ZDFkZjg4ZWQ1ZDViNTgyMmU5Njk5NGUwNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmZmOTkyNGQxZDgxNGQ5MmZhNWM3YTc1Nzc0N2QxZTUwNGNlN2Y5NmYxNWVjNjdmOGUzMTI2ZjM3MzUwMzYwOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWM3ZjM3NjMxODMxYjg3OGUzODVkZGJjZTZhNzg3N2VhMDlmYjc5ZTIxOTcyMThkODk0NWZjZGQ2MjI3MDc5MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDdlNDhmYmQ1YjYyZTI3Njg3ODJiNTE3MDQ5MGRiNWRiMGIyNGMxNjg1YzVhODgzMjdkYzFkN2Y3ZTY5MGI3MSJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L72-L79", + "version": "repo-lines-v1:sha256:ef9d11140cd9b18c16ebd5ffe115f213641977af53a37431b7c1eb326143301e:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDhkYmQwMTk5MmQ2ZDhmNjRjNjRlYjEyMzg2NzkyYjJhMmYwMjlhYTBmYjNkNWU1OGE1ZTdlNDc3MTQ1YTZiMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDRkNWRkODMyNDM0MTEyNTA1YTlhZTRkMTAyY2I2NWFmNDMyMWIxMmI5YTVjZmQ2N2Y1MWRlNjIyYmM4MDA0NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGIxYzBjYTdmYjRkYWFhYmNjZTlhZWQ0NTY1N2MxMTQ5YjUyZTk5MDJlOWU2OWEzNjc0ZDZmMTE5MTYxYzZkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjUxN2E4Y2QxNGIzOTM3YjEwODgyMDkzMGI2OTllNTg1ZGRjNjY5MmE4MzYyMWJjNWM0ZDAwMGE5MDYzNjczZiJ9" + } + ] + }, + { + "id": "claim_49556b6e8b12408797d7e423a6cb8b19", + "statement": "_tracked true is a legacy dependency-tracking materialization marker; the newer implementation does not require modifying entities, so the field is not a current tracking-status contract.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L124-L134", + "version": "repo-lines-v1:sha256:ec396663ffedd310efc2e71ab2c5a7f929ecece32fd40d805e5e2528baad0403:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY3MWMxOTY2YWExMjA5MDZjNjNjYThhZmVmYjgyZTZlZDJiMmUzODY0Y2JiNWQ5YmQ2ZjMzNmU0MjYyMDk3ZTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliNWU0MzlmMjY1NzU1NDU0ZWQwMTBlN2M0YzU5YWZhOTI2YzVlMDQyMjdlMDNjNzZjODQ2NTRkMDcyODQyYzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU2MDU2NTIwNDA1OTAwMWQxMGUzNzZjMWQ3ZWM3MTllNDRlZWVkMmExYjI3YTdmMjE0ZWFiYmExYjkzZDBjMDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImViN2NjY2I5MWE3Y2RlZjg5NjZmMmMyNWIzN2EyOTIyODI2NzQ2M2YxNzdlYmE3OGRiN2IyYmMyMzJmNGNjN2MifQ" + } + ] + }, + { + "id": "claim_78a3b62d9671433396dd7e416936fd76", + "statement": "$ids contains alternative identities as NI values and the merge source collects merged identities in it, without replacing the required string _id.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L89-L92", + "version": "repo-lines-v1:sha256:5430168ea115e7a15f4d1ac0b2e80f6681265ad707c6b5c5ab5b837ea6e0ef63:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2FkYWZhMTAyMGYzMGMzYzRlMGJlMTczY2IwYzBkMThjYTczNjA3MzViN2UxYWE3YWE5MzIyYjE3NmRkZDU0OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODBlMGMyYWM2M2QxOGU1MTJlODU2MmEwMTgyMjA3MzI4OWU4ZjNmYzM4ZDZmN2VkMzM3ZWY2YTI0MjU1OWQzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWQwYTFjNGE5MDU1ZmI3NDUxOTljMmEwMTFiMTExMWU4MjE5NzY1MTE5ZWFlNzdlMDQ3ZjE5OTY3ZTdiYTUwMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjBmOThlODljYmQ1YTZmNzQ0ZDQ2ZTcyYTcxZTA2Mjg4ODNkYmM4NWEwMWY5YTBmYjQzNDkzOWU1YjA5NWU3YiJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L151-L156", + "version": "repo-lines-v1:sha256:a17f50b3df6dacaeb59862b97c2864ce4614aceefa80da5775365ae178e4135a:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDk4NWRjZTMxYmFlYWNhZTgzYWNmYWQ1YzM0MmNlNmY1YzlkNjMxMzE5NzA1N2U0NjMxMmIyZGQ4NDdhY2UwZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWEyMjczMTE0NzRiNjA2NDBjZTllYzBjZjVkMjZiZWY3MDZjYTdjNWVkNzA3MTg2MTkyY2VkYmU1ZWMxOGFlNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjdiNTNmMmFiMzlmYmI2ZTNkNzhjMzg0ODY2ZmE4Yjc4NjI5MGNiOTY1YmU0OWFkYjRmODQwZTM5NjEwZmU0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzdlODk3ZjlmZjJiNDU3ZDUwYTIwMDA1MmQyOWRjMmMyMTk0MjhiNjg2Yjg1MmJlZDFjM2NjYjkwMjI0MWZiMiJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L60-L64", + "version": "repo-lines-v1:sha256:1420a14fa48f912a6a404c72d963fea5a900a4af76a23928a00f32193e21fd18:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWQyZDEyMGNhZjU4ZjM1M2IzOGVlYjQzN2VlNWMzNDMzYWRiY2FhOTg1OTg2Zjc2MjM5M2I5ZjljNmRiZjdlYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjdiNTNmMmFiMzlmYmI2ZTNkNzhjMzg0ODY2ZmE4Yjc4NjI5MGNiOTY1YmU0OWFkYjRmODQwZTM5NjEwZmU0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDY1ODY3MTg5ZGQyMDRmYjU3MjM1M2M3NzNmNWJlMjQ2YmYyNjlhNDEzYjY0ZDlhMDI0N2YyNDE4YjVhNzMyNyJ9" + } + ] + }, + { + "id": "claim_a733536fb2984c25bf3ffa9096cf9dce", + "statement": "create-child adds child entities to $children and emit_children expands them to standalone entities; dataset sink track_children compares against the previous version and produces deltas for incremental child deletion detection, inferred true when create-child is used unless overridden false.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L159-L164", + "version": "repo-lines-v1:sha256:4585cc3c65b729fad018b2d444a1f993c799653a54907df938cbb653790da11c:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmM0ZTdkZGVhNTA0YmY3ZmMxMzZkOWFkNzU0NTY3MGIxNDJkOWIzYmRiYWUzZjFiYjVjOTA0ZjExZTQyMGU0MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODAyZjcwMzg3NzczN2M2NWUwZGVjNDRjZWVkODUwZDcxYmFlYWE2MWJjMWU1ZTM5ZjA5NTc5ZDFmMmQ0MDhhNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2Y2NjIwZmM4YzM4Yzk3ZGE3MTY1MDA5NGYzNTFiM2ZkYTM2YjA2NzY5YjNkMWM2NjU3MjA3OWM3Y2EzZjA3MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjUyY2EwMDM2N2NjZGM2NTMzODJmMzJlNTNiMThlNGYxNmUyY2ZhMDVhMDRkMmEzNzJmYjU1ZTc1NDczZDQxYSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L78-L93", + "version": "repo-lines-v1:sha256:ad6fb55d97566c397623de989bd93ab4d0a209f80cdafd718bff19af24ecdc37:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNTQ3ZmIxYTEzOWFlMjRkZTQzYWNkNzBlODI0NWJmMmRlYWY0NTk3MzYwZmMxYWY1N2Q2YmNmMjJlNmUzZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkYWQ3YWJiNTc1OGU4OTBmMmE4NWYzZmM5MmE1ZTZhOGUzMDkzMjFlYTM1OWVjMjA1OWMwMzJlNGMxNWZjYTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ5MjVjOTVmMzQ4Mzk2ZjJmZTZkMTQ2NjY2YTI1ZjE2YmNkODRkODAxNGM3ZDQyNmVlZWYwNDMxODMxMDkwODMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5NzdlZGU3NjY4NzZjYzgwMjE4MDE2ZDIzNzg3MTkyZjcxODJlMjZkYWU5YjlmNTMyYzNlYjhkMGY3NWM1MWEifQ" + } + ] + }, + { + "id": "claim_f7ba2c08542c4022baa96f23f0719aaa", + "statement": "The Entity Data Model's reserved-field prototype and standard Entity example contain malformed authored syntax and should not be treated as executable JSON.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L205-L208", + "version": "repo-lines-v1:sha256:5e16af265e616dfa05b37589b38f2a6da260ac5040e8833ce20d3afe55c36f27:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGNkNDg3YjFlOTY2Yzg4MmZhOTUzNWFhOTRhYmM2MzI1MWE0ZjdhMDRjMTMxNTFhN2JmNzViNmZkODBiNDdhOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjc0YmM0YmVhMDdhY2M2NDAyYjdiMDdkMmFjODcxYjQwYzk0YmM0YTc4OTA0NmQ5N2E2Zjc0NzA4ZjdiZmEzOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzAzZGUyMWU0NTZjMzBkMzljYTk0NWQ1ZDFkZWE1NmFhZmMyZGRhM2IzMDA2NTZkMGQ0NTg2MTFiNDdiNzdkNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzk1NWM3OWQxNjA2ZjhhYTdlYjI3OGU4OTlhYzAwM2YzOWMyYzNlNWIwY2ZlNzhlZjQ5ZjVhZDE5M2JkMGI4MyJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L9-L23", + "version": "repo-lines-v1:sha256:79ef655c025d5b9f975057c31bb05ec2b7ded59de45b33e09efe2e9b86550c9f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhlYjg1MGZmMzllYjFiZjVmNGVkY2RlMDhiNzk0ZjNjZTcyZWI3MmMyOGE4Mzc3ODZmYTYzODQ4ODc1ZjdjNzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIyYmYzZjZkYzY0ZTAyMzg0OGJhYTIyNDRjYTFlZTc5YjI2OWMxYzYwNjM1ODQxNDQ2MmFkMDViMTdlNDA3NDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM3OGI4ZTFlNjhjNWNkYzYzYzk4NTE4ODRmM2M3OGNiYzNiMmVkYWYwODkyYjVkMmQxOGFlNTRhZDdmODVmMWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNlODQzZWQ4MGE0YjEzNWJmNTM4ZDE1NWMxNTVkMDZhNDMxZjJmZTVlZjQ3Mzg3MThjODk2ODA0OTg5MzRkOGIifQ" + } + ] + }, + { + "id": "claim_f23032e029fe436290d04f849aa7cd93", + "statement": "Dataset sink deletion_tracking defaults true and, after a full run or rescan, writes deleted versions for entities that existed before the run but were not seen during it; this disappearance test is not absence from one incremental batch.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L140-L147", + "version": "repo-lines-v1:sha256:5541d7abd2fde800053d8b9bbb143d5cee60afcfee54c9e15fd50be11ae5d93a:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjg5MTc4ODhmYjgyZGVlOTgwYmYyYWEyMzAxOTE1ZDk3MDQ1YmE3NTExYWNlYzNiYTFkMjRkY2E4OTU2MWZmOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQwYjM2MmQ4MWNkMDhjMTYzZjM1Mzc0NTQ4NjI3Y2FjNGVmYWRkODA3M2QyZDA4YTc3ZGRhNjc3OTNiNWFhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDhkM2I4ZGE2YzE1ZTdjZDA1YTJiNmEyYTcyY2YzZWVkYjExNDFlNzhmNWE1YmRmODhkMjI0NGI3MDY0NGRlMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzViMmI1ZWNjNGY3MDUwNzc5NWViNTc1N2Y0YWZjOGQzMDZkZWVhYjcwNTM1ZThjYjAwNWEyYTE5OWQ0M2Y2ZiJ9" + }, + { + "resource": "repo://hub/features/deletion-tracking.rst#L8-L8", + "version": "repo-lines-v1:sha256:4020424a3c25ef2069d7aa025543cc5ec2d4bc57ed0833a3e2ffc413f7178424:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDAyMDQyNGEzYzI1ZWYyMDY5ZDdhYTAyNTU0M2NjNWVjMmQ0YmM1N2VkMDgzM2EzZTJmZmM0MTNmNzE3ODQyNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDAyMDQyNGEzYzI1ZWYyMDY5ZDdhYTAyNTU0M2NjNWVjMmQ0YmM1N2VkMDgzM2EzZTJmZmM0MTNmNzE3ODQyNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMThmNGY5NzczMWRhZWI3MDE5NWEwNjA4NGU2ZWQ5NWNlYjQ2YmEwYTYwYTk3YmI0NzQ0ZjllMWQ3NDE3N2EzNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_fc4a8679c906465f9b7bcad7e340cee8", + "statement": "A failed DTL filter stops further DTL transforms; with a dataset sink it emits _filtered true to delete an existing not-already-deleted entity even during incremental synchronization, while unsupported sinks discard the entity instead of receiving it.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L113-L121", + "version": "repo-lines-v1:sha256:95c243f019475e68797591a4e93e297c67063758f4363e381114aa886bb78a79:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTMzNTQ2OWEzNjlmYzViZjlmMGZiMzRjYTdiYWVjYWI5MjBiMTNlNTY3ZjNjZWZiYjY0MjZjMDQzYmU4YWRhMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDZkY2NmMDJlZDk4OThjYmQ3ZjM2YjMxYTExMTA3NjczMDg4Y2U5YWRlOTdjYjk2YjRmMzNlMjc0ODMxYTMyNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWM3ZjM3NjMxODMxYjg3OGUzODVkZGJjZTZhNzg3N2VhMDlmYjc5ZTIxOTcyMThkODk0NWZjZGQ2MjI3MDc5MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWVhMjlkOWMyNjQ0MjdiMTE0NzE0ZThhMGQxMThhNWE3ZTdmZjUwY2Y0MDM3NmI0MmViNGIxZGMxNjdlZDU1NCJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L573-L599", + "version": "repo-lines-v1:sha256:4b73700db7c4fad5e78c8e70f5d555c7ea465eebd1dcb091d17b8df979332283:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1NDhlYTkyNTU4MTZmNDgzMDMxMzljODIyM2M4MmRmYjVhNGFjMDRjM2E3MzlmMTEzNjFkNjY4ZDc3ZTU5NWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEyYWJmN2YwYmNiZjMwMTVjOGRjMDkxNDFiMWU3N2I2YzQ5OGU1N2ZjZTljZGIwNDZjYzBiY2MyMmZiMjcyYTAifQ" + } + ] + }, + { + "id": "claim_ecf7e84f99354e4fa4f1c905b9c5f779", + "statement": "DTL filter does not stop entities already emitted by create, subsequent pipe transforms must handle _filtered carefully, and explicit _deleted is recommended when controlling deletion content directly.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L576-L580", + "version": "repo-lines-v1:sha256:99bc1cfe8c8efe0d624cfe2d09a43c34634eea29c09ec18a2e5cc6088ad66239:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGMxZWYwN2Q0ZWE2ZDBlOWZmMTJmMGIyYzA5ZTZmMWMyNGJhYjJlMzQzYWM3NzFiZTJmYjU2ZWU2NjJjZjkyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDk0ODA2ZTY1ZTJlZWYwZjQxMDVkYTU1MmY0Nzc4NzBjNzM0MWExYWFkZGZjOGFmNDNhN2IwOTk4MDhjNTdmOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjNiZTM5NDE0NzVmMWRmNGU4MTZlZmUxY2NlYWQ0ZWZiYTFiOWRhNTlhZGNiMjMyN2ZhMmJkNmI5MGYxMzk2ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWRlZGEwZDM1NGM5ODc0MWEyZGZkMTc5ZjJlZjI4MjVhZmJmN2JlMDdjZGMwNzQ0YTdiMzVhMGJmNzc1YmJiNCJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L601-L607", + "version": "repo-lines-v1:sha256:97faef703832427f28626964f41d6b6b32c93d34a4058039aad8befb6f2940ea:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTJmNzRiYTI0Y2I2ZTJiYzFlNGVmZWE4NDYxMWZhNTlhY2EzYjQyOWVmODcyNWM4OTYyYWYxNTU5MTM4ZThjZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTMwNWUxM2Y4YWZkY2RiOGJiNTEwMDJkYTIyMmI2NTg3YTJjNWY3YjhiOGYxNzA0NWJhM2FiYzU0NzViZWUwNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDE2ZDU0NzU2ZGEwYWE3ZTZlNTliOTI1YTUyNDc0M2ZlMDc1M2UxOTcyNDBhZDIwZmM4YmY1ZTQ5MWI3Y2RkYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTU3NGMxMTRmY2MwYzhmMmE0NzE3YjQyZThjZmQ0N2Q4MjdhNDllMmZjOTMwZjRhYmM4ODUzODI4ZGYyMjMyYiJ9" + } + ] + }, + { + "id": "claim_313288877dfb405d99e86248d48a2637", + "statement": "The dataset sink suppress_filtered early-suppression optimization should only be used when a pipe produces exactly one output version per _id.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L170-L174", + "version": "repo-lines-v1:sha256:22a3ddd0e5f466b6ad6a15446337a715c1f1311ef82d3c42515d6460415e98dd:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjQ1YTE4ZThiNDNmYjBjZTRjMjczNTY5ZjRhNDQ4M2I3OTUyN2JmYjJlOTcyOWEyZDk0ZGE3ZTk1NThhNGVhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWU1ODJlMGExMTQ2MzcxMzZjOGI5ZDllMjkyNDA4MzRjMjk0Mjk3MTM1MTM2MmNmNjM2Yzg0NjAwMGFlYmRhYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjYwYmIzNWI5OTllZWZiZjU1MTM1YmQ2ZDk5YjNkYWM0MThlZmFkNmViMGY2YjQ5OTUyNzNhZjg0NmNkNTAwYSJ9" + } + ] + }, + { + "id": "claim_31e6086c05a8484e9d93ce853c5a3477", + "statement": "When a merge's resulting identity changes, the merge source emits deletes for obsolete ids with $replaced true; this is identity replacement rather than a real business deletion, and dataset source include_replaced false suppresses it while the default true retains it.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L101-L104", + "version": "repo-lines-v1:sha256:e00831bc215db9d967b99f1a4af145e59b3404fff40feb06d83b4fb516884d89:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWI0ZTdjMDJjOTBiNGI5ZmQwNjE5MDM3N2IyZGQ1MDVjMjU1ZjFmMTkzNTE4YTE5MGI2ZGM2ODVmNmUxNzI0NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZWMzYTA1YTA2OTQ5NTc3N2I2NGU0ZWUyMDhkMmI0Yzk5NGI2MDVlZjg3NzEwZDgzNjEzMjE3ZjY2ODFmOGYzYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTYyNzdjMDkzODg3YmE2NWNhODMxYWQyOTJkNDE5YmQzY2M3OGE5ODBjMjFjY2E0ZGU0NjJkOTlhYjJmNWYxYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2M3ODUxZjI4Y2U0M2UyN2Y5ODMzOGIzZmZkNGNkYTBhYTJiNGMwYjIyOGI2ZWNkYmYzOTk0NjhhMjg4NzljNSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L102-L105", + "version": "repo-lines-v1:sha256:e7d3da1a8d0aa66b093e8a63a43d519e1ce596550506e3cdccd35443be5e3d29:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTAyNTkyZjA3MGU1NGJmNzU4YmM0NGMxZTM1ZGYzY2Y0NDAyOTg4NTcwNmZiOWFlOGRhNzNlNDY3NDlkNjI2OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQwYjM2MmQ4MWNkMDhjMTYzZjM1Mzc0NTQ4NjI3Y2FjNGVmYWRkODA3M2QyZDA4YTc3ZGRhNjc3OTNiNWFhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzBkYjZiZjRiYzI1MzA5OTAyOTZmM2Y0N2E2ZGE2MWIwNTA5NTAyNDM3MTE4MzQxZGI3MzA5ZjZjZDJkZmIwOSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L12-L16", + "version": "repo-lines-v1:sha256:834f38e9d156d3198d777e8e46350b746f8c68776c67d081cb17bd9523155eb7:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODUwMWUwMWJhNzYzNjg3MjdmNGExNWJhYzA1OGY5YzFhNTY3YWYzYzA1ZWY4MGNhNGEwYTJiNzU2OTc2NDY2NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzRiZDQ3OWIyNWI0MWE5MTBjMGM2OTFkYWFkZWU0MGRjOTNhMjcxZmIxZjBiYzk0NWMyMDg4YWY0N2IxNzk4YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDA2MWZjOWI4NGE1M2U2MjE2YjM3ZTU1ZGYwM2FlNjk5MDIyMDA3ZmFjMjE5ZGQ5OTQ5MzE3MDU3ODEzNjczMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMmU2YmJmYTJlOTQ0OTQ2MGJkZmYyNWIzYThmZmUzYTA3YzUwYTYzYTk5YzBkZGEyYzE2MDgwNjYzNWNkOWJiMCJ9" + } + ] + }, + { + "id": "claim_67b14b9ec1934f47a98f7aeafbce1108", + "statement": "compaction.ttl_deletes_hours makes a deleted entity eligible for reclamation after the configured number of hours; reclamation removes all versions of that entity.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L90-L95", + "version": "repo-lines-v1:sha256:3f3a388761c23eac293d31d7ed442695ac570ad59d0222b47d7594301335d241:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2ZiNmVjYzg2NWVjMTIzNzQ3NTFkYWM1YTdmNDc0MDM5YzBkMjVmM2FkMTM1Mzk1ZjkwYWY4YmE4NjExN2Q3MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjg3YTljNDk5YTRiZmM2MDQ1MjNmZjgzNzc4NmU4OWQ1MTY5YjBkYmQyMzAzNjc1MzUwYjlmZTYyYTYzMmRjOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzIwYWYzYmUzZmRiZDdiZDE4ZTcwMzE1MWY2Y2I1YzUyZjY5MWUxNDMyYzQ0MTI0ODY0YWMwNGMzOWY1MTNlMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDFhOGRlNGI5NGVhNDUyMGZiZGE0N2Y1NzMwYmM1Njg1YWQ3YTU5OTk3OWM1ZWQ4Nzg4ODQ5Yjg0NDk5MjAwZiJ9" + } + ] + }, + { + "id": "claim_7fb74ce8fb804e62a38a753d7ab34e80", + "statement": "compaction.retract defaults false; when enabled with output $retract true it irreversibly removes all earlier versions in the sink dataset, retains the current version and deletion state, is idempotent, and overrides keep_versions per entity.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L105-L111", + "version": "repo-lines-v1:sha256:9813b3d3227f477e53747bafabfaaaf609c99cc94930e12dcdf80a746fe1697c:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmQxM2ZmMTgxM2U3YmY2NWU4Njk1MGJmZTU3NDE2ZjU3MjY0ZDVhNzgzMGZiNDUwY2VjMTgwYzc4ZjljMjc1YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjYzZWIxMjdiNjhjNGI3ZTA4ZWM1ODBhYmViN2I3ODExMjFiY2EwZjZiYzIzNWM5NjUwNDMwNTEyOTcyYjU3NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmFjNjVkOTcyOTU0YWVkYmY4ZTQ5MjVkOGRhN2UyZjg2NGJlOTBjMDY4MGY2ODcxMjY0ZjJiMWY1YjYyY2Y0NiJ9" + }, + { + "resource": "repo://hub/features/compaction-feature.rst#L120-L132", + "version": "repo-lines-v1:sha256:ea9d6fdebf6bab084e965ef5f3a187b52577e68f14b80ccd19436d3c2731003b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQyMDQzMWI4MWI0NTRiZDg2ZTdhODJjMDkzY2Q4ZjEwNDZiOWNiMWE5ZjlmNmJmMTNlZTI2MzFlZTFmMTc2MjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE3NGU5ZjIxMzhhOWRlNDZkNjE5NDBmOTYwNWNjODllYjQ3OGFhMTRiNTcwMTM2YjZiMWRhNDg0NzE0NGNjMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY2M2ViMTI3YjY4YzRiN2UwOGVjNTgwYWJlYjdiNzgxMTIxYmNhMGY2YmMyMzVjOTY1MDQzMDUxMjk3MmI1NzciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU0NTA1OGIwNDlmMmVkMGI4ZDlkZTQyYTBiNzM3MWM3ODBjOTJhZWE0NWUzNzg4MDNiYTc5ZWQ0ZjEyODExMTgifQ" + } + ] + }, + { + "id": "claim_8dfe28cf783a44ddaf94361467f1fea9", + "statement": "Retraction affects only the pipe's sink dataset, not upstream datasets or external consumers; $retract may be dropped by merge sources or emit_children, so downstream pipes honoring retraction need it explicitly in output and compaction.retract enabled.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L134-L137", + "version": "repo-lines-v1:sha256:a096ff6190efe867920dcb44480884ab98a75a845b0e15d4731542f215dc62d4:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDE4N2E5NmNjN2U0ZmNjNmNkYjMzYThiZmQ1YzFlNTdmNjgwNDE3ZWNlYTZiMDk4MmI0ZmRmYmU4NWEzZmJiNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWRiMWYyMDU5NThiNjBlNWJlZTkwOWRkOWNjNGYwOTcwYTM2Njg2MDc4NGY4YjcwZWUxMjgxZTMwMjhjYTdhZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmZiYmI0MjE5MDk1ZmYzOTlmMDgzYjgyYjA3Y2NiYzYzZDI1NzQyMGZmOTdmM2FhNTIxMTQ3YTc5YmU0NzZjMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_eadbe9248c02449fa9a66432b2f06d1a", + "statement": "Dataset source if_source_empty defaults accept, allowing deletion of previously synchronized entities on empty input; fail instead fails the run and avoids those deletions.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L124-L134", + "version": "repo-lines-v1:sha256:e6f011f5ff6996e7534d719a982e9e7825b7057a076878b8024415961e609ed0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliZWIzZDliMmYxY2IwOTJlNTJkMWZlNDBkMmFkMmQ1NWVhMjg3OTAzY2FiM2MxMGE1ZGMwZGE4N2FlYzk2NmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE5MTA1YzA1NzY5NDQzMDU2NjllODg1OWU4ZjRjZWJiNDM4NGE4OGZlNTRiN2Q0MWE0YzdmN2MzYjYyOGM2NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUyMTE1MzFmMTk2YWNjYWYwMmMxMGI3NmFjMDY4NjU0M2ZmNTcyY2UyMWMzMTU4NjVmYmMyYjg4N2FkZTdjYTUifQ" + } + ] + }, + { + "id": "claim_0bbd311f0b6c4b73a97943dcd37324cf", + "statement": "Merge source equality rules infer sameness transitively across datasets; null or empty-list equality results do not cause merging.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L25-L30", + "version": "repo-lines-v1:sha256:eca143eb5fc45878fa4eee0d395aa8bd250213b4cb8b0115b734257b895c2e3e:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2E1NTc0YTUyYzM5Njg3YzI0YTBhNzk1ODhhZTUyOWFkYzcwZDUyNTUwMWY2ZTU3ZTM1NGY0NDE5NDlkNGUxOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzJjODBiZGIyZWQwMmQ0M2JiNzBhYTE3NjA2N2JlOTdkODg3YjQxMzM1NTcxNjllNWJlMGM0NThkMTYwZmY2YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzFkNWJkOTMxNzBmNzk0ZTA1OGVkNWQxZGRhZDllMDQxMWExMjk2NWU3YmVjY2Q3Njk3Zjk5YWE1OTc1ZTJkNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2Q2MTI3MTQ4OTlhNzU2YzUxMzJhNmQ1ZjY5YmEwYjU4ZmQ0ZDFjZjkxZWU4ODVjYTdmNzYzY2JmMmYzM2YxNiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L6-L10", + "version": "repo-lines-v1:sha256:e742c9ea582e15ed1628e88f995be73c55a3cdd6c0200d53dff0e8f7ed4b8976:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjRmMmJlOTdjNDRjNDNmYjg2MGYwMThkNmU5ZWQxN2IyMzFmY2JjODY2ZjU1MmY1NWY3MDllODc2Njc3OTI4NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2NlOTFjNGU2ZmM5YzUxY2JmMmU0NDQzMDhmYzMwMzQ0Njg2MDA5Y2RiZmE4N2Q4ZjI3NjJhZDMyZjBjOGRkNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWU2NDNiMzVkOGQwOTljMDcyNWM4YjgzOWRiNjg5ZGQ1N2VlYmQ4YTBlZWUwODU2MjNkMTI0OTE3YTlkNTZjZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTNiOTQ3YTE1Nzk5NzNiZjg0OWIwYzYyMWUzNDZiZjAwMmJkMTdjMzk2ZWYzYTUzNmViYjc1YjI1NDA5NDA5MSJ9" + } + ] + }, + { + "id": "claim_a142dae3235840a2bbc6ed6e92588406", + "statement": "Equality rules added after a merge source has processed entities do not retroactively merge those entities; reset or rescan is required to apply the new rules to them.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L42-L49", + "version": "repo-lines-v1:sha256:da903fe32e07154b490aef3e8365db376ce9e84f51f5a824524c02f0eb86b9ec:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDM4YTJhOTY3ZGI1MDI2Y2ViNmYyODJmMDAxZmRlMjNkOGYwZWVkNTVmYzdkYTI4YzBlMzBhNTNjY2MzODA5MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzA3YzIxYTVhNWI4Y2JiMzdhODYyOWY0MzcwOTk2MjYxODlhN2U5Yjg3NTcxYWIzMDk5NmE5OGY3MWEzNDAxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2Q2MTI3MTQ4OTlhNzU2YzUxMzJhNmQ1ZjY5YmEwYjU4ZmQ0ZDFjZjkxZWU4ODVjYTdmNzYzY2JmMmYzM2YxNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmZkYjgwZjI3NmI5YzVmMDk4NGVlMmEyZDExZDYzMDE3NjE0NjE0Yzg3OGIwNzZlZTliOGJkYzkxNjYxNWQwNSJ9" + } + ] + }, + { + "id": "claim_42b8ecc7d09a439c93be96d86ed17570", + "statement": "Sesam Integers have unlimited range, Decimals arbitrary precision, and Floats IEEE 754 binary64 double precision that can lose precision; lists can contain heterogeneous nested values.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L210-L233", + "version": "repo-lines-v1:sha256:0fd62202c28a993693df99d36adb1e16172bf19d1dec3196df96d064918ed73f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiYzA0NzNlMWQyNGUxNDJjNWRjNjhlOTEyNDhjZTE1YjVlYzJjZDFkOTYxODU5Zjc4ODU2MDIzNWE3MjE5MTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlkYWNkZDZhNGU4NjA0ZWFlZDZiN2Y4YzE4ZjA0YTEyMDZjYjZiYmIxNDI1OWQ5NmE3ODM3YzYyMjVmZDQ4ZmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZkODM1OWIwNTlkYTgyODIwNDdhNTBmNGUyMjZjNDc0Y2Q4YzY1YjhhZGI0ZTg4NzU0YjE5NGNhOWI2YTJlNGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEzZDQ2N2Y0MzUxZTRlMTBkNzdkYzk0YzMyMDE5ODZhMjA2NjliZDk4MTZiMGVlOTg0NGRhYzU2ZWRiZjUxNDUifQ" + } + ] + }, + { + "id": "claim_1cecf43b39ef439bbea5cfb79c10e982", + "statement": "The documented maximum String length is 4294967296 bytes, distinct from the default stored entity-size limit of 104857600 bytes configured through dataset sink max_entity_bytes_size or the service global default.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L214-L216", + "version": "repo-lines-v1:sha256:582529a113f26e3979828fe61bc53a276b0fe96f55f153312fbdbc637927b9a2:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWUwZmQzY2QxNGRmMGVlZWI4ODYxZGVlZTcyMWExYTc1ZDBiNDBiNmIxYmQ1ZDVkYTQ4Mjc2NDJhNTNhNjRmYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzc2ZGZhMWIwOGRmMDA2ZDNkZDgwYTNiMzFkYmVjNWU4YzljYmY1ODE4NTY1YWM3MWMxMTMxZDljOWRkYzc0YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjczMTRkZTUyM2FhOWEzOWUxYzM2ZGE3N2YzZTRhNjQ5YmI0NjQxM2E5YzNiYTdkZTJiNTMyYzhhZTEwNWM5MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTMxMDFjMzUxNTM5MGFkMDU2NGViYjJmM2M4ZDNjOTVkM2Y1YTU0MDcyZTRmNGQ4MzAzNDUwYjMwYWVjYmVlNCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L172-L175", + "version": "repo-lines-v1:sha256:7c0a3e113c398713a632d8812cc69d9ce4df2929af4e90f2c61c241097431ade:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDkzMTQ1MTcwZGNiYTk3NGFlMWI4OGUxMDdhOTdjY2EyYzIyZjkyNGRlMjhkMDE5ZWU4Mjg2ODBiZTg0MTAzNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2VkYmQ5ZmRmMGQ4YjU1NjFkYmE0NWY2MTIwNzZlZjZlNzdlZDcxYTQ1ZjQyMWUwZDQ2NzNlNzIwNDk0OWUxMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjM3OTc3MGI4YjhlODcxZjhhNDA4MjljMTVhYWM4MzYxYjdiMjI3ZmNmOWJhYjFiYzlhNDI1Yjc4MDI1YmRjNSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L176-L179", + "version": "repo-lines-v1:sha256:bfb5fc8edd1d274d64252c06b01c3d6a9e2de84b84f4e97abfef9aa1a38d9c17:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2I5YmUxOWNhNWZlY2JmNzQ0MTI5Y2ZmZmM4NDc1ZWI1YWY4YjE5NDA5NDk4ZjVhZTRjNTJiMmRkYTQwZDFjNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2VkYmQ5ZmRmMGQ4YjU1NjFkYmE0NWY2MTIwNzZlZjZlNzdlZDcxYTQ1ZjQyMWUwZDQ2NzNlNzIwNDk0OWUxMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzE1MjgzNzQ4NmIzZDY5OTVjN2I4MzBiZTMzNjY5NGYyNTZkZWQ0NTk0ZGE2NTYwMGRkZTI3MTY1ZjBmNGNhNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTIxMTUzMWYxOTZhY2NhZjAyYzEwYjc2YWMwNjg2NTQzZmY1NzJjZTIxYzMxNTg2NWZiYzJiODg3YWRlN2NhNSJ9" + } + ] + }, + { + "id": "claim_314f606fb7bf4464abe4a35d2feada9e", + "statement": "Sesam serializes NaN and positive or negative infinity values in entities as null rather than invalid JSON.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L31-L35", + "version": "repo-lines-v1:sha256:6bc8358937794d65f4c5fee81f1b8148cb571295362c141cf4166cdd86260154:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTYzM2JjMmM5ODg3NGZlMWYzYmMxMDM3YTJjZGZlM2RhY2IzYmY0MjEzZTJlZGUzNGIwODBmZDI0Zjc4ZDMzZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDRlNWVjN2ViZjUyMTYyMGNmNjkwMTRiZDI0NDhlMzRhYzFiMThjODQ0Y2YzM2I1OGNhMWZhOGQyZjFmMWM1MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODk3NzJkY2M0YmIzOGVjNDMwMDBhOTA3Yjg4OTI1Y2NhYmU4NzdjYzA4NDQwYmM0ZWRiNWUyOTNiYTU4YTRlMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmM1OTE0NDEwNDg3YTIyYzY3MTU0MmY4NDQyY2FiYmVmYjc0ODFjZGE0NGFlZTYyYjhjOGExNjhiZDhiYzdmMSJ9" + } + ] + }, + { + "id": "claim_b7d99caa6c814b798d7c94425a3c1fbe", + "statement": "Supported Transit extension literals serialize as JSON strings with ~ plus a tag: NI ~:, URI ~r, Date/Datetime ~t, Bytes ~b, UUID ~u, and arbitrary-precision Decimal ~f; Bytes payloads are base64 and UUIDs hexadecimal text.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L249-L298", + "version": "repo-lines-v1:sha256:427208eaa5ea5c46f134481d03b4e33a9d10ac4065d01322b38bc8cae5e6e9f5:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyMGQ5YWE5M2RjYTE2ZjVjYzYxNDk0NGFjN2E3MjJjZTUyMTM5YzM2MDNhY2I3YzMyNzY4NWRhMjU2NDNlMjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjNzBkNTBjMmYzYTc5NTgwNmJlODZjODA0MTc2ZmI5MDEyOWM0ZjQ0NDIxMWNmMDM5MjI3NTM4YTdiMjEzMTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYwNWY3OTExMjE1ZDk5ODNlZmM2OTlhNTI3ZWExMDEzZjY0OTRkMDA5YTZiYzNjZTBkOWJiY2IxNDU3NWU2MTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk1MzgzMDViZWJmZThhZTVkMjQ5OTgzZGNlNjljMTVmN2UyNzQ5OTYwNGM0ZGQ4OTY1NDYxMDRkNjcxNGRkNmIifQ" + } + ] + }, + { + "id": "claim_7ad791a41eff4016b46fbf02586347cb", + "statement": "The Transit Date range is ~t0001-01-01 through ~t9999-12-31; Datetime supports up to nanosecond precision, requires date and time plus UTC Z, permits an optional fractional second, and has documented bounds ~t0001-01-01T00:00:00Z through ~t9999-12-31T23:59:59.123456789Z.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L275-L286", + "version": "repo-lines-v1:sha256:617687d9a6f88c960bcb2c2e293962d9615fe9009632c95fe78393ad032c29db:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkwNmM2ZWEwYWVhYzc5M2MwY2I1NjRiNDczOTI2MzdiMTI4NTE0OWQzYjQwNjI3OWFiNGIyMWEyYjE5NGEyYjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhmZGZiNjVkY2ViOWU3YjUwZGUyYWU4NWQ5M2ZkNWJkMDIyODg0YmY5MGFhYjRhOWZkYmIxMTQ2MjJmMDIyYmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc2YjllMzU5MmU4MGU5MTc0NDczZmJkMzEyMDM1NGZjOTE0NDZkY2U4ZmU5YzkxYmRlMmJiNDJiYTYwZDI5MDUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNiMGVlZDg1YzVkMDgzMTJkNDUyY2I3MjFmZjJiOWRkNjY4MjgxY2FmNTdkZWNkNTBjMGRkNDI1ZTYyNjViYzEifQ" + } + ] + }, + { + "id": "claim_8800c95c484143b8bce88957fd67b2d4", + "statement": "Only the documented Transit extension types are supported; unknown Transit types are treated as strings, and Sesam currently does not support escaping string literals starting with ~.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L249-L256", + "version": "repo-lines-v1:sha256:4421b579035b9daec3681f206b96c3acb10bcd450ff9e91d32ea887a4d8e96cb:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjIwZDlhYTkzZGNhMTZmNWNjNjE0OTQ0YWM3YTcyMmNlNTIxMzljMzYwM2FjYjdjMzI3Njg1ZGEyNTY0M2UyMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDk3MTYxZDRkMmIyNjJmMDFmZDY4YjZhMWQ1NTM2YjdmY2ViYmY4YzY1MDhlZWY1Mzk1YWY2NmNjMzlmYjQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjA1Zjc5MTEyMTVkOTk4M2VmYzY5OWE1MjdlYTEwMTNmNjQ5NGQwMDlhNmJjM2NlMGQ5YmJjYjE0NTc1ZTYxMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2ExNzAwYmYwM2JmZDc4MjRkZTNlYTg4MmNhYTI2YWQyMzkxODA3ZTFhYmFiZGM5NmI0ZjRlM2QzODE3MzdmOSJ9" + } + ] + }, + { + "id": "claim_143f677c70254bd78d0319c8c0e25aae", + "statement": "Mixed-type ordering ranks Null, Boolean, Integer/Float/Decimal, Date/Datetime, UUID, NI, URI, String, Dict, Tuple, and Bytes in that order; compatible types sharing a rank sort together by value, incompatible types by rank, and Dict ordering sorts keys then compares key/value pairs.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L300-L340", + "version": "repo-lines-v1:sha256:57b44e6034aa40482a13a2f704e9472eb60a571b4106d23f49c912f9fc989b14:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5ODhlODMzNzc2Mzg3YTI5ZjEwNWFiYzUxMjk1OWUxMDY3OGZhYjAyNjZkYzVmN2E5ODQ1MmI5NTUzZGRmNWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjMzMxMjYyMzg1YjU0YTUzZjUyM2ZkNmFmYmExMDUwMTkyZDc1YzlkMDA2MDkzMjgzNGQxMzViMzVhZDUxMzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk0ZmM3Njk4ODVkNzQ0NWQzY2NmNWNjNGU1MzllY2EwZmVlZTMwYTgzOTM3MjBjM2MwMWQ5OGI2MDA4NWEwODciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_c043437e50d845039744896a3bef355c", + "statement": "The entity type documentation is internally inconsistent about orderability: its Standard types table calls Dict, List, and Null not orderable, but its focused Mixed type ordering section ranks Null and Dict and defines Dict comparison; that section ranks Tuple rather than List.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L201-L212", + "version": "repo-lines-v1:sha256:76e32da288e343b7decd4a133e494ad13812b987018f41e342977d522392751e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU0YWMyODUzNWI4ZDhkZmQzMWI5NWNkOThiYWU0NmVlYzFmNjU1MWIwNDBjZThiYzU3MjRlNDdmYTcxYTMyNWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI0MDFkOWVlYmI0MGM0ZDNhZTUzMDhhMWMxOTU5NmY1NTU1YjUxYTQ5MzlmZmRhMzc2ZmRlYjYxYzk0MjBkMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE0NmQxMGYyOTlmYmNkYTFlZGJhNzI0MmUwZjM2MWQzYTFiYjQ5MTFhMTMxOWZiMmYzYzIwMDI1ZWFjYTg3MGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ3MzcxNzJhODUwZTAzMmIwN2E3MDg0NzQ5MWI4ZmRlNDU1OTBkOWMwNWM0ZDZkMmNiMzA4MGQ0MTRkYjQ4MWIifQ" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L240-L242", + "version": "repo-lines-v1:sha256:b512798bffde542d4463b74ba1f128faa3814093b76c019a5e86fb8b5419ea46:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmY0ZjMyYWYwOTViNDMxMjcyNjc5ODMwNmQzMWZjMDg3ZWU2MGNjOTAxNmY0NzA2OGI5MzBhOGNhZTgwODVkYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjg3YTljNDk5YTRiZmM2MDQ1MjNmZjgzNzc4NmU4OWQ1MTY5YjBkYmQyMzAzNjc1MzUwYjlmZTYyYTYzMmRjOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGY4MGQ2NWJhYzA4ZDBiZWRhZjNiOTZlNDdmNzc2MmNiNjliNTU0MGU3M2NhMzQ4YTJhZWUyMjJiMDcwYjMwMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzE2ZTcwMzNlMDVmZTRkMmZkMWU4OTBhNTFmMWI2NzRhYTk3YTVkYzg0NDdjYmZlZmQzMjY2M2UwNDRjOGE0YSJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L300-L340", + "version": "repo-lines-v1:sha256:57b44e6034aa40482a13a2f704e9472eb60a571b4106d23f49c912f9fc989b14:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5ODhlODMzNzc2Mzg3YTI5ZjEwNWFiYzUxMjk1OWUxMDY3OGZhYjAyNjZkYzVmN2E5ODQ1MmI5NTUzZGRmNWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjMzMxMjYyMzg1YjU0YTUzZjUyM2ZkNmFmYmExMDUwMTkyZDc1YzlkMDA2MDkzMjgzNGQxMzViMzVhZDUxMzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk0ZmM3Njk4ODVkNzQ0NWQzY2NmNWNjNGU1MzllY2EwZmVlZTMwYTgzOTM3MjBjM2MwMWQ5OGI2MDA4NWEwODciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_760ffefc72294a5ead0f947472b45470", + "statement": "External source types must map into the entity model; unsupported SQL column types must be blacklisted or coerced in a custom query, and mappings differ across database drivers.", + "evidence": [ + { + "resource": "repo://hub/source-datatype-mapping.rst#L21-L402", + "version": "repo-lines-v1:sha256:4750a2b174e86c4b634c39765921aa791d6e1fb9df88e2846439730205fb3556:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgyLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiIzZGE5ZDA2OTkwZTFjZjhhMWM4YmI1ZTZmNzVlZTNiMDg1Njc3MmFhYWVhMTA3YzQ4MjIxMzcwZGNjMjllMTc2IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiIwZTRlN2M0NjY0NjlmYjc3ZTAzOWM0MDI2NzRlN2E5ZTdiN2IxNjVjODhkYzk3MjkzZmE2Mzg3MjllMjllNDlmIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiJhOGY2NDMzMThiNjNmZTdkOGJjNDhiMDY0YjQ0ODVhZDEyZDNmY2U0M2ZmODM5NWIwZTFhMmI5M2JjMDk2YzUwIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MCwiZm9sbG93aW5nQ29udGV4dEhhc2giOiJlM2IwYzQ0Mjk4ZmMxYzE0OWFmYmY0Yzg5OTZmYjkyNDI3YWU0MWU0NjQ5YjkzNGNhNDk1OTkxYjc4NTJiODU1In0" + }, + { + "resource": "repo://hub/source-datatype-mapping.rst#L8-L19", + "version": "repo-lines-v1:sha256:44505378989ffe4c408d4248eec376358d8efb503fd5ed8c6e43ba295e36340b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMyMDQyYmM1MDIxZDg3MDQ5NWU3ZTJmYjJjYTUyZDY0ZDgxZTY4NWI1ZmIxOWNjMDVlYjk0OWE4MmM1YjE4MjQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZlN2I0YmZkNDQ4ZTI5ODJjYzEyOWJkOGRlOGQ1NzMxYTVmZGQ2OGJmNzU0YTUwOTFjOTQ0MGUyYjdiNmY4YTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdiZWY2NmU2N2FlNWFkNWY5MWRlMDc4MDQ5ZGY3ZGY4ZDhkMWIyMThlZjk1MzEyYjM4NTgzZDQ0YWY3NzdmZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk2MGY3OTlkZGJmNGJkYzM0ZjIyMDJkOGZhN2UwYzRlYTNlZjJlODU1MjFlYjQzMWY3OWQ4Yjg1ODQxMDA4ODUifQ" + } + ] + }, + { + "id": "claim_e05ba976e42c46b4b85e6881a3ebca8b", + "statement": "SQL Server's documented numeric mappings are INT/TINYINT to Integer, BIGINT/NUMERIC/DECIMAL to Decimal, FLOAT/REAL to Float, and BIT to Boolean with 0 false and 1 true.", + "evidence": [ + { + "resource": "repo://hub/source-datatype-mapping.rst#L37-L71", + "version": "repo-lines-v1:sha256:416f506851a83bb12693f6e6c7fa3019d0c38243992c7fb321d86aeaf0055a45:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzMTdkZjhkNDZhY2I0NDljYzJjYTQyYTg3MDA5ZjM2MWQ0ZGM3MTZlYjBlMTU4NzY0YTU2M2RkNjlmZGVhZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjExOTE0OTRlM2FmZjhjOTk3NDM5ZGRkZmJhOWJhNTNhYzJjYTE4OTdmNGFkZjZmMzBjZmJjYjg2NWIzYzQ4YjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkxMGQwMmU1NzNhNTllMGIwNTY5MjhmOTUxMGM3YWI4Mjc5ZGRkZDVhNDU5ZDU3ZmZjMzhlYjIyN2Q5NWNmYzIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFhN2Q2MjhlMzI1YmQ2YjkxMWI4NWVlOThkMmIyNDRmM2JmYWY2ZWY4M2IyM2Q0Y2JhODM1YzQzNmI4ZWY2ZDkifQ" + } + ] + }, + { + "id": "claim_d19297345ce04c13b691f9846a7aef52", + "statement": "SQL Server maps CHAR/VARCHAR/NVARCHAR/XML to String and UNIQUEIDENTIFIER to UUID; DATE/DATETIME map to Datetime with timezone-bearing values shifted to UTC, while DATETIME2 and TIME are driver-formatted strings and datetime-parse can convert DATETIME2.", + "evidence": [ + { + "resource": "repo://hub/source-datatype-mapping.rst#L65-L106", + "version": "repo-lines-v1:sha256:051a0a5a53089521b0245ce2a4b549c4c150b63f1d30133e3da683c8f1a7f20e:eyJzZWxlY3RlZExpbmVDb3VudCI6NDIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg5NTVlYzcwY2EzNzcxMjAzZmQ4ODI4MGM2YTc3MTM2MjllNzNkOWUzZDViNjdhMjU4NjFhOTA4NmU4N2NlYzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM4MWM5YzI4MzExZjRhYTY1YTE5ZTA0ZjhjZTYyMDI0ZjEzOThmOWI3YzEyZDY5ZjVjODY2YWFlOGRjYzJkOTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUxNDQ5NjUyZTZmODdhNTc2ZWU5YzM5MzExMTkxN2ZhODAxYTc4MjQ4NzAxNDU5ZjViN2NiMWQ3ODg2NzJlOWEifQ" + } + ] + }, + { + "id": "claim_c39bdf7f399b43f383c5386f3c7a4e41", + "statement": "Oracle's documented mappings are INTEGER to Integer, NUMBER to Float depending on column definition, BINARY_FLOAT/BINARY_DOUBLE to Float, CHAR/VARCHAR/VARCHAR2/CLOB/NCLOB/XMLType to String, BLOB/RAW/LONG RAW to Bytes, and DATE/TIMESTAMP to Datetime with timezone-bearing values shifted to UTC.", + "evidence": [ + { + "resource": "repo://hub/source-datatype-mapping.rst#L124-L184", + "version": "repo-lines-v1:sha256:9fbe979dfa5e8af4609114b1b886ed4d457bde3b3b243c2091798f496dfb31dc:eyJzZWxlY3RlZExpbmVDb3VudCI6NjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhM2NmNmMxODVmYzM5MzQ1MzBiZTNhNDMwYmQ1NDM1MGQ1NTZiM2JhZDMzYmEzYjc2OGNkNDU1ZWY5NzczNWUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkxMGQwMmU1NzNhNTllMGIwNTY5MjhmOTUxMGM3YWI4Mjc5ZGRkZDVhNDU5ZDU3ZmZjMzhlYjIyN2Q5NWNmYzIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ2NzY3MmU5ODdkOWFhZjBlNTY1Nzc5ZDMzMzA5MmM5ODM1NzA4YWMyZGI3OWI4YzkxNjdiZTIzY2VjNzc0YjkifQ" + } + ] + }, + { + "id": "claim_5951ec3111344ac58b828ab69f841c00", + "statement": "MySQL maps INT/TINYINT/BIGINT/BIT/BOOLEAN/YEAR to Integer, with BIT/BOOLEAN represented as 0 or 1 and YEAR documented as 1901–2155; NUMERIC/REAL/DOUBLE/DECIMAL map to Decimal while FLOAT maps to Float.", + "evidence": [ + { + "resource": "repo://hub/source-datatype-mapping.rst#L202-L240", + "version": "repo-lines-v1:sha256:1481babbf43ddc6c83f5e70c7e2cbbe0803942965f6d3a12540aa0785fa0830f:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzMTdkZjhkNDZhY2I0NDljYzJjYTQyYTg3MDA5ZjM2MWQ0ZGM3MTZlYjBlMTU4NzY0YTU2M2RkNjlmZGVhZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhlMDg5NWZhMTZiNzE0MjEwYzM4YzY0ODRmZjk3MmE4YzAzYjA2ZDM3ZDY2MDE4MzI0MWZmZmZiMDJhYzdmNmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkxMGQwMmU1NzNhNTllMGIwNTY5MjhmOTUxMGM3YWI4Mjc5ZGRkZDVhNDU5ZDU3ZmZjMzhlYjIyN2Q5NWNmYzIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNlNTZmODcxZTc0MDAxNTkzZjE5OTYwNjdlYTQ2NjkyYzRjODU3YWI3ZDcyYjUzZWQyZDE1MDgwYmIwYzljODcifQ" + }, + { + "resource": "repo://hub/source-datatype-mapping.rst#L275-L277", + "version": "repo-lines-v1:sha256:b650fa2b76f15ff07ef4efb47e1296310c3b053c55bf76629166fb9aff25b9ab:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDU3NWM5NzVhMDNhMzQ4Y2MzNzJhMDgyMTU3OWRmMTI1YTc0YjRmZDRjOGRiZDY1NDQ4ZGQ3ZjY0YWEwYzIyZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGMxYTUxMTc5ZDBhODJhZjczOWFiZDc1Mjg0ODc0OWRjNzJlZWY2ODI3ZDM2MDFmNjE0NmUxMWMyMzc0NjBkMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjIzNWQ3NjVlN2MzNGQ3NThkYzk4ZTQxM2YzMmUyZjllZDBlN2VlODc4YTU3MzhiOGQ2YTg0NzNmOTQxMmMyZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2U4ZjM5YTUzZWI2ZmNlMzBlNmEzN2IyYjc1ZDcxNTFiZTE2MWNmMTFkMGIxNTk4ZWM3MjBkYzY2OGYwNWJjMyJ9" + } + ] + }, + { + "id": "claim_6cdbbfda7ae147f29dacd35fb89ee7d2", + "statement": "MySQL maps CHAR/VARCHAR/TEXT/TINYTEXT/TIME to String; BINARY/VARBINARY and TINYBLOB/MEDIUMBLOB/BLOB/LONGBLOB to Bytes; DATETIME/DATE/TIMESTAMP to Datetime; ENUM/SET vary with their underlying types and SET is a list.", + "evidence": [ + { + "resource": "repo://hub/source-datatype-mapping.rst#L242-L310", + "version": "repo-lines-v1:sha256:a75214eeda177b0516b6c91f66b1248f0e33994016f6383eee2edec05b96a77a:eyJzZWxlY3RlZExpbmVDb3VudCI6NjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg5NTVlYzcwY2EzNzcxMjAzZmQ4ODI4MGM2YTc3MTM2MjllNzNkOWUzZDViNjdhMjU4NjFhOTA4NmU4N2NlYzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM2YzU3Yzk3YWViMjc5ZmYzYTUwNGNlNjIxYzA3MThkNWRmMmE1MDNiNzliMTAzNmNkMWViNzc2ODAwMGU2ZjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRhNWE2YzIxMmVmOWNiMTNkMDI0MzM1NjI3N2EyNGQ3MTZjNGZiYjE5ZDA3Zjk2Mzc4NDc4NWIzMWE3ZjNlMTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRkNTU5ZDc3M2U5NjhlMmY1ZDk4MmJmNWU0YzA2OWE3M2YyMWFjYzIzZDNhMjNiZDgwNmRiNjc5M2Q1ZjhlZjUifQ" + } + ] + }, + { + "id": "claim_94327d41d5554d1da20a6dc2ea402848", + "statement": "MySQL DATE becomes a Datetime at midnight, its DATETIME import shifts timezone-bearing values to UTC, and its TIME strings use hh:mm:ss[.nnnnnnn].", + "evidence": [ + { + "resource": "repo://hub/source-datatype-mapping.rst#L266-L282", + "version": "repo-lines-v1:sha256:ee58c081b35b5f1a0fe065335e6d91aee3448d608c1be9dbd52f6ddd78034a95:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRkZWI4MjJiNTI5NTIzZDZiMjg2YTliZTc2ZWY1YzA1Njc2MGUzMzdlOGZkZjY0NjU4YjNlZThkZDdjM2UwNGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJhZjYyYmQ2NmMxNWFiZTg3NTczZWQ5MWJhZjMxZjQ1Y2QzYTUwNDQyOTI5MDYzZDQ2Y2ZiOGUzNDA2MjkyMTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ3ZWQ5ODE2YmEzZTkzYmE1NzBlMGI2NjJjMjVlYjNmYWNlNTJiMjFkZmFiNTM1ZDdiNDUyYWU4ZDYzY2M4NTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE1ZDhkYTBhYjM4MTA4NTRiNTBmNTU4ZDY1YTM5M2ZlMzgyMzVhMTY0MzZiYmM4ZjY4ZDMyZWE1MTQ4MWNkYWMifQ" + } + ] + }, + { + "id": "claim_fbb681d318af463aafee812671715b10", + "statement": "PostgreSQL maps INTEGER/SMALLINT/BIGINT to Integer, NUMERIC/DECIMAL to Decimal, REAL/DOUBLE to Float, BOOLEAN to Boolean, CHAR/VARCHAR/TEXT/DATE/TIME/UUID/XML to String, TIMESTAMP to Datetime, BYTEA to Bytes, and ENUM according to enum type.", + "evidence": [ + { + "resource": "repo://hub/source-datatype-mapping.rst#L329-L402", + "version": "repo-lines-v1:sha256:be812c5aaf976848399d8b2e2fcfc6a375f541028f7fcd692783f8ca8e4e5e67:eyJzZWxlY3RlZExpbmVDb3VudCI6NzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhM2NmNmMxODVmYzM5MzQ1MzBiZTNhNDMwYmQ1NDM1MGQ1NTZiM2JhZDMzYmEzYjc2OGNkNDU1ZWY5NzczNWUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkxMGQwMmU1NzNhNTllMGIwNTY5MjhmOTUxMGM3YWI4Mjc5ZGRkZDVhNDU5ZDU3ZmZjMzhlYjIyN2Q5NWNmYzIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_a9a8300c549c481ca7efdc3efa25adcc", + "statement": "PostgreSQL DATE is a YYYY-MM-DD String and TIME a driver-formatted hh:mm:ss[.nnnnnnn][+|-tz:offset] String; timezone-bearing TIMESTAMP values shift to UTC, and PostgreSQL UUID is String unlike SQL Server UNIQUEIDENTIFIER's UUID mapping.", + "evidence": [ + { + "resource": "repo://hub/source-datatype-mapping.rst#L100-L102", + "version": "repo-lines-v1:sha256:daa090462591cc46013d76cd4a5319cb1d32d221a80e893f95b594b7fe253cfa:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDUxMTQ4MTk2NjBjZmE1M2M2NTE4OGNiYzdmNTQwMGJkMDk4MGEyMDFlYzU1NzVjOGZhODlhOGZjZTE5MWNhYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjRmMmRhNjMzN2JiMGUyNWQzMjczZmYwNDE3YTQzMDdmYmYyZDA2YzAxM2NlZTY2ZDczMjdlMGVjYTQ5Y2MxOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTlkNjEyNzQ2ZDI3MTBiOTI2Yjc4ZGNiYWZhNzBkNjNiNzUzZjMwNGJjZjcxOTE4OTMyZThhZjE5NGFiNWVjNiJ9" + }, + { + "resource": "repo://hub/source-datatype-mapping.rst#L373-L398", + "version": "repo-lines-v1:sha256:b94cb25cf89c72f95bdbe12c76e3a645b650d65735311563540d5a56db4bad6f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE1MTVlMjdjOTJjNzFjNTY1ZjE0ZDA2YzlmYmQ3YTg2NWVmOWIzZDMxZGEzMmQ0YWJiMWUyMzZiNGQ0YTY4YTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ3ZWQ5ODE2YmEzZTkzYmE1NzBlMGI2NjJjMjVlYjNmYWNlNTJiMjFkZmFiNTM1ZDdiNDUyYWU4ZDYzY2M4NTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE5ZDYxMjc0NmQyNzEwYjkyNmI3OGRjYmFmYTcwZDYzYjc1M2YzMDRiY2Y3MTkxODkzMmU4YWYxOTRhYjVlYzYifQ" + } + ] + }, + { + "id": "claim_d85856265cb04fe5ba43e232825b82c7", + "statement": "The SQL mapping reference contains legacy tested-version statements and describes several native temporal ranges as unlimited to nanosecond precision, whereas the entity Transit wire-type reference gives bounded Date and Datetime ranges.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L275-L286", + "version": "repo-lines-v1:sha256:617687d9a6f88c960bcb2c2e293962d9615fe9009632c95fe78393ad032c29db:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkwNmM2ZWEwYWVhYzc5M2MwY2I1NjRiNDczOTI2MzdiMTI4NTE0OWQzYjQwNjI3OWFiNGIyMWEyYjE5NGEyYjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhmZGZiNjVkY2ViOWU3YjUwZGUyYWU4NWQ5M2ZkNWJkMDIyODg0YmY5MGFhYjRhOWZkYmIxMTQ2MjJmMDIyYmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc2YjllMzU5MmU4MGU5MTc0NDczZmJkMzEyMDM1NGZjOTE0NDZkY2U4ZmU5YzkxYmRlMmJiNDJiYTYwZDI5MDUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNiMGVlZDg1YzVkMDgzMTJkNDUyY2I3MjFmZjJiOWRkNjY4MjgxY2FmNTdkZWNkNTBjMGRkNDI1ZTYyNjViYzEifQ" + }, + { + "resource": "repo://hub/source-datatype-mapping.rst#L113-L114", + "version": "repo-lines-v1:sha256:b19cb8c5bca15af8c80fe44fabba3ac683eccf0df218e0e334faae1facd3b5ae:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTU0NmM5YjBjMmI5N2FkNDYyMDJjZmJlOWViMGFlMTJiOGZkMDhmNmM5ZDJlZTdmMjM0ODZhZTgzMGUwOTczMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDZlMTM4ZWFlNTM3ODYyMTA1Zjc4ZTkxMzQ2YTRkOTI0YmRhMGIxNzA5ZDE4MjMzMGRjODI2Njg5NjFiZWJlZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjliZWQxYjY2YmIwN2U1ODJkMWFiZDlhYjc2YzllZDZiMmNkYTE2MzdlMmRiM2I3NWVjM2JkNzRlYjg4NWFiMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2ExNzAwYmYwM2JmZDc4MjRkZTNlYTg4MmNhYTI2YWQyMzkxODA3ZTFhYmFiZGM5NmI0ZjRlM2QzODE3MzdmOSJ9" + }, + { + "resource": "repo://hub/source-datatype-mapping.rst#L152-L160", + "version": "repo-lines-v1:sha256:b02bd9a6b81747fb5ccaa873d6eeb8ee9cae724c30391ad16934afe090b26fd3:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDg1ZWYxN2M0NmJiZTM2N2NlMjcwNjA3MWI0NGYyZDY1YzI3ZWQ2NTVmNjUyYzBkNWZiMTMyNTdkYmZiN2Q4YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTdlNThjYjE5NzZhOWRmMmU4OTIzOTk0OWRkODBjMmFjYzViNWJiMjMxYTgzNTY4OWRjZmIzNDBiNWI1NzNhZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDdlZDk4MTZiYTNlOTNiYTU3MGUwYjY2MmMyNWViM2ZhY2U1MmIyMWRmYWI1MzVkN2I0NTJhZThkNjNjYzg1MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzY5MzIzNGZiNmMwNDVlMGU0MzU2MjY0N2YxMWFiOWVkZWM0Yjc3MjNhYjdlY2Y5YmIwZWI2ZmUyMzMyNWZiZSJ9" + }, + { + "resource": "repo://hub/source-datatype-mapping.rst#L191-L192", + "version": "repo-lines-v1:sha256:02cd10a56c5efbb07c9bfc8b8af9828989827e8d727f70bc0d51372b3e566961:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTFjMGRiZWEyMzg5ZTgxNTQ5ZmY3NzMyZTVlNTJjYjcxNmIwNjQwZjgxNjY0MWY0OTFkNWE2OGI4YzkzNDczZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZWRiNGYxZTY0ZTk2YzUzYTM3MzFiZTE5MTIwN2Q2YWE0MDA0MWM2MWZiNWVmMDA0YjQ5OGQwY2UzYjliNTBhMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDE0ZDE5ZDY3MTdjNTgwMzJlNGM5MGFjZDYxODNkMjZiMDg3OTc2MGEzZjQ3NWFiNmJhZTFhOTY2OGFiNTBhOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2ExNzAwYmYwM2JmZDc4MjRkZTNlYTg4MmNhYTI2YWQyMzkxODA3ZTFhYmFiZGM5NmI0ZjRlM2QzODE3MzdmOSJ9" + }, + { + "resource": "repo://hub/source-datatype-mapping.rst#L26-L27", + "version": "repo-lines-v1:sha256:914d3dda8dd3b5e7f40d35a4923212901370e7496a837eabdadf5c696dd5c2d8:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDhmYjI1OGI1MjExY2Q0YmUyM2I2ZDk0NTA0ZGZhZWZmZTRkNjUyMmMwMjg2M2YwYjNlOWVhZmM3ZmVmZjUxMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzliZGQ0MTgxZjEzNDc5MWQ2ZTFhZDVhMjk4MmFkMmEzODQyZjUzMjBkZTUzYzhhYTM2MjlkYWQwMjNiYzU1MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmM5MjU5MmY1ZWNiYTRmYjIxZTljMmY2YzAyOGJlMWRhYzFhMmFkYWMyOWQ1NzU3YTgyZGVmNDEyMWFkNGRkYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2ExNzAwYmYwM2JmZDc4MjRkZTNlYTg4MmNhYTI2YWQyMzkxODA3ZTFhYmFiZGM5NmI0ZjRlM2QzODE3MzdmOSJ9" + }, + { + "resource": "repo://hub/source-datatype-mapping.rst#L318-L319", + "version": "repo-lines-v1:sha256:ba8369161f94d71447963e6056383b813278c6645416029002897df81fdb917c:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTBiNDNhNzYyZDVhZmRjNjY2MzRhMTcxZjNlMjY3NGI2NTYyMjRjMTEzZjM5MGY4MDMxMjI3OGI5NjVlNGE1OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTgyODkyMDUwZjFlMDIxZjM4NTMzMWFmMWEyZWQ2ZWU3N2U1YzEzZDUyODFmOWRjYzQ3YzdiYWM2OTBiMmJmYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmNjNmVjYmI0NTc0ODA5ZmVkYTFmNmI1NzZiM2NmNGUzYTQ3NDI5ZDkxY2JkN2FjNjJjNDU2NjMzYjNiNDVjOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2ExNzAwYmYwM2JmZDc4MjRkZTNlYTg4MmNhYTI2YWQyMzkxODA3ZTFhYmFiZGM5NmI0ZjRlM2QzODE3MzdmOSJ9" + }, + { + "resource": "repo://hub/source-datatype-mapping.rst#L373-L376", + "version": "repo-lines-v1:sha256:d88df572b3f7cacc17a5431313863fdca75bc701a4b903119c4db7d3bf7c44ca:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTUxNWUyN2M5MmM3MWM1NjVmMTRkMDZjOWZiZDdhODY1ZWY5YjNkMzFkYTMyZDRhYmIxZTIzNmI0ZDRhNjhhOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTdlNThjYjE5NzZhOWRmMmU4OTIzOTk0OWRkODBjMmFjYzViNWJiMjMxYTgzNTY4OWRjZmIzNDBiNWI1NzNhZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDdlZDk4MTZiYTNlOTNiYTU3MGUwYjY2MmMyNWViM2ZhY2U1MmIyMWRmYWI1MzVkN2I0NTJhZThkNjNjYzg1MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzRiZjU3NTYwYTY0NzkzNjJkMTI3MjBkYzQwMjZkYmE3YTE3NzBkODA0OWY0ZDAwMDAxZDY3YjMzZGYyNzdhNCJ9" + } + ] + }, + { + "id": "claim_0f603292a3784507be0d7a4227615388", + "statement": "Namespaces preserve attribute origin for multi-source merging and late schema binding; an attribute x first created in pipe y normally becomes y:x, while namespace-aware copying preserves existing property namespaces.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L333-L344", + "version": "repo-lines-v1:sha256:89d51e1bab60f5006aca15f4761401872b5ce48c421f6eaaf335b79e45570903:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA1OGE3MGVhOWViOGYzMGMwNjRlMGE5MjNjMmQ1MjRjMGY5YmM2ZmY4Y2FiOTM4ZTUzZDM5NDMyYzE5N2M2ODEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzNDI0YTk3NTZiYmE0NDk2YjBkMmRhNDUzYjU4NmFmMjkwZmI1ZTY3OTU3ZjI0YjVjNzZmOGI0YTMzODI0NTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE3N2VmMjNjNmY2OTFkNDI1ZTNiYjEzMjViNmQ2MWJmNGRlMzI4YTk5NGYzMzQzZmYwYjJmMDVlNzA5ZDczYjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZjNTdiZGQyYzE4OWJmOTY3MjYzNjQ2YjQ2YzM4OTFhMTkyZWU3NDFkMmI2Mjg2YTc2ZDc5N2RiNjJmYzU3YWEifQ" + }, + { + "resource": "repo://hub/features/namespaces.rst#L8-L10", + "version": "repo-lines-v1:sha256:4b058feae7cc5a4fe4d0969db69fdfcaf3cc840df9f5e87f4d6bd7c2c56f372e:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTg2ZTU1ZDcyYmUyNzE2NjIyMWU1NjA5MzBjM2VlNTIwOWRkNDQzYzVlMzQ1NDAyZjU5ZTFhNzViOWRhMDhiNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGEzM2U0MDZmMjk2MGI3MGZmZDZjODg0OTMwZWVjYjg2ODFlZWNjNGI4MzVlYjdkOGQ0NGIzZTZkMDljNGQzMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDJhZmUwZGFhYzM3YTIyNzE1NTU1OTIyZDRhNzc4ZjY3ZTRlMTMzOTdmODRiNWM2ZmRmOGExODQ2ODJmOWFhZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjMxN2UxOTZjMjk3MDY2ZjkzYjc1MGEwN2FiMTQyZTI4Nzk0NTc0MGJkZDNiYTM1YTYzZTI4ZWEwYTRlOWE4NyJ9" + } + ] + }, + { + "id": "claim_ef3bcae6bb0d4c098538d6109625dfc1", + "statement": "The overview concepts.rst sentence saying attribute x in pipe y becomes x:y contradicts its own examples and the focused namespace feature and DTL references, which establish namespace-first y:x placement.", + "evidence": [ + { + "resource": "repo://hub/concepts.rst#L14-L36", + "version": "repo-lines-v1:sha256:839ee114497542358875ecd26630a0a3d2f68b7083d31dc00824e11a3b6eb139:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMxZWM5NjE0NjkzN2QzNjVjZDc3ZGJhNzc5NDg5YjgyZmZmOTgwODVhYTg2MzFmOTdmOGNkZTFkMDk2YWNhNWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMyNzAwMDI1YzhhNDczZmNjYjU4NmIyYmIwY2M2ZDU2NjU1Yzk0ZGRhZjY1NDE0ZDVhMDNlYjc2N2MzN2ViMWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNiNTZjZWQxNDBlYWM2YTJlY2JhMmJkY2Y3OWMwYTBhZjYxY2YxNTRmODUxYWZhZGZkODRjYmY4MTNlYTQwNTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNjMmEyMTlhNTYxYWRmNzhlNzNjM2M4ZDZkMzkwZDAyMzQ5NzNmZWU0MjE0YTliY2U2MDRiM2MzMmUwZDU0NzgifQ" + }, + { + "resource": "repo://hub/dtl/namespaces.rst#L28-L41", + "version": "repo-lines-v1:sha256:b91917bc43a97e76fb34ac53e4201c1d659df921407aa736fb34e5767f79f422:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2ZWNiYWEzZDc4YjIxODFjODk1Yjc5ZDdjYTVmNTQyMmQ3NTE5ODVkNzRjMWE2NGI0OGEyMWZkMWQ0OTliMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhlYzQzYzU3OTlkOTljZDc3NzVmZjhhMDk4OTUyYjcxZjAxMjBmOGRjMmMyMjllOTUzYjhmMDZhMmRlZjlhNjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYwZmNmNjFlMmMwYjg0ZTJlMmMyZjc3MTY2ODVhODcwNTc0ODI2NmE3ZThkZjI2NzNlMWI4YzAzZjdlNWNhNjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/features/namespaces.rst#L10-L32", + "version": "repo-lines-v1:sha256:92a43da516d5f28f2e558a29d6df6722980b68a67ed563d63ec295cc7e05c103:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRhMzNlNDA2ZjI5NjBiNzBmZmQ2Yzg4NDkzMGVlY2I4NjgxZWVjYzRiODM1ZWI3ZDhkNDRiM2U2ZDA5YzRkMzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMyNzAwMDI1YzhhNDczZmNjYjU4NmIyYmIwY2M2ZDU2NjU1Yzk0ZGRhZjY1NDE0ZDVhMDNlYjc2N2MzN2ViMWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQyODQxYzk0M2Q5NzhjZjIwYTJjMTA4Zjk1NWEzNzY2NDJjMjdmMmZjNTM1MjMyNWNlNDEzOWE1NDEyMjFiNTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM5ODU3ZWJlMWY2Y2QzMWQzM2FjYzc3MzQ5NTNhYmNiYzdhMmJkZjhmNGRhY2UwMzE5MTRlNmFkZjQxMjY0MzYifQ" + } + ] + }, + { + "id": "claim_1bf78088a8594526a405239fc04d7e90", + "statement": "A namespaced _id retains the reserved property name and stores a string value; property names and colon-bearing strings are distinct from typed NI and URI values, and colon syntax alone does not make a string an NI or URI.", + "evidence": [ + { + "resource": "repo://hub/concepts.rst#L38-L49", + "version": "repo-lines-v1:sha256:b5ab3006224ab8f6419c4d2ab129692d4d7910a1bd4931bda9f86b106912ee16:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3YTlkMWJkYmRlYmQ1MDIyMTQxZjY3MzliZmU2MWUyNTJjODM2YWRmZDllNmM2OWViOTMwMDdjMGVmNWVmMzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ3ZmU1MmU4NzEyNDVhZTdhMWI2MzcxMzhlOWM2NjI2YWU5MTc5NmRmODZhMzc1ZjBjODkwZWRmMGJjNzY2MmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImViNTc2NGZjNjk1ZjYxNDc4MDAxMWI5OGU5YzQzM2MyNzMxMWUwMTUxYTRhODE5MGY2NWIzMTllMTEyM2YzMjIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdkYTA4NTJhODRlN2RmYTQ4MTljZWVlMjQ2ODkyY2M0ZjlmMDMxOWE2NTJkYmVmN2FkOTJmM2U2YjliNGQ5OWIifQ" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L267-L273", + "version": "repo-lines-v1:sha256:062800f490adb854a93a439d22372a86244747468c4f6d2d0f618fd5240f2851:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTIxMjU1MGQ4NTg3YTg0OWEzYTkwYmU1MDJkZTJmOTdkZGI4OTJhMTEwNDllM2FhMzY4ZDgxOGJlZDdmOTY4OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmEwZGQxNjYyMzBiMjZiNjNmMDE4OTcxY2MzMDlkYzZjYWE2NDljNjJkOTFjMGQ1YmNmMWEwOGM4ZjUxOTAxNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTcwMWM4NDFkNGQ1OTc2NmRlODU5ZTgzZGFkMDg0YjRkOTU1NjI3NGY2ODNjMTZiNWE4ZWRhYWQ3NzMwMWMxNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmM2MTA3M2M2NmQwMTRhZWQ2OGMwZjljZWI2ZTcxNDRmOWM1MzExZWM5ZGM1OTI2NDhmY2E4NWFhZjJjYWMzNSJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-namespaced-identifiers.rst#L19-L28", + "version": "repo-lines-v1:sha256:32a50ae84bbd419cc6d2069b5e16d63317849f185754862df0a7fd178f6dee74:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNjMzRlOTEyMTYyYjY5ZTU0YWIyNDIzNzk4YWMyMDJkNjRmMTE2YzEzODQ2OWZiNzNhZjM2MDM1MjZhYThmZDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1NGZiMDBjNGEwNDRkNzZlNTFlZTQ0MGUwZTBhNzRiZWM5ZjY1Y2JhNTAxOTUwNjQwZTFjNDc5MWI2MjllNTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMwMDYxODRjMzgyNDI5OTgwZWEyYzY1YWE0ODI2ZTQ2ODg3YmQ3NzUwMTBlOTY5MWMwNjAyZjFkMDc0NTAxZjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhlMzQzMTUxYmZkOGNiMGE2Y2Y3Mzg2NzFjMmRhNzlkOWQxODY4OTRjMzE2MmY4ZjhiNjljMzE5MTM1YThhYmYifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-uris.rst#L19-L27", + "version": "repo-lines-v1:sha256:253f6366856e070b120f3c26e103914cefeb487f1ccc78da4aafe31bbe5c316b:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzU0NTVlZGQ1NmVkMWViNzRkNmE5OTE0ZDQ1M2Y5NDJjNDYxNzUwNzQ3NzhjOWQ0ZjNhODczMzlhOTg2ODMzZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzU0ZmIwMGM0YTA0NGQ3NmU1MWVlNDQwZTBlMGE3NGJlYzlmNjVjYmE1MDE5NTA2NDBlMWM0NzkxYjYyOWU1NiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzAwNjE4NGMzODI0Mjk5ODBlYTJjNjVhYTQ4MjZlNDY4ODdiZDc3NTAxMGU5NjkxYzA2MDJmMWQwNzQ1MDFmNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTFlNWEzY2ExOTNhZWM0NGU0MjE4YjBhNzI4M2I3MTczYTU3YWE4NjY3M2U4Zjg4Mzk4Nzc0NzkyZTYwZGQ4OCJ9" + } + ] + }, + { + "id": "claim_42d84502d89e45fda2379d078c896b17", + "statement": "namespaced_identifiers defaults false in service metadata and is inherited by pipes unless overridden; pipe namespaces.identity and namespaces.property independently default to the pipe id.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L54-L57", + "version": "repo-lines-v1:sha256:a2b011fadf9fbfb7ca402ff74857302b0ab9ac45c3680413079330ca5f34f175:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWRlYTM1OGI3ZDczMWNlNDYyMmNiODQwYTYyMDIyNGQ1ZTc1Y2NmYTUwMTNlMjkyYjZiNGE3MzY1OGNiY2FmZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGVhODE0MGJhYjdhZDZjYTZlY2IxNWE5YmQzNTZjNzQyMmYxY2UxN2NhMjJhZWRjNjNiNTNmNDBjMDczNjQxNiJ9" + }, + { + "resource": "repo://hub/features/namespaces.rst#L61-L76", + "version": "repo-lines-v1:sha256:513f8213dc790cb5f249628111e93456450bd3e9495bedd1d3c8ae478dcd006a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlkZWEzNThiN2Q3MzFjZTQ2MjJjYjg0MGE2MjAyMjRkNWU3NWNjZmE1MDEzZTI5MmI2YjRhNzM2NThjYmNhZmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1ZmNmZjY5YmQ4OGQ0NTUwNmE2ZTE0YmJkMDRkYWEwMzlkZTE3ZGNjNTQ3YTE1N2IwODhmNTBmYjdlYTgwZjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZlZjgyNWZlZmQzODYzMzE1NTM2YTQxYjMwMTMyMDUxZWM3ZTliZWY5ZDlhYzQ3Y2U2MDQ0NTA5ZDZiZGE5NDEifQ" + } + ] + }, + { + "id": "claim_7a9bcff0ac6440b08f431ffd0621146c", + "statement": "add_namespaces adds current identity namespace to _id and property namespace to properties before the first transform, normally inbound; remove_namespaces removes namespaces from _id, properties, and NI values after the last transform, normally outbound.", + "evidence": [ + { + "resource": "repo://hub/features/namespaces.rst#L79-L92", + "version": "repo-lines-v1:sha256:9e6bc1d03bb7142ef5394b21549a6d998663f9d12dda9c29a0d82a99fe831e7a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlhOTZhMTU0ZGNlYmM5ZGE3MmRkZGE3M2EyYmQ0NTM4YjA5OGIzMTBmZDQ5M2JmNjk0MjA5M2E5MmY2MWFiMTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjViZDAyZGY4MzRiMTMxZjBjNTdiZGU0MzE3MGI4MTZkZWVhZDdkMjJkMzRmOTdhY2Y4NTdmYWFlMWIxNTQwZWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQyYTM2YTAyZDQxZmZlZDdmODM1ZWIwNTI2NTBkNmVhOTJiZmY3MmZiMjVlM2MxYTVlMTg2YjRmMzUyYWE5YjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYifQ" + } + ] + }, + { + "id": "claim_41ae0eef73b844ab8b8e594c3feed432", + "statement": "When namespaced_identifiers is enabled in service metadata, documented add_namespaces source defaults are true for csv, kafka, ldap, sql, embedded, http_endpoint, and json; documented remove_namespaces sink defaults are true for csv_endpoint, elasticsearch, mail, rest, sms, solr, kafka, sql, http_endpoint, and json.", + "evidence": [ + { + "resource": "repo://hub/features/namespaces.rst#L79-L92", + "version": "repo-lines-v1:sha256:9e6bc1d03bb7142ef5394b21549a6d998663f9d12dda9c29a0d82a99fe831e7a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlhOTZhMTU0ZGNlYmM5ZGE3MmRkZGE3M2EyYmQ0NTM4YjA5OGIzMTBmZDQ5M2JmNjk0MjA5M2E5MmY2MWFiMTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjViZDAyZGY4MzRiMTMxZjBjNTdiZGU0MzE3MGI4MTZkZWVhZDdkMjJkMzRmOTdhY2Y4NTdmYWFlMWIxNTQwZWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQyYTM2YTAyZDQxZmZlZDdmODM1ZWIwNTI2NTBkNmVhOTJiZmY3MmZiMjVlM2MxYTVlMTg2YjRmMzUyYWE5YjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYifQ" + } + ] + }, + { + "id": "claim_abc11eebc1514fba92c4047e844ffefe", + "statement": "Service metadata is the special configuration entity with _id node and type metadata, editable through configuration, UI, or Service API; namespaces.default is a namespace-to-URI expansion dictionary used by RDF-capable components rather than a pipe identity/property namespace selector.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L60-L65", + "version": "repo-lines-v1:sha256:1cb4cb095b05a88cf7045e8bcb3a42247970d96b0e6fa724553d7e87eb6abfb6:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTIyZTZiMGQzODJiM2JiMGNhYWViYzljNTkyNGYwZTFlYjgzYWZiODc5Mzc3NGEzZDBiZDQyZWVjNWJkMjYyYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODIwYTU1YmY4MWJkNDNhY2FmNGE0OTY4Y2U5NzkzMTgyZTQyNWYxZmE0YTYwMWU2MDg5OWVhZjQzNWRmZjIzNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTliMDliZGQ3YjhlZjZjNDc3NTFlZTVkZTIzZTZiZjgzMDc4ZjM4YjU4MzdmOTA5ODdmMmRiYWMxYWI3OGQ5YSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L7-L25", + "version": "repo-lines-v1:sha256:92d262f7a5be5f17dde046aa48cc960c39b7b4fb84591f1342f2f3b6273ea113:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAwOTJjMzA0MzA3ZDlmOGI0NGVjNzIxZTIyYTcxMjMwOTQyMjQ0NzczOGM5OWQwNGI2NmNjNjYzOTAzZmZlZjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNhMWU4NjA2YmJjOTJjZmU5MGZmYTk1ZWU0MTNjMWMwZTQ0MWUyZDNiZWQ1OTUxMWZkNWY1YTg5MTJiOTI5YzAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRhNmVlZGJkZGRmNzAyNjk4NDk4NmNiMDI3MzFmNzY2NGNiYTdkNGNlY2RiOTA4MDhhYjc5NDY5NzNjNzM4NTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFjM2UxMTdmYmFiODNhOWYwM2EzNjc0ZWYxODZkNDNhMzFmNmJmY2Q5MTc2ZDFjZDcyYmQ1NjQ1MDY2MGQ2OTcifQ" + }, + { + "resource": "repo://hub/features/namespaces.rst#L67-L76", + "version": "repo-lines-v1:sha256:2ae07393e073ff17862f7ee9dbc56746405b2d1b3a6b5ef0856df8368c09bb44:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5YjVjZWJhMzdjNzU4ODYxYjUwNTA1MjQ4MTU4YTdkNjdlNWE2ZTAyNzU3NWNiN2FhODU2ZmY0MDI4ZDIzYTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1ZmNmZjY5YmQ4OGQ0NTUwNmE2ZTE0YmJkMDRkYWEwMzlkZTE3ZGNjNTQ3YTE1N2IwODhmNTBmYjdlYTgwZjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdlZTE0YjQzOTZlMGRmODUyODNlZDMwOTBhMmJhYzI1MTgxMDVkZmRhYzQ0ZDQ0ODYxNjcyOGRhMGNhYzFkNDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZlZjgyNWZlZmQzODYzMzE1NTM2YTQxYjMwMTMyMDUxZWM3ZTliZWY5ZDlhYzQ3Y2U2MDQ0NTA5ZDZiZGE5NDEifQ" + } + ] + }, + { + "id": "claim_ee60d59b48a942b3b374e2b9404b6ed3", + "statement": "Built-in URI expansion mappings are available unless explicitly overridden for _, rdf, rdfs, owl, foaf, wgs84, xsd, dc, skos, dcterms, and gs; _ maps to http://example.org/.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L67-L83", + "version": "repo-lines-v1:sha256:ee5ba258f4e75238306f4bf10c64a7f0f9273da5f02e94e357b8a064881389da:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAwNzJjNTkzMTIxYWQwNTBlNWFlN2E5ODRjNzUyZTVmZGJiODJlMzEyNDdhOWFkMDNkNTJiZDJjZTAwMmE1NGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFiMWYxM2Q0MWU0NDVmYTJiZGU4NTliODhhYmIyMjczZmNlYzMyNjNjZDY1MzE4YzlhN2Q4MWE0ZGI4Zjk0Y2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBhMDZjMDYzNDFiZjVjZTUwYzgwNTljM2QzZGE1MGMzY2M1ZjlhZmMyNTg2ZDdkMTQxYmMyMjA4MWM0MzMyYjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU2ZGVhOTUzNTA2OWViODZkZTc2NTJkODU2MWQ0NmEwMjllZDEyMzJjNGRjMWE5YmZhOTgyZGZkOGYyMzVhNzEifQ" + } + ] + }, + { + "id": "claim_388e8d8295f54e42ac559a0d6a48cda3", + "statement": "global_defaults.symmetric_namespace_collapse defaults false; enabling it changes RDF/SPARQL URI/NI collapse and expansion so that inbound and outbound mappings are symmetrical.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L241-L248", + "version": "repo-lines-v1:sha256:b41cb24b07692054d4bcbd2068ee49a3b07fa0f30b071224913ab77bdcb408cc:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzdlOTVkMWViMmE2ZmE5YTE5MzQ4MWE2M2FkOGE3YTVjMWZmZWM1YTA4OTk0MTMxYmYzYmFjNGFkYzA4NTU4MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzY4ZDViZDk4ZGZhMWJlN2U0ZjQxNDE3YzFlNDFhNmY1NTZkMzgzY2E3ZDNjZjI2YzQ3NTZmYzYwZGQyZDNjOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjFhZDQ5Y2Q3YzhjZTkzZTdmNzhlZGI0NTNkYWE1ODNmOWZiYzU0ZjA3NzU2Njk5ZGZiNTliZTY1N2Y3OGQ5OCJ9" + } + ] + }, + { + "id": "claim_8167c90fa46e4983a96a629e3d9ec1eb", + "statement": "ni-collapse and ni-expand DTL functions are deprecated despite still being mentioned in service metadata documentation.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L58-L62", + "version": "repo-lines-v1:sha256:b1a9eea97e30ef2630484bfeb8913ca567ae20984bb62a9f61778f4932f1be90:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmFlY2JhMTM4NTcwMDI0NWI1MTQ5M2Q3NTVjZWQ0YzIzZTE5Yzc1YmQ1MDQ4ZmU0MDEyZWFjNzBkMTA1NzEzNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGFhMDMyOTRhZWJiYTQxMDljZjhmNjgyNzE5MDllMTMyOWJjYTIyNjRhYzdlNTI5Y2Q1ZDgzMGI4ZmE0NGJjNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDI2YjA5NDM4ZjdiMTkyZWQ4YmZlMTNkNjBkNjljZjFhYTNiMDlmZDg4Y2RmMTg5MzQ0NDYzY2Q0NmU5ZDU2MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzdjOTAxOTA0NjdhMjI1MjkwZDhhZDdlZGQ1MmM2N2Q2Yjg2MTUwNjRlYjkzYWFlMjM1YTljOTgyNmY2NjNjOSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L243-L247", + "version": "repo-lines-v1:sha256:43b27cb329f4d0bd31d9b72a0ae630f8ef7cbe1c34f85067bf90f0370f40921e:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmZjYTg1NGIyMmE1ZGJmYmIxYmIxMjM3YzQzNTA3Yjc2MWU1NjIwMzlhNzlkNWIzODEzYTFhYmI4Mjg5NGZjMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjIzNDVjMWFmOTFiNGQzYTNkZGU3NzkyNGI3NzRhYTM4ZWZjODc4MWNiY2JlOTVjOGUwMjVjNGFjY2FmMGY2MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzY5NjdmMTRjZDIwMjg3Njg4MGEzMzdkYTViOTAyMGUyNjc4Y2YyZGExZmQ4NzMxZTdlMzFhMzQzMmYxNDc2YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCJ9" + } + ] + }, + { + "id": "claim_7d6ac77d12f1437f9c2cbb284abb98fb", + "statement": "add, add-if, default, make-ni, remove, copy, rename, and path are namespace-aware; unqualified property references generally match across namespaces and wildcard patterns respect the boundary, with copy/remove patterns using the last colon as separator.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L301-L306", + "version": "repo-lines-v1:sha256:cc2407fbd7a49efa674cb9670a40e8b091ccf62e91d6a0529e9911c5b82f16d1:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjVlOGRkYWRmMmFjNTM1YjU3YmE1OTIxMzgyN2I1Nzc0MDdkNTUwYzA1YmIzMDIwODVhNWIwM2JhNDg0MzhiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzUyNTIxNWMwNTU3MzFjYmM3NmI4YTA0YTE4MWUwYTBhNDUxOWMwMzdlNWIzZDk2ZTc0YzBlZmU4ODAyOWNiNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjVhNzNmYmM0NzVlODkyNGMzZjg2NjAwOTBlNzM0MDE1N2UwZmQ2MWUwNmIxMzRlZTdjMGE5YjIzYjkwNDA4YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTNhZWVjYzkzZTU3MTQ4ODI3NjgyODZkYmIzNWFjNWIzNGE1ODI2MzkyNGYzMWQzMmE0ZWI2MGViYmVjMmJkYSJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L854-L859", + "version": "repo-lines-v1:sha256:cc2407fbd7a49efa674cb9670a40e8b091ccf62e91d6a0529e9911c5b82f16d1:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjVlOGRkYWRmMmFjNTM1YjU3YmE1OTIxMzgyN2I1Nzc0MDdkNTUwYzA1YmIzMDIwODVhNWIwM2JhNDg0MzhiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzUyNTIxNWMwNTU3MzFjYmM3NmI4YTA0YTE4MWUwYTBhNDUxOWMwMzdlNWIzZDk2ZTc0YzBlZmU4ODAyOWNiNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjM3ZDE5ZjZkYTUyNGY4YWVjYjA5OWYzYzE5NzNkNmQ2YzZlZDU4MjFkZWNiYWU5ZjI5MzdmMmI3MzZkZTM4OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGVmOTNmZTk5NzY3YTg1YWYwZmYwNjAwYzAwMTJiOWIyZWQyMzRlM2VlYTJiMGUxMzk0ZjdjZmYwZDI0N2QzNiJ9" + }, + { + "resource": "repo://hub/dtl/namespaces.rst#L6-L21", + "version": "repo-lines-v1:sha256:f9fa5b54c7276782d1b018c3ce5c28686a04d7acfcbeae0bdcd89738d1c5733c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk1Njc2ZDhlNmNlNWJiMDYxZDYxYjhkMWRlZDM5YjExYWZjNmQ1ZjdkMTNkMzdhY2FjNDAzNzdmYWQyOWRhMjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAyZDZjYjJhNzBlNDM3ZjYwNGMzZGU2Nzk1M2EyZjdlYWQxOWI5MmI4ZTFlYjE2M2Q0NGE0NWZkNmYzN2ExZTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg4NDk2ZWNjMmY3ZDM5MDRlYTVkNjI0ZTI5N2E3NGU5YTlmNjFmZjYwMTgxOGFhZDNkODY2ZWQxMmEyYTIyOWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcyOGM1NmNjMDljNTJiYjg3N2Q4NWRiNDEyNTZmNGI2MjM4MGU1N2QzYzg2N2ZkN2YyYjc5ZjFjMTdmYzQzNmQifQ" + } + ] + }, + { + "id": "claim_84117b3e4fdf4ae28f8216e6de3e9556", + "statement": "Namespace-aware add prefixes unqualified properties with the current property namespace and _id string values with the identity namespace, while preserving fully qualified properties; copy can match across namespaces, and rename preserves namespaces for an unqualified target or collects values into a fully qualified target.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L30-L87", + "version": "repo-lines-v1:sha256:5d8415a61c5a70972f6faebd9aa9646cb00b55b0fccf7d5da07e485451a26437:eyJzZWxlY3RlZExpbmVDb3VudCI6NTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiYTc2MGI1OGU4MTk5NzFhMGRjNTBlYjE0ZTJmZWEwYTZhZjc3MTRjMGM2OTRhNmI0NzZlYWE2ZTU2YzBhMTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNlMWJkZTEzOTJkNmFlMGE2ZWUzMTRlMDQwZGIyMzMzNGU4ZDg3MDMwYTk2NGRmZWI1OTJiYzI1ZTU4OTk1OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ5ZjAyZTZhMDFhNDA0Y2Y2Y2Q1MzM4YzhhMDlmMGM0ODg2NTU4NjYyMGZiNmM2NGI3YzFhYWYyYzI3NTU1MDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNmMTczNmViNDM2MGNhYmYzMGM2NzU4OTEzNDkzNWUxM2VkODVjYjg4NDE1NDkxYWEwMzIzN2FlZDI5OTE3YTUifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L338-L344", + "version": "repo-lines-v1:sha256:5311cda059f4cba28c21b8cffd2ddba618568c1617523569fc6e5acf1b50bb70:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTYwZjNhMDU5YWZjMWJiZTQ3ZDIwYmY0OTk2YzZkNjM4OTk4OTQyZjkyODYxYmYwNmQ0ZTNjMzJkNTZjYmM3YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM0MjRhOTc1NmJiYTQ0OTZiMGQyZGE0NTNiNTg2YWYyOTBmYjVlNjc5NTdmMjRiNWM3NmY4YjRhMzM4MjQ1NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZThhZWExZTE5YWViMDQ3NDhkNmJmYmVmZjBiY2Q2NDA2OGVmMzI2NjliYzIzZGQwMTlhODNmZWMwY2JkMTkzMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmM1N2JkZDJjMTg5YmY5NjcyNjM2NDZiNDZjMzg5MWExOTJlZTc0MWQyYjYyODZhNzZkNzk3ZGI2MmZjNTdhYSJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L923-L973", + "version": "repo-lines-v1:sha256:66ed0f611d57828216c851579ac74e3bcc9e3b6ed94c93abd68bf2d159def70e:eyJzZWxlY3RlZExpbmVDb3VudCI6NTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiYTc2MGI1OGU4MTk5NzFhMGRjNTBlYjE0ZTJmZWEwYTZhZjc3MTRjMGM2OTRhNmI0NzZlYWE2ZTU2YzBhMTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAwZjIwNzBlMDE5MTBlMDdhMmVmYjNjNTE3ZWFmMWIwOTZiMjc5NGZiNTJjMmFkNTIyNDgwYzZiZmYwMzQ2ZWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ5ZjAyZTZhMDFhNDA0Y2Y2Y2Q1MzM4YzhhMDlmMGM0ODg2NTU4NjYyMGZiNmM2NGI3YzFhYWYyYzI3NTU1MDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU0ZjU0NTg4OWIyODIyMjAyOGQ3MTAwNTk2ZmQ5NWRlMzA4ZjQ3MWRjZTA3MzVhZDhlMTJjZDhjZWM5Yjg2ZGEifQ" + } + ] + }, + { + "id": "claim_0c319ff23bf2413285eb58e4f41b5208", + "statement": "In DTL namespace-aware argument syntax, :: means interpret the following value as-is and : means relative to the current identity or property namespace according to context; these escapes are separate from Transit encoding.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L249-L256", + "version": "repo-lines-v1:sha256:4421b579035b9daec3681f206b96c3acb10bcd450ff9e91d32ea887a4d8e96cb:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjIwZDlhYTkzZGNhMTZmNWNjNjE0OTQ0YWM3YTcyMmNlNTIxMzljMzYwM2FjYjdjMzI3Njg1ZGEyNTY0M2UyMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDk3MTYxZDRkMmIyNjJmMDFmZDY4YjZhMWQ1NTM2YjdmY2ViYmY4YzY1MDhlZWY1Mzk1YWY2NmNjMzlmYjQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjA1Zjc5MTEyMTVkOTk4M2VmYzY5OWE1MjdlYTEwMTNmNjQ5NGQwMDlhNmJjM2NlMGQ5YmJjYjE0NTc1ZTYxMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2ExNzAwYmYwM2JmZDc4MjRkZTNlYTg4MmNhYTI2YWQyMzkxODA3ZTFhYmFiZGM5NmI0ZjRlM2QzODE3MzdmOSJ9" + }, + { + "resource": "repo://hub/dtl/namespaces.rst#L23-L41", + "version": "repo-lines-v1:sha256:0cc80ec22a0be81efd6294a5493b43ebfc3d8d0c54a2aacee6465e7e2265afae:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNkZGJkNjhhNTUyZjMzNGUyMzZmMzQ2YzJkNTZlZGVkMTZlZTU1M2MyM2YwYTM3NjFhNTk4NDk4MTM3ZjJmM2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhlYzQzYzU3OTlkOTljZDc3NzVmZjhhMDk4OTUyYjcxZjAxMjBmOGRjMmMyMjllOTUzYjhmMDZhMmRlZjlhNjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZiMTA0ODc0OGFmZGNiM2VhODEwNmRkNGViM2Y0YmJmOTBhZWYzNmY5YjEzZWNiNTA2YjkwNzQ2NWFhN2UzNWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_e90ec739939f49fd8a47e9aac47ae591", + "statement": "ni constructs typed NIs without string escaping, uses the global namespace when NAMESPACE is omitted, and accepts URI values only without that argument, collapsing prefixes to declared or generated namespaces.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-namespaced-identifiers.rst#L50-L95", + "version": "repo-lines-v1:sha256:7439ae608c6060aa1dd3a4d63e6160db1f5f54549c02b54f6691abc6e7e4750f:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1ZjcxMTI3MjdhNWE1MjJmNDJiMTY5OGM3MjU1YWM0ZmQ0OGE5MDE4ZjY4N2I1NmYzNzY3ODA5YjhlN2EyODIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJlMjJkNGI1OTdmNTIwM2E3MmEwN2NmMDQ5YWNkYTQ1MGMzM2I2ZmVmMjMwNzcyZjk1MDBiODY3YzNiZjcwODAifQ" + } + ] + }, + { + "id": "claim_9ef9d021c8074b8b82d20979680aebbe", + "statement": "uri casts string input values to typed URIs without URI escaping; explicit URL quoting is a separate operation.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-uris.rst#L48-L62", + "version": "repo-lines-v1:sha256:d4c5636ddc4388016b0d0e783bcb67cb226f5bed0a2a16044ed82dcfc3e04ba5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk3ZGQ0YWUxMzUwZmJlNjlhZTViNGJkNjY5ZDkyNTdiZGM4ZDkxMzI5NWM3YzliZjhhMWRhYzBmMTM2YTUwM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMzNWY4NWExOGEyMjI3YmZlMzliMDg5YTZkMmRhMWRiMTg2Yjg1YmIwYjJiYjIxOGY0MTlkMGVmMGJjZmI2NTkifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-uris.rst#L64-L96", + "version": "repo-lines-v1:sha256:11d972b1ed8374d335d814e18b637e2f2c974dc3782ffa5a9de4dedf3373cbb5:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMzZjRiOWJmMjBkMjI5ZjhhZTNhODIyYjA5NzkzNmQxZTQ3YTFhMjQzMTIzZGYzYTRlM2YwZDkwYmU4MjI4NGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIzNWJiNzdlNzk0MGY2OGRmMzNiMWFjZWVjODE2ZmZkM2NkYTNlODRmNjYwZjgxNzhiZmFmODFmNTEzNmRiMzMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJmOTU4NzE5MmQyY2MxZGIxM2E5OTYxYjBlYzI5ZDMzZjE2NTJmY2M2MmI0ZWE4OGVlMTgxYmQ3YmIzZDY0YjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmYzI2MzNjNzM1NDkxOWZlMTgwYjZhOGJhMjFmMDllMTUyMzM2ZDQ3MTdjNTZjMzY3YzFlYmE5ZGZlM2VkOGYifQ" + } + ] + }, + { + "id": "claim_48217e8f7a8e4ebabed8977e8e76b603", + "statement": "The RDF source maps subject URIs to _id, predicate URIs to property names, and literals or URI objects to values, turning RDF blank nodes into child entities.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-rdf.rst#L12-L23", + "version": "repo-lines-v1:sha256:479ed15a57a9bc48fc593641f306d4dd790e74edc81cd92d312d115c938eb980:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE4MWEwNTZiYTkyNjMxN2QwODExMDY5MjkxZjMwNzRiOWJiZjdmMTRkY2ZlZmM3YzgwOWZkODc2OWJjNTQ5NWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUwZjU5YWZlMjRmMGRkNzQxZmIwMjQ3M2IwMTQ0OWRlNmFiNmI0NmExMWEzZTM4ZTkxMTNiNzdmYjMyMGI3YzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkzZWI5MGJkNzBiNGM1OWVkZDRlM2NiZDEzODI1YWVmZWY2MTMxNjk3MzM4NWM5ZDQyY2IxMjE3MTlkZTliZGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI3ZTNjYzhmYjIxNWQzNDU5ODA0ZWQ0MTM5ZjhlMjIxZjRjZWFjN2I4NDNmODk1OGI5ZmI4YjQwZDc1ZTRjYTMifQ" + } + ] + }, + { + "id": "claim_d0c956c9e12f46d68fca4bfabdcec9da", + "statement": "RDF output represents nested entities as blank nodes, lists as repeated predicates, and property types as RDF datatypes; language tags are unsupported and receivers lacking blank-node support require flattened output.", + "evidence": [ + { + "resource": "repo://hub/rdf-support.rst#L101-L110", + "version": "repo-lines-v1:sha256:6abfe3057d76b6898a1affe2bd6a80ecc9a4f82bd96fbf755515924a33c84b15:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxNjc0ZTlmN2Y1YWI5ZGRjYzdiOGUxMjM5OTkyNmM5MTUzNjYzNmE5NWUwMDcxNzM4MGI3NzU3ODdiYTdkZGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJlZjdlOGY5MWQwMWJlNzQ4ZjkzMjhiZWY2ZmU3ZDgxOGIxMmFlNDQ5ZGM0NjNlYTk5YTU4YmQ0YzEyYmYyMWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM3M2FkYjYwMjAwNmM1NDdkY2E0OTg3ZTZiNzljODQ0Nzk2NDVmMTU5NGViNTFjMDc5Mzc4NWM0NWJlOThlZDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhmYjFhYjc4ZTI2NTgxYzU0MTQ0NjI5MjI5ZWU4NTY5ZTYwNmRhMmJlYWZlOTVmYjMyZGRiODczZjkxMmUzMGEifQ" + } + ] + }, + { + "id": "claim_e70e8b2302934d94a4a7181b2e43a759", + "statement": "The documented local configuration-test workflow uses sesam -vv test, an expected directory, and paired endpoint output .json and .test.json files; test configuration can select stages or publisher endpoints and blacklist properties.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L57-L91", + "version": "repo-lines-v1:sha256:064a456505efaa5d13d932d2fa37176bcba7503dbaf96d4d927d469fd986ae6a:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2ZTVmMDlmNGE0YTJkMTIyYjI5N2U3ZjQ1MzViMDg0OTY2ZTQzNDZlY2QxNjU5ZTM1OTFmNzFhNjAxZTJhZWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzMjExOTAwMjM3NTFhM2M5MWVlYTM2ZTUyN2UwMzRiZGRhZmNhMGY2NzFmMTE4NzY5NWViNDI3MmI4NTAxM2EiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY0MGY2YWU0OTAxY2Y1NWJmMTM2YjE1MzZkN2JmNjk3YjMyNzU4OGM3OWJmNTNhYmQzZGJhZWJkYTkxNzFhYTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4YjkzNDE2ZGQzNWQ0Zjg0MGQxMjk4YzZhYTYyNzZiMDNmNjcxMWY0OThhN2UyYTViY2MyMDdlYmE1ZTNkZTAifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L21", + "version": "repo-lines-v1:sha256:d728920650b733582762cd2916dd09f6f0f0af185fdda8c3774bd133cdd1ef38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + }, + { + "id": "claim_73a4303765e9424687a67f4b8b90cf1c", + "statement": "The documented local-testing output removes internal properties other than _id and _deleted, so fixture comparison alone does not verify _hash, _ts, _updated, or _previous metadata.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L141-L144", + "version": "repo-lines-v1:sha256:89506b668ea86ed7cfc1df98d73995ad754d532bab9f4bd6e2227ef9aabfd51b:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTM3NTIyMzE5NGYyYzlkY2RlODIxMjQwOGE1NTBmZDM0YmZiZTdhNmI4YzQzMmM5NTAyNGE3Y2VhZjYzNjBiYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzlmZGY0YmI5OGVjMWQ5ODYxYjRiMTViMWU5NDc0NTVlZDI3NmU0MmFjNzI4NTU2MDliMzAzNDZiOWZlZDgwOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDQzZjdiMWU1YmQ4MzYxYjY3ZGFmMWM0ZmI5NTY1YzJkMWE3YmQ1NTc1MDFjNjQ5NGIxZmZlMmNkODAxYmUwMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjY3YTUyNzAxZGQ2YWMzMTEyZGNlMTI5N2ZlZDdlNDRlNjUzYTk3MTFjYzEzOTRiMmJmYWFkNzlmYjAwOTMzMyJ9" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/configuration/pipes-and-systems.json b/openwiki/.claims/configuration/pipes-and-systems.json new file mode 100644 index 00000000000..7a49b7548f8 --- /dev/null +++ b/openwiki/.claims/configuration/pipes-and-systems.json @@ -0,0 +1,894 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:aa3880a2616a65d7925b9840ad65eb24b5baf61e316bc3e1c173d6d3953006e3", + "claims": [ + { + "id": "claim_fc1e97249a0d4466a5ad5fd7d4b7c814", + "statement": "Sesam configuration is documented as one or more JSON files representing an array of system and pipe objects, importable through the Service API or editable in Management Studio, with an optional service-metadata configuration entity.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L7-L11", + "version": "repo-lines-v1:sha256:229dff26a47473da3ad0c69e0d57886d6ef76297322ec1ca9d61f66744099d27:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDA5MmMzMDQzMDdkOWY4YjQ0ZWM3MjFlMjJhNzEyMzA5NDIyNDQ3NzM4Yzk5ZDA0YjY2Y2M2NjM5MDNmZmVmMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2ZjNzk4MTBhNDQ3ODA2MDIwYjZhOTU4Mjk5ODE4ZDFkZjE2NjQ3OTJiNmI1ODMwODE3OWI2ODYxYTY1MDc5YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGE2ZWVkYmRkZGY3MDI2OTg0OTg2Y2IwMjczMWY3NjY0Y2JhN2Q0Y2VjZGI5MDgwOGFiNzk0Njk3M2M3Mzg1MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjhiOTM0MTZkZDM1ZDRmODQwZDEyOThjNmFhNjI3NmIwM2Y2NzExZjQ5OGE3ZTJhNWJjYzIwN2ViYTVlM2RlMCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/general/configuration-general.rst#L6-L32", + "version": "repo-lines-v1:sha256:1abaa9282ed848fc61d25486a029ebc7a5c99acdafd113614fa0343068117fd9:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdhZDc1Y2RjNzFmNjhkZjg1YzI5NzNkMjM5NTZlODYwYjJhNjM3NmQ2N2U1MmU0ZmQzNTBiYzAwZDVmYmFmMjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUyMTcyZTQxODIyN2I2MDFjZWQxODE5NmViZDM0YmY4YTdmOWE4OGY2ODY0ZGQ2MTY2MjllYTlkYjdjODQzMjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRlNTE4NDIzNDM4NmE3ZGVkYjczZjA4ODBmNmM4YjJlY2E2ZjYwNTFlNDg2MDkwYjg2MGY1MTQ4MGJmNGI1M2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_344a86477feb464199afe9ef57872ab5", + "statement": "Configuration component _id values must be unique across the entire solution, including multiple files; pipe and system ids are strings and cannot contain '/', and pipes require type 'pipe' while system prototypes use family-specific 'system:...' types.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/general/configuration-general.rst#L11-L32", + "version": "repo-lines-v1:sha256:2a65700ddef92bc9e1c23b729ae895141bc8a13a28a145d11b01762d76598979:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4ZjljY2YxNzQ1ODZiZTk2MTU0N2E0ODFlMmJlZjgyODZlNGNkMmNkNDQ3MTVhYTk3MDQ4ODA4ZTI3MzEwZjQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUyMTcyZTQxODIyN2I2MDFjZWQxODE5NmViZDM0YmY4YTdmOWE4OGY2ODY0ZGQ2MTY2MjllYTlkYjdjODQzMjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2NmIzZGYwZWE2Y2JhYmI1MDc4NWI3MDA4ZWE0ODFkZmY3YjEwZDg0MjAyMTc3ZGU3ZTBlMzU2MWY4YTJiZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L78-L89", + "version": "repo-lines-v1:sha256:e1d648a9b23a5e79110325a2ccd4fb6ae8c6ec10166601a6b050d2235540eb63:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImExMTc5OTJmMmQ4ZGM1OWM5NWIwYWVhMDU0OTcwYTdlN2NhMWVmZmNjZmRhODg3MzlhZDcwYjMyMzQ3YjFmMDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVhODNiOWYyYTJmOGE3ZmMxN2VhYzhjOTlhZWQ4OTBhYTIxOGU0NmM4NjZlN2JjY2I3ZWFiZjNmMGM2MmE4YjYifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems.rst#L12-L55", + "version": "repo-lines-v1:sha256:52a79ef170bee9237a80c1368bea4d094d4580ae2820dfe396d064f22a0ae641:eyJzZWxlY3RlZExpbmVDb3VudCI6NDQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQxMDg1ODUxY2FmOWM4YjNjYmVlYzRkOWU0YTk3ZWVjZWM0N2RmMWRhMDU1Y2E1YWU2Y2I1YjAwYmE3YzkxNjciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA0ZTI2MWVmNGYyNzhiZjFkZTE0ODYxZWQ2NDBhNmFkZDI4N2Q0ZmJkMmNhNjQ5NzU2NDkzZmIxZWUyNzY0OTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVhODNiOWYyYTJmOGE3ZmMxN2VhYzhjOTlhZWQ4OTBhYTIxOGU0NmM4NjZlN2JjY2I3ZWFiZjNmMGM2MmE4YjYifQ" + } + ] + }, + { + "id": "claim_4dcabe29af90488485380f9b04c6ab9a", + "statement": "Systems centralize reusable connection pooling, authentication, and protocol services; sources and sinks using a system reference its _id through their system property, and supported transforms also use system references.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-http.rst#L36-L40", + "version": "repo-lines-v1:sha256:77ba388b00ef09ad1d215a21b9a019aca506a62dfacf72da27235740e067032c:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2JiM2NmYTQ2Mjc5YmNkOGUyOWZlZWFiOGNhNzkxMzUxZmUxNDExNWU5ODU1MTg1ZDk0MGRlNGFmZGY1YmJlMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGY1ODE0ODMyNmM4MmMyZGU1MjViNWQ1MWI0OThhOTZlODk0YzRiMDkwNTNlMGU5ZDVhMmMzNzg5NzAyZjdlZiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst#L67-L71", + "version": "repo-lines-v1:sha256:4956163c7798c8eb9344749fe8d0529b5d8227cb137514491ece8cb6f3148b9c:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2JiM2NmYTQ2Mjc5YmNkOGUyOWZlZWFiOGNhNzkxMzUxZmUxNDExNWU5ODU1MTg1ZDk0MGRlNGFmZGY1YmJlMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzU5MTY4ZmVjM2VmZTYxZmUwY2FjODY4MDYwM2ZkMjI0YmM1NTE1NmMyNWU3ODE1NDA0ZjdmZjNhMTJkZDJmMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2ViNGZjYjE3ZWY0NDBlMDZlOGJlNWY3OTc2NDlhNjhjYWY1NDEzOWY0OTBmNTM2MjFlMjFkODA3MGU2YTM5NCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems.rst#L50-L55", + "version": "repo-lines-v1:sha256:9811f8a256bf614fd92d796caf2454fdd4f920d587c7b09b98f9fdeb7691e06f:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTExNzk5MmYyZDhkYzU5Yzk1YjBhZWEwNTQ5NzBhN2U3Y2ExZWZmY2NmZGE4ODczOWFkNzBiMzIzNDdiMWYwOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWE4M2I5ZjJhMmY4YTdmYzE3ZWFjOGM5OWFlZDg5MGFhMjE4ZTQ2Yzg2NmU3YmNjYjdlYWJmM2YwYzYyYThiNiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems.rst#L6-L8", + "version": "repo-lines-v1:sha256:c3b0ae019fb5b176c02ee523996f21d047d3c59db22a2278b9708891b54f0093:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDliZWMzNjk1ZWI5OTk1YWZiNmRmYzI4MGIwYTI2Mjc3ZjFjYWFmY2MwNTIwZmMyMDBjNWVhOGI2N2E4MmJlMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTk4NjFiMzUwNmZlNmM0MTFiOTQ3NDI0ZjYxYTI2NGIzNDI1ODg5OGVhNzliZjhhMTk5ZTJjNmFkZDdjZDllYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDVjMDA0NDNkOWFmYjljODg2Y2YyMzI1ZjhmODM4MWQwODY2Y2NlMzBkZmIwY2ViZDIyOTBkZWM2YzQ1ZmIwOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDRlMjYxZWY0ZjI3OGJmMWRlMTQ4NjFlZDY0MGE2YWRkMjg3ZDRmYmQyY2E2NDk3NTY0OTNmYjFlZTI3NjQ5NSJ9" + } + ] + }, + { + "id": "claim_148c4792d5e94220881e4011653b0afa", + "statement": "Sources stream entities whose required _id uniquely identifies a logical entity within a flow, while allowing multiple versions of that entity; this is distinct from solution-wide configuration component identity.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/general/configuration-general.rst#L32-L32", + "version": "repo-lines-v1:sha256:52172e418227b601ced18196ebd34bf8a7f9a88f6864dd616629ea9db7c84323:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTIxNzJlNDE4MjI3YjYwMWNlZDE4MTk2ZWJkMzRiZjhhN2Y5YTg4ZjY4NjRkZDYxNjYyOWVhOWRiN2M4NDMyMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTIxNzJlNDE4MjI3YjYwMWNlZDE4MTk2ZWJkMzRiZjhhN2Y5YTg4ZjY4NjRkZDYxNjYyOWVhOWRiN2M4NDMyMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjgxY2E3Mzk4ODk4MDJjMThmZDM3MjVjM2NlZWJkZDU3OTY3MGIxYmM5YTFjYzJkZDI5MTBhZjY2N2MyODRhNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L6-L12", + "version": "repo-lines-v1:sha256:757bdd56d4a14110d293f7d0fad47fcb06ecd8ae5f22c83656806e730bae5afa:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDQwOWE0MGY0NDk2ZDdkNmFlYjllNjkyYTFhNmVhMzIwMzAyMTYxMjg1MjdmYzM1OThhZjMxNGVjMjAyZmYxNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDg2NmVhY2RlOTE4MzAzODY1MDFhOWM1YTViZjYwMDg4ZmM5MTBhZTYyZjAyYWVjODViODhiOWE3YmFjNzBkNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGI5MmYxOTU1YjZjMmFkNDUzNmY1ZTRhNTU0MDk0M2M1OGI1YWM4Njg4MGQ0YTNmY2I0ZDE3N2NhMTc3OTBhNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTE5NTBlZGE4Y2MwZWYyMGU0MWJlMGM4ZDAzYTg2YmYzODc5NzJmYWQxMzllMzhlZjhiNzBlODQzMGFlMTcyYyJ9" + } + ] + }, + { + "id": "claim_a3b13e3c43e64b709e13fb8c09af9ed0", + "statement": "The pipe property contract requires source as an Object, permits optional Object/List transform and optional Object sink and pump, and allows optional String name and String-or-list description/comment; missing source, sink, and pump names are generated from the pipe name.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L165-L192", + "version": "repo-lines-v1:sha256:e2da6aa86f531fa5b30124248024005f8f329c99f1dae869949383fa977d58b3:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJlMGJiNTZkY2U1NWM3M2I2YjA1MDM4OTU2N2I2MzA4OTExOTlmM2RmM2I5OTVjMjYxMjAyY2Y2NWM5NTAwNjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM1MDNlMmM1MmY0MTQ5N2RjYTg0NDY3OTUwZWVkYTk4ODViMGE5Nzk1ZmFmM2Y2MGY3ZWQyNWUzN2RkMDQyNTQifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L44-L44", + "version": "repo-lines-v1:sha256:4078f7aafee6360013ac914de906ee0f506c75a5b916c1ddf00ffa0757193a9c:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDA3OGY3YWFmZWU2MzYwMDEzYWM5MTRkZTkwNmVlMGY1MDZjNzVhNWI5MTZjMWRkZjAwZmZhMDc1NzE5M2E5YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDA3OGY3YWFmZWU2MzYwMDEzYWM5MTRkZTkwNmVlMGY1MDZjNzVhNWI5MTZjMWRkZjAwZmZhMDc1NzE5M2E5YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDRiOWEwYjE2Yjk5MTBiYWE1ZDBhNGRjYWZmOGE2MGM0Mjk2MzNiZjJhZTNjYmFjYzgyMDI5MDc1ODBkMTBjYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTA3OGNkNmU2NGU0ZTQ0MWE4ODYxNGVlOGNmM2MzMjI2MDdkZDFkMWQ3NTRlNjFmODFiNmY0MGM0NmY2YjQ2YSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L91-L107", + "version": "repo-lines-v1:sha256:d7efb002a68880cea25f7b10bf405c605c3239c17779e7cdb95c5103da035960:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4NTc2YWY4MDVmNmM0NWFiYmMyOTg1MGYyYmNlZDRiNmU2MjkzODljN2FmY2QyYTA4NjdmNjY1NmI4NDNlMGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2ZmJjYWI1ZTFkNDA2ZjdlNWQ0NmY4ZTEyZjQxNTdhNzM2ZWU5N2Q5Zjk2OGI0NzMxZGFkMDQxNGI4ZThlYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE4NGM0NmFmYTlhODgyOTk5YTc1MTM4YWVkZTNjNmRmZmFjYTMwNmU2YmFmMWZhNWMxNGY1YTgyMTIyODU2MjkifQ" + } + ] + }, + { + "id": "claim_54bc2f43d8ed4d3392f4ff06a87b0d49", + "statement": "Configured sources, sinks, and transforms require a String type discriminator, but connector-specific required properties must still be supplied; type alone is not universally sufficient.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks.rst#L28-L47", + "version": "repo-lines-v1:sha256:de8de086cd8498896ff09db7840651089d643fb53d84b40f21f276d0c8d0c6f6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1NTJmNWU1MDNmNTVjYTg4NmI2Y2ZlYWQ1NWZmY2M3MGM5ZmQwZjMyYjk2NmExNjI4ZThiMzg5ODc2N2Q1YjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRmYmQwMDkzMTRiYzI3MDg0MTY3MzRhMDJhZTVmZjM5YTFlNDhhMDUwYmU5MWY0M2IyZmFhOTIwMDJjNjJiZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhNDg0ZGE3YTFjYWU3YzJjOGYxMDZmZjk1ODYwNTgwZWMwY2MxZmM3ZDMxYTBmODM2ZjU4NTlhMGEyOTIyYWEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst#L59-L69", + "version": "repo-lines-v1:sha256:7b505a435f79962a1472300a073da470dc0f7da6a5b8648b59b0231993fdf097:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiYjNjZmE0NjI3OWJjZDhlMjlmZWVhYjhjYTc5MTM1MWZlMTQxMTVlOTg1NTE4NWQ5NDBkZTRhZmRmNWJiZTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM1OTE2OGZlYzNlZmU2MWZlMGNhYzg2ODA2MDNmZDIyNGJjNTUxNTZjMjVlNzgxNTQwNGY3ZmYzYTEyZGQyZjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNlMjI3ZTczYTI1ZjkwNzk5OTdmMDMzODdjN2RhMWJjYWYyMTNiNmUyMWQwNDY4ZTUxNDY2MTMzMDM4YWNjMmUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L58-L71", + "version": "repo-lines-v1:sha256:fd2fd3ed7f121408a4da8402b34ba2dbe48c79862d7dc0e790bedc54f1780be9:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiYjNjZmE0NjI3OWJjZDhlMjlmZWVhYjhjYTc5MTM1MWZlMTQxMTVlOTg1NTE4NWQ5NDBkZTRhZmRmNWJiZTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRlYjIyYmE0M2Q5YjI2YWY1OGQ0YTgyMzhjODQ4MzY1NmExODM2MjAxOGQ0OTk5M2ZjMjhmOGM2MDUyOGZjMWMifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L27-L46", + "version": "repo-lines-v1:sha256:d03b4cd461390ef0a7850b656d3d9a0fe0bf3768d64ab0e93da791f7721bdf60:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1NTJmNWU1MDNmNTVjYTg4NmI2Y2ZlYWQ1NWZmY2M3MGM5ZmQwZjMyYjk2NmExNjI4ZThiMzg5ODc2N2Q1YjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkwMzc0NzhlMDJkYTI1NDQyYWFhNjkxY2E1ZTdhNDU3OWExNjQwZjY4ZTY0YmFhZDA5N2MxMTFjOWQ4MDQzMTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhNDg0ZGE3YTFjYWU3YzJjOGYxMDZmZjk1ODYwNTgwZWMwY2MxZmM3ZDMxYTBmODM2ZjU4NTlhMGEyOTIyYWEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms.rst#L44-L48", + "version": "repo-lines-v1:sha256:73fdad52559124d351dc0f794c8f79f1371f7bc677e7da79026f782aa7e06c35:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmEwYzllMDQwNGIyODgyMTRhMjQ2Y2MwZTU4ZTJiM2M5NjM4ZWRjZWM0Nzg4NjMzOWEyOTFjNzVmYTVlYTRkMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2E0ODRkYTdhMWNhZTdjMmM4ZjEwNmZmOTU4NjA1ODBlYzBjYzFmYzdkMzFhMGY4MzZmNTg1OWEwYTI5MjJhYSJ9" + } + ] + }, + { + "id": "claim_c9c064016c464f70ba308013e3f7398a", + "statement": "Omitting transform performs no transformation; a transform list is applied in its given order from source through successive outputs to sink, and transforms may reshape, filter, or construct entities.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L171-L179", + "version": "repo-lines-v1:sha256:ca438719f78b95679dacdf2ddd7b2ccf3f6a889d7c2df61097df9cc92ba2a702:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmFmN2Q1YTdmYWE1MDZiNjk3NjA1OGVmNWY4MzJlMDIzNThiZjE0NGQ5ZGJlMjUxMTJmN2QxYmJiZjkwNWM5YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDU5NmExZTBhZmQ3ODdjYWUyZDY5YjM4MzQyMDllNTc1NzE1NDU0NWI4NWIxMDMzZTFhOTNiNzk0NzRhZmRjYyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms.rst#L6-L14", + "version": "repo-lines-v1:sha256:8b604dcad1b39b3c6d9108615e5bb9bd670163f50190f233671085a57b58c155:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODQ5MmIxNjdkMTZlNjQ4ZWM5YTYwODVkZGFhODg2MTZiNWNjMDQ5ZDIwNWIyN2RkZDMwMGQ5NzE4MWRkNGI1NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTM2ZDk3ZjU3NmZmODdhMWRjMjkyNDM5YThmOGNiZjRlMTZhZDIyZmYxOGQ3MjgwOWRmNDQyOGExMmUzMDczZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWFkNTc2MTIzMTFhODE4Y2UzZDZiZjM4NWIxMmIzMmIzOTg0MDlhM2I5ZTZlYmZiYzYzZjU1ZWExZTY3OWE2NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTE5NTBlZGE4Y2MwZWYyMGU0MWJlMGM4ZDAzYTg2YmYzODc5NzJmYWQxMzllMzhlZjhiNzBlODQzMGFlMTcyYyJ9" + } + ] + }, + { + "id": "claim_0c97711dfccd40a6935d70d716c28863", + "statement": "Sinks write to internal datasets or target systems, while pumps drive source-to-sink processing and own execution logging and failed-write retries.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L6-L11", + "version": "repo-lines-v1:sha256:e4438d6c78f02bb8733dc5f3386246a7f2cd3df0c70d20ba92f3218fe3360be2:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGExMTA0Mzc4ZmYzZjg2MzhlYTI1NzU2YmUyYjZiNmVjODM5ZjUyMWFjYjI0NzU2NDg3YzUyZDA3NzE3MmZlMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjYyNDVhYTRiZjg3ZTc0NWFiNzZlOTcyN2RhZGFkMTE4YTZmNGMyYzEyMjc3YjZiODU0YzAxMDNhNGI3ZmVmZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWEzYTVlODc3MDg1OGE4OWU1MjEzNzkyMDQwMzY5NzY2MjliNTM0ZTI2Y2E0MDI2ODYyNjBjMzdkOTI1MDdhNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWNjMGUxM2U5MzYzNmZjZmI5Njk0NTU1ZTY1OTllMjBjYjkwY2NmZTRkOWNiNmRjZjRmZDRhMTczNWIyMjVlYiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks.rst#L6-L13", + "version": "repo-lines-v1:sha256:20d3896cf78c3b08cf43701cacdd073a6302449250a387eac2896bf7b9233648:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTFiYWZhMGM5MThiMmNmZDhkZmM1MzAxZmIxYmJhZTkzODQwNTgzMjNkNWIwZTJkNDVjMTliYjhkNTQ2ZGY0YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWM5NDY1NDJhMmQzOGFhYzhiN2IzZTMzYjM2M2UyODYxNjI2NTcyMGQ2MThmYWU0ZThjNzQzNDI1YjgxMzc2MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTU1NmE1OGUxMjc3ZWExZWZmMjI0ODgwNzYwZTlhMDE2NWQ3YmE1MmVhMjlkNGZmZTMzNGE1YTVjZmQwYjE2MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTE5NTBlZGE4Y2MwZWYyMGU0MWJlMGM4ZDAzYTg2YmYzODc5NzJmYWQxMzllMzhlZjhiNzBlODQzMGFlMTcyYyJ9" + } + ] + }, + { + "id": "claim_ca271b2014a141e6b4d449491da3a3fc", + "statement": "An omitted pipe sink defaults to a dataset sink targeting the pipe _id; dataset sinks create absent datasets on write and prohibit '/' or system: dataset ids, despite their table marking dataset required while also documenting the pipe-id default.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L181-L186", + "version": "repo-lines-v1:sha256:ec76c81f4824db13ac3ae833c584a3ef7b288a20ea13fb03a10f29837e25858e:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODU5NDgzMWIxMTk1ODM2MDI4OGY5NjhkZDQ0ODYwMzUzNzQ3Y2VjYjk1YjJmYjNlY2Q5MjcxYjkzNDE0ODNmZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDQ3N2VhZjU5MDhlNmNmZGM3NjdjOTUyOGQzMDM0MzU2NGM5ODBlZjBjZjMzZDIyNDUyNTFiYTk3N2ZkYTRlNiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L31-L44", + "version": "repo-lines-v1:sha256:52aa3efc9485cdea68e52c669c2f1daa7694f01fb88f7a6b52d77839701372d0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU1N2MyOWFkY2JjMDkxNjhlODFkN2Q2Y2UzNTMxNWM4YTFlNTNlZjVkNzA3MmYyODZlYzQ0MzAzMDcyNDU4MjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk5ZTU0ZTFmMDFlMTJjYjA1NGJmZjlhMmJhZTEwY2JmYWNkNjQyZjVjZTZlNzEzM2I2YTA3MDc4OWU0OWQ2Y2UifQ" + } + ] + }, + { + "id": "claim_298519eae646474fa9f8d44c79c1ef90", + "statement": "System worker_threads is an optional Integer defaulting to 10 and limits concurrent pipes using that system; it is separate from SQL pool connection limits.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-sql.rst#L72-L88", + "version": "repo-lines-v1:sha256:943dc643033984ddaebc6c72317d6852c232494ea8902da39251fcad9b524102:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRlODJmZWI2ZjRiYTRlOTliMTE0NTBiZTkwZDExMzJlNzY1MWQzNGUwYzBjMTMzYzg2MzJmMjIxMjEwZTc1NmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ0ZTk5NjkyZGNlZDU3YTJkOTZkY2U2NzgzNzA0OTdhMTBiZDQyOTkwMWQyZWEyOWI4ZWI0MGIyZmJiZTliZjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFlMDdkOTAwNmQwN2JjYTZiY2NiZmU5Mzk0YWE4ZTBmN2ZiNTk2NjZmMWM2ZTg4NDQxYzQ0YmYzYWI4NzdkMWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBjNjA5ZjFhZTkyZjQxZDUwZWQ2ZDUyYmMzMjM4NTQ2Yjg4OTFhMGE1NDhhMWI2N2YxNTdiMGMwZWE5NWRhNTEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems.rst#L82-L86", + "version": "repo-lines-v1:sha256:410b733c8ca7de2d0b8fd9987e6518bc50ad702a6abd62c0abcda434217e5c8c:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2E4OWU0NTdiMDVhZjljYmY2MzM2MDVkMjAwMjUxNjQzNzQ3NDAyYWQxM2ZlYTFlZjljYTBhYzBlNDVkMzI5NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTg0YzQ2YWZhOWE4ODI5OTlhNzUxMzhhZWRlM2M2ZGZmYWNhMzA2ZTZiYWYxZmE1YzE0ZjVhODIxMjI4NTYyOSJ9" + } + ] + }, + { + "id": "claim_63e17e81b9254c7d8ed27f9b8c5de8db", + "statement": "System metadata is optional string-keyed JSON-valued annotation, distinct from the optional service metadata entity illustrated with _id node and type metadata, which configures installation-wide settings and may be managed through configuration, UI, or Service API.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L7-L39", + "version": "repo-lines-v1:sha256:93cca2021c621a51a6ca39d18093ecfdf4b3aabafe884db323186de07edd6a5e:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAwOTJjMzA0MzA3ZDlmOGI0NGVjNzIxZTIyYTcxMjMwOTQyMjQ0NzczOGM5OWQwNGI2NmNjNjYzOTAzZmZlZjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM0MWM0N2EwODhhNzc3NTBiMzQ4MDI0ZmQ3ZWI0NDIwZDAwOTdhNTczYWViYWYyNmE2MDRjMTE3NmZlYmFlNzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRhNmVlZGJkZGRmNzAyNjk4NDk4NmNiMDI3MzFmNzY2NGNiYTdkNGNlY2RiOTA4MDhhYjc5NDY5NzNjNzM4NTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhhZGQwZTY5MmUzOWFmMTZiMWU4MWIxZDAyNjE4YWYzNzBiYzY0ZmMxZjBjYTllNzM1NWE1ZTNlM2MyODE5OGEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems.rst#L57-L80", + "version": "repo-lines-v1:sha256:9cc41a72fdd5c37aa2d93d5ac730a9040f62ebf918d6bd808d1004fc0fb1c55d:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4NTc2YWY4MDVmNmM0NWFiYmMyOTg1MGYyYmNlZDRiNmU2MjkzODljN2FmY2QyYTA4NjdmNjY1NmI4NDNlMGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2ZmJjYWI1ZTFkNDA2ZjdlNWQ0NmY4ZTEyZjQxNTdhNzM2ZWU5N2Q5Zjk2OGI0NzMxZGFkMDQxNGI4ZThlYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRjOWFlODk4MzM4NGUwNTFkZTgxOWE3N2M5MDM5NTllYjg5YTRkYzllNjNhNTg0OGIzMTViZTA2MTQ1ZmRlODUifQ" + } + ] + }, + { + "id": "claim_440167407de64eadb04c6f70917ef0fa", + "statement": "The API's pipe config.original holds raw user configuration, whereas config.effective is the configuration used by runtime components after environment-variable and shorthand expansion.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L2706-L2727", + "version": "repo-lines-v1:sha256:758a9f9906092d531a8166ee559aec876a15d67d7e9b35a875c75be0105b8ed3:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjllNDY5MjQ1MjI0ZGM0N2M4NmQyYmQyN2U5MmE0NGQzODBmMmFmMjUwYTdhZGRlZDE2ZjViNGFkZTliMzA4YTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgwM2Q2Zjc4NDk0MDNhNTc3ODdhZDA1MzQ3M2MyYzdlYjhkMzE3YjZiMTViMjc3OGQxZjU3N2UzMTdmODA5NTgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg5NzIyZWExMTE4OWY4MjUxM2IxNmQ3YzgzZTc1NGE3NzgyODhlZmI4ZTg0ZDc4Mjc2NDhkNWJlZDY2NDhiNjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM5NjdlZWM5YTIyMDkwMWZlMWFkY2JiN2JhMzMyOGMwNTFiZDc3MGNjMjkyMDUxMWIzYWNjNzkxN2M4MzU3M2QifQ" + } + ] + }, + { + "id": "claim_8fbfb83f4e2c4fc2b5dd51a6b48708a8", + "statement": "Service metadata namespaced_identifiers is an optional Boolean defaulting to false, inherited by pipes unless explicitly overridden.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L54-L58", + "version": "repo-lines-v1:sha256:d79af5916d6a43e9465b1bb0c9ea0f790ea26ce929f38376b1afc9b7b0a816c7:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWRlYTM1OGI3ZDczMWNlNDYyMmNiODQwYTYyMDIyNGQ1ZTc1Y2NmYTUwMTNlMjkyYjZiNGE3MzY1OGNiY2FmZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2NiM2NjMDBkNGIwYjQ0NzI0YTYyYzUyNTBjODAxYTlkYzBkYWQxMGM5NjEyMDZkODJlZDE4NDk0NGZiNWZiZCJ9" + } + ] + }, + { + "id": "claim_05e6aea349204dc68e7aa2e5df5c5e15", + "statement": "Optional Boolean global_defaults.infer_pipe_entity_types enables schema inference by default with value true, except false for developer subscriptions; inference is also configurable at pipe level.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L186-L197", + "version": "repo-lines-v1:sha256:9f1a232a95e7b4da7d2a8b753dcb9ffd3436e67bec2f4882f339db47bd5e6bef:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM2MjVhMThhYTk4OTRiNGEwZmIzMjAxM2I2ODM3ZjhmOTQ5MjBhNmUyMzFjMjg4MjRhYzk2MTA1OGJhNzUyYzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYxZmU3ODk4OTZhNDdjYzg4YmViNjVkOWU3MGFkNDVkNTQ2MGJlNDY5ZDI2NzFkMTc5OTRhYzRiMzM2YmMzZDgifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L194-L204", + "version": "repo-lines-v1:sha256:8e583d0ced64b6e9cd586fd9fe5774b040731999f442ec0826deef14e3559924:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEwNmQ4ZTA3MDdmNWI1NmQ0YWU1ZWRmOTU2YTcyNmE1ODRjNjU4OTBmZGQ5ZWNmNjUyNDE4NDY5ZWU5NzgyZTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjA0ODJlZmVhNjhiOGY4YTM3YjVhNGIxMDA4MDhiYmQxMmY1YTRmYmFjMGI0ZTcyZmI1N2JiNzY4NjRmNDkifQ" + } + ] + }, + { + "id": "claim_6c5e42ef22d140549ec310036f86fbe7", + "statement": "Optional Boolean global_defaults.verify_ssl defaults to false and supplies the URL-system verify_ssl default; REST systems extend URL systems and accept their transport properties, so explicitly enabling verification is an override rather than the documented baseline.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L354-L360", + "version": "repo-lines-v1:sha256:6065d87932888330946995c6dd4ade51d8d6191759478d8157ffd800d981d8c6:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDk5MGJkZmM2MjhlMDNlNjJmYjMzOGI2MWExYThiODU1NjcyNmMxMjgxODRmNzIzMTNlOWI1OWM1YjMwYzRkZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzc2YzhmMzM1MjgyYWI0MDdmZWNkZjM1NjUwYzk4MzUzZWY4M2Y5M2I2YjQ1MTQ3MWE0OTczNmRlNTUzMjRiZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTQ3MjllMzFjMzE5NDJjY2VlYmYxZTA1MjI1M2NlN2I2YjAxMzdlZWIyZmQwNmMxMjA3NDYwNjk4MGEyZGU2ZiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L12-L16", + "version": "repo-lines-v1:sha256:71c4bb371cd4c889c4924877bc5ceb0a680bb418e31a42ad31ace5fe1be50798:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGQ4NTI0ZWVmNDM1MWUyNmFjODU4NDAyNzI3MWVmNzY5M2EwMjRkZDFkMTkwZjU4MWNjNTU1MDEwZTlhNjM5MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjI1ZTdjMWQ5N2ZlYWQyNjFlYjg2Mjc1OTgzODBiZTQ0ZTg1NTM3MDQ4ZGZmYTljMTMyNDliZmMwNGNmZDkxZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDQ5NWYzNzIxNzRhMzMzMDUyMjQ2MDkzZjg1YWJkODRiOThlMDBlOTY0NTZiNDg3MTQyYzI0YzZmNTUwZjVmYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjdlM2NjOGZiMjE1ZDM0NTk4MDRlZDQxMzlmOGUyMjFmNGNlYWM3Yjg0M2Y4OTU4YjlmYjhiNDBkNzVlNGNhMyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L86-L92", + "version": "repo-lines-v1:sha256:8f421c4693114a543e40955ac5c553266408dc34b3ea149dce7203fbd6e661fb:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODVjMWM4OTQwMGRjNWNiMTk3Mzk2MzZlYzMzZjM3ZjVkMGExNjUxNjljMDE4MTdmN2NiZDE1MGIwMDg2YmE4MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2Q3ODliNmU1MTA4NDIzNjY3MjBmYjIxODNjOTA2ZTA3YzE0NWU4YmQzN2I3ODdlODg5Y2E4NTYxYjgzMDAzNSJ9" + } + ] + }, + { + "id": "claim_9d5bfdf51f3c40e59a0693cd31a5b467", + "statement": "Supporting sources override optional global_defaults.if_source_empty using their local Enum if_source_empty: fail fails an empty-source run and preserves previously synced dataset entities, while accept permits deletion of unseen entities; SQL, REST, and dataset source tables list accept although the metadata default column is blank.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L271-L285", + "version": "repo-lines-v1:sha256:ad57792a4ace6406711b4c642cc22613214c977d024c25db4352d883960f194f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVjMzU5ODFmNDczMzk1ZDViMzY5ODcyYzZhODIzOTQyZGU1NWQyOGFlMWJiOWQyODAwMjRiYmI4N2FmY2I0Y2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhiNTlmM2FjNmVjYjI2NmI0OGJlZTNmZjg5MjgyMjNhYmVmY2FiMDJiOTRhOWI1ZjU5M2RmYTkzODhiYzFkZjkifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L124-L135", + "version": "repo-lines-v1:sha256:6816030aeb86322f6585ee2661972a5275106a8019f0b34b6ef14f496e270667:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliZWIzZDliMmYxY2IwOTJlNTJkMWZlNDBkMmFkMmQ1NWVhMjg3OTAzY2FiM2MxMGE1ZGMwZGE4N2FlYzk2NmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIyYWE3MWYzODY2NmVmN2I3MjBhOGZiMDhjZTE0ODcyZWIyNzFjOGY1OGY2Mzg2NjZlMGZlMzBhNzkyNzI4MDMifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst#L182-L193", + "version": "repo-lines-v1:sha256:cd62814bf011e6d19936ebad3a84bb1eee9494cf4c49a11f467680ff3acc609c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliZWIzZDliMmYxY2IwOTJlNTJkMWZlNDBkMmFkMmQ1NWVhMjg3OTAzY2FiM2MxMGE1ZGMwZGE4N2FlYzk2NmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRjNWNjZWYzODg0MTI4MTBhM2VjZDE3MDg0YWYwMzJhNjU1NWY1ZTYyOTg0YjY0M2U2YTdiNDk2MjkzNGU0ZGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMwNGIyYjM4MzQ5MTIxNDNkMGIxNmUwNjIyNjdjNDJjMTQxZWI4ZjZhMzQ1OWViMDczM2VkYjQ2M2RmMjgxYjIifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L158-L169", + "version": "repo-lines-v1:sha256:36894f089cb85b42965fc96ce7b052756390857f3465b166eff2a0a114d08e2b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliZWIzZDliMmYxY2IwOTJlNTJkMWZlNDBkMmFkMmQ1NWVhMjg3OTAzY2FiM2MxMGE1ZGMwZGE4N2FlYzk2NmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUyNWEzNDY0NDYwOGFhMTRjOGI4Zjc2NjBlODFkNmZiNzdiMzM4ZWE4ZmExMGU0YmFhMmQ4ZWM5ZWMyNzYwNTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjliYjgzMTFkMTIyNDU3MjVkNDg3YzNhNDkxOWMxZTBjNDNlZDlhNGI4MTk4OGIwYTk4M2M4NDFmZDc4MjVlM2IifQ" + } + ] + }, + { + "id": "claim_fa9dde91dda04d6d92c87eaf05082251", + "statement": "Optional Boolean global_defaults.require_populated_input defaults to false and is overridden by dataset-reading sources locally; setting it true prevents a pipe run until required input datasets are populated.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L287-L297", + "version": "repo-lines-v1:sha256:811c1c34a3c3f36d36289afdb5ddcb06ecdfaeff02d2c10af0c50f7cdba578c5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEwMmMwYTMyYzMwMDFjMGNlZjBkZjE3MDJjOTk2M2Y1MjYwODUwNTg3YjNhZGQ2MWVmYThlNDFiNDQ1Mjc4M2YiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ4YjFjZjc3NjcwZmI2MzU4MzU5Yzg4NGJhYmI5ZWRlY2RiYjFkNjE2NWM5MDU4NTcxNTM0NDAzOGZmMjY1YzcifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L87-L93", + "version": "repo-lines-v1:sha256:356cc04ecca28e377abe51250f02bcae6915b3627978ac034e56a22a9d42567f:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2FkZjFhM2MxYzJhYzliZTU2YjE0OTIyMzE1YTY2MzQwNDcxOWIwZjgzZTJjNzFjNGVhZTg5NDIwNmY5NDc0YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTM3OTA3MGMwYmNmNzUyNmRhOWE0Mzk2YTBiMzBhODgzY2Y4ZWUyNDMzYjZkMjJlZWQwNDY0OGFhM2M4YmY0NiJ9" + } + ] + }, + { + "id": "claim_d7a914b2f52042f1a48db0ae6e902882", + "statement": "Internal dataset-to-dataset signalling inherits optional Boolean global_defaults.use_signalling_internally=true; supporting sources explicitly override through supports_signalling, and dataset-source implicit signalling is disabled for intervals shorter than an hour or cron schedules unless explicitly enabled. Signals do not interrupt active runs and are non-persisted best-effort, requiring scheduled backup.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L88-L113", + "version": "repo-lines-v1:sha256:0f098e8d7dee45025b23328dc6327cd8f0cd1acdd203e58eaba630c9446a605d:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ3ZTFlMWFkZTNhMzc5NDNlNTRiNzkzYTZjZTgyYzA0NzhlNDg2YTUzZTg3OWEwMThmOTBlNDI3NTk2MDY4NzQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJkODNkOTkxZWVhMGU1Yzg3ZWFlY2E4NTNiMjcxM2JjMzBmZGU0MWQ0ZDNjMWE3YzJmOWZkYTM4ZmNkNTcyY2UifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L108-L122", + "version": "repo-lines-v1:sha256:618b86414d16b0de68298096cce692f119e3b5a56bb25fd1c3c3b141318f757f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2NjQ4MWE5OTMwMWY5NWMxYzIyZjczZDgxYTUwMTNkZjA5NDIyNWY3YTM4NjUxOTljYjNiZjdhNzE0YWI4N2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM2OGQ1YmQ5OGRmYTFiZTdlNGY0MTQxN2MxZTQxYTZmNTU2ZDM4M2NhN2QzY2YyNmM0NzU2ZmM2MGRkMmQzYzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRiOWI5ZTY3MjgwNGIxYjg2MjgzMjlhNzE0MzE0NTg5NmFlY2QwNzczOTk0Y2I5ZWI1OGUzZjA3ZGVlYWMwY2YifQ" + } + ] + }, + { + "id": "claim_b00bd41c2c974421b802f853d0c62e9b", + "statement": "Pipe dependency-tracking limits inherit optional Integer service-metadata thresholds: warning/error counts of 10000/50000 entities and warning/error byte totals of 33554432/134217728; exceeding warning limits logs warnings, exceeding error limits fails the pump, and excessive error limits risk memory exhaustion.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L362-L391", + "version": "repo-lines-v1:sha256:b2ad0a4b23df483bce630fbdf4ebdd0f70140b929700c3be24513dc46999e058:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNkYjRjODZkZDAwODY4M2U3YzgxZGMwMWMxYjAwYTBmNGE1NGRmNGU5ZmYyOTMxMDcxYmNiMzZhMjdkNTI2NDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU2MDIxOGM5MTVmZGRjYjRiNDRiY2QwOGQwZTJjMzdhYWQyNzE4NDdiYTVhNjEzY2I0MzVjZmJkMmRhZTYzN2MiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjllNTgyZTBhMTE0NjM3MTM2YzhiOWQ5ZTI5MjQwODM0YzI5NDI5NzEzNTEzNjJjZjYzNmM4NDYwMDBhZWJkYWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ0MDRmYTNiNzQzMzk3NTM1YWUwNjVhZjc3OGJmMzEzZjNhMDY5OTk2ZjIyZmVmNTJhOTYzZDQzYjQ0OWJhYzUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L206-L228", + "version": "repo-lines-v1:sha256:3fd780ca9cabb24891e30fe8eb06307602fc10564cc025d204a0e7be0758b0b4:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNjNTAzZjYwYWNjM2MyYmVkNDkxYTFhYzIxNGM4YzZjOWJmMDAyYjA5MmRiZDJmZTAyMzY3NDQ1Zjc0ODZkZGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM2OGQ1YmQ5OGRmYTFiZTdlNGY0MTQxN2MxZTQxYTZmNTU2ZDM4M2NhN2QzY2YyNmM0NzU2ZmM2MGRkMmQzYzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk1OGM0NmNjOThhOWZjMzkxOGQxOTYzYWEwNjQ1MTYxYmQ0ZGEwMWI3MjgyZWMzODBjYzc0YWU0NGQ4ZGU1YWQifQ" + } + ] + }, + { + "id": "claim_e2368d3c610346abb8bd97144e8fe198", + "statement": "For pumped pipes, optional Number schedule_interval is in seconds and optional String cron_expression takes precedence when both are supplied; with neither, defaults are 30 seconds ±1.5 for dataset-source/dataset-sink pipes and 900 seconds ±45 otherwise. Cron is evaluated in UTC.", + "evidence": [ + { + "resource": "repo://hub/cron-expressions.rst#L12-L14", + "version": "repo-lines-v1:sha256:6b1b40f98ffbb2271b42474d35d77e504165ce5b5673e7fb23d6c77070ea49cb:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDk3ZWZmZDFiMTJkNjE0NjNiMGEzMDJjYTgyYmQzMmYyMWEzNjkxZGRhZDM1MjRmOTY0NGIwNTAwNGJmMzMyNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjMzZDFiYTY2YzdmZjYzMGZkZDA1MjJkYmE2MjE4NDE0MzQ2N2EwMmRjZWNhNzY4ZDYzNWMyMDVjNzk0NWQzOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWRmODhjMDAxYTJhOTZhNThkMDQ2ZGMzMmRkNGEyNmFjZTRhOTE5ZGJlMDZhNTBlMTI4ZjBiZmIzZWM1NzAyMSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L67-L76", + "version": "repo-lines-v1:sha256:c7f4a6b7e71bf04f5dd07fad7a3edcd83aa224f4b5cf96790e330251f5ec2e4e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcxNmYzNzFiNmMwYTE3MTM1MjJkMTc3MmMwNWRjYTQ5NmFmNjQxMTZhODM5MWU3YzhmYjUxOTliZTk5Njc0ZmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgwYmExMjVlNjllMzBmODI2ZWViYmZlNjljZGI2NGQwYTUxMDRhOWMxOTVkNDA1MWE2OWQ3ODVjZWU2ZTMxODUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjEzZWJkNzY2YWRlNjVlYjBkM2Q3N2Y2NmNmMDQ2ODZiZmFlZWZlYjA4OGY3YmFiNTRhNTU5NzRkMzhlNTdjMTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI0NDUwZmZhOGZkZTM0MjA3MGJlYmMzZjZjYWM5N2FhYzc2OGY1NWI0NTgzNDNjMmQyYzFkY2E0MTI1NmUxZDEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L98-L110", + "version": "repo-lines-v1:sha256:c23e1d8b90dca507244ea95c978da38d5caef4e71fbc94836e2fc828bcb689d6:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwMzk3YWU3ZjIxYmE2OWIwZmE0NjYyNWY4MDUwYWNlZDVhZDYyY2JhNDliMTI2ZTA2ZTlhNjVkMjk1NmJmM2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZlMDI4MmM1NTAzMWI0MzQ5Y2NlY2IyMWZmZjBmYTkwYzA1YWJkNjVmMmJkMGY4MzE0Y2E4MjgzMWQ1MGRhMjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJiOGMxN2Q3OTlhNTQ0YTU1Y2M4OTBiMTI4NWQzNzZlODA3MWUzNmJjNjBmZWVkYzUwODJkMjM4YzFhYTRjZWUifQ" + } + ] + }, + { + "id": "claim_5e9ffb232a0c4b8b97977a7a3c9c2dfd", + "statement": "Optional pipe batch_size is Integer >=1, usually 100 but defaulting to 1 with a REST sink; batching buffers input for transforms and sink, trades memory for throughput, requires sink support for bulk writes, and sinks can have their own batch_size for expanded output. Optional Boolean pump fallback_to_single_entities_on_batch_fail defaults true and controls single-entity fallback after batch-write failure.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L118-L126", + "version": "repo-lines-v1:sha256:ef27d5677667d311dc05990aa81e66548cd7487aee09aa049dc8ffa41ddf211b:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTlmZmE1NzFkYmFjNWVkYzhkNWUyMWM3MjIzNDZhZTdlMWI1OTg4YWU0Yzc1ZmIzOGM2YjlmN2RjMjA1YmY0YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzhiN2I0NWZkMGIxNzNhOTAzZmEzM2JlOTBiMWY3NzNhZTIzYjAwMjQ0NDA0YjEyM2U0MjZkMjY4OWEzNWJhOCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L48-L61", + "version": "repo-lines-v1:sha256:48bcb3e4785604de093a0c05e8929eec84328e89de4ffe79b874cb49275a6b29:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJjZTg0NTE0MDgwYTdlNTY5YjUzMTA5NjdlMDkwYTY5NzA0ODUyNTk1MTNkYzJiYjNkZTMwMzgxMmE2MDY3ZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhNDViZjcyYzhiZTc1MjI0NWZkZmQyYmQxMmVmMWU1YTgyNjRjNWM4N2U4NTM3N2EwMzc3YzBhZGQzMmYwMzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjEwNzhjZDZlNjRlNGU0NDFhODg2MTRlZThjZjNjMzIyNjA3ZGQxZDFkNzU0ZTYxZjgxYjZmNDBjNDZmNmI0NmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJlMTlkMzUyMDNlMWRiYTg1YzhlMWI0N2FjNmE2ZjViOTk2MTlhZWYzNDJjODRmOTUwNmYxMmJjZmRjNTFjZjEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L278-L284", + "version": "repo-lines-v1:sha256:350895a54bdfbec33316c49f53b8ab40d7a8280c0d7e5ea81e93ad1a5cc3de54:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmEzNzE1YjQ4ZjE0NGM4ZjQwMjNhZWZiM2ExYWI1ZDEwYzAxNzRlMjFiNmYxYWJlY2U4MmQyODQxZmM2OTNiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjU4MDJkMDFiOTVlYmE0MDkzNWUxMzg4Mjg1MTE4MjY4NzNhNGRhNDY3ZDQ3MzQ0N2VmNjc1MjJlZWQ3MjQ5NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWNhOWI2ZmNhOGEyNDg4NmI2NTA4YjYyMzRkMzg4M2JlYzBlZTAwZmIwN2VkOGQ2MzY3YWRlYzlkOWEwOGYwYiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-rest.rst#L12-L12", + "version": "repo-lines-v1:sha256:4f1c95b24b79d0806fc72349b00411bbd39d81e3cd20a4978f07338d1789432d:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGYxYzk1YjI0Yjc5ZDA4MDZmYzcyMzQ5YjAwNDExYmJkMzlkODFlM2NkMjBhNDk3OGYwNzMzOGQxNzg5NDMyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGYxYzk1YjI0Yjc5ZDA4MDZmYzcyMzQ5YjAwNDExYmJkMzlkODFlM2NkMjBhNDk3OGYwNzMzOGQxNzg5NDMyZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjU5ZDllMDljN2ViMDcwNjk0YmQyODA5NmVhOTZlMmZmYTdmN2UyY2ZmYWY3N2QxNGY5YmIwNjFhODdkYjU0NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjdlM2NjOGZiMjE1ZDM0NTk4MDRlZDQxMzlmOGUyMjFmNGNlYWM3Yjg0M2Y4OTU4YjlmYjhiNDBkNzVlNGNhMyJ9" + } + ] + }, + { + "id": "claim_5b9a742f10fb4c93a4d9af5a0314f709", + "statement": "Common optional Boolean transform side_effects defaults false but HTTP and REST transforms default it true; remote-system-changing transforms must be marked side-effecting to prevent inadvertent changes through features such as pipe preview.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-http.rst#L63-L67", + "version": "repo-lines-v1:sha256:a31cef4586133152b28e5b5149f66a54b8d64a3ab34a874fcc78f85e7e553317:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDhlMjI5M2E5NDI0Mzc5YTdlZmU0NzJlZTMzYmY4NmI5ZDQ1M2ZlNTg1MmRlMjc1ZjhmNWQ2ZGQyMWQyY2UxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWFkZDE1ZmNlODcxMzYzOTI5YTRiNTgwYjBjZjIyZjczZjJlOTZiNWM4Nzg0M2NhZTZkYzAzZWU4NjAxODY2YSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst#L73-L77", + "version": "repo-lines-v1:sha256:a31cef4586133152b28e5b5149f66a54b8d64a3ab34a874fcc78f85e7e553317:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDhlMjI5M2E5NDI0Mzc5YTdlZmU0NzJlZTMzYmY4NmI5ZDQ1M2ZlNTg1MmRlMjc1ZjhmNWQ2ZGQyMWQyY2UxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTExZDEwY2E2Mzc4NTAxNDlhYzUzMDRmZGQwZjc4NzNiNmIwYzBiNTZlZTlmNzRhYmQzMjE5MDMwODE5YzlmZiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms.rst#L56-L60", + "version": "repo-lines-v1:sha256:9c81aa41edecce7f2c1a7192293748f810e7ac3d0931f1e7b905d217970c0322:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDhlMjI5M2E5NDI0Mzc5YTdlZmU0NzJlZTMzYmY4NmI5ZDQ1M2ZlNTg1MmRlMjc1ZjhmNWQ2ZGQyMWQyY2UxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmI2NDMzMjM4ZjYzZDA1YTE5M2E3ZjZiOWY3Yzc0NjAzOTExOGFiOTc4ZDkzOTliZjM5NmJmNjBhODk3NmUwNCJ9" + } + ] + }, + { + "id": "claim_1ab3f4c6bc734961ae8f4b4b22a49831", + "statement": "URL-system String url_pattern inserts a relative URL at %s or appends it when the token is absent; deprecated String base_url uses URL joining instead. The reference marks url_pattern required and says exactly one of url_pattern and base_url must be provided.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L216-L216", + "version": "repo-lines-v1:sha256:98c3b908373f4aa22b63ec7480086686f1d61761a861036b427e11b1445f0420:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOThjM2I5MDgzNzNmNGFhMjJiNjNlYzc0ODAwODY2ODZmMWQ2MTc2MWE4NjEwMzZiNDI3ZTExYjE0NDVmMDQyMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOThjM2I5MDgzNzNmNGFhMjJiNjNlYzc0ODAwODY2ODZmMWQ2MTc2MWE4NjEwMzZiNDI3ZTExYjE0NDVmMDQyMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTIxMTUzMWYxOTZhY2NhZjAyYzEwYjc2YWMwNjg2NTQzZmY1NzJjZTIxYzMxNTg2NWZiYzJiODg3YWRlN2NhNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGQyNGI2NTllMTQyYWUxMjIyYzgyNGZjZTVhMjFlNDdkOGY0MGQ3MjU5NjQ5NmUzNzE2YjExNmJiMTM1ZGMxMyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L74-L84", + "version": "repo-lines-v1:sha256:f7d1f0eeff8acca46d3c83b5bda29de40f8f3c2d1fbbd1887b4626d0c8c05dd8:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzYmEwMmIwYzAyN2JmZmMwN2I2YWEyYzFiYzg3ZmIyNjdkMGUzYjJiMTQyMGY0NmJmNTA4YTc2MjBjNDE3Y2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRiOTQxZmQ4NTYzZTQ0OWY0MGU5YTJjOTRmNThhYmRjNjBlODZmODU0MDBjZDAyNDAxYTY3MzJmMzE1OGUwMTYifQ" + } + ] + }, + { + "id": "claim_79272e4de41447b891145291afa96114", + "statement": "URL-system optional Integer connect_timeout and read_timeout default to 60 and 1800 seconds respectively, bounding connection establishment and waiting for an HTTP response.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L178-L188", + "version": "repo-lines-v1:sha256:24dd9b1c678fb7468567e9ca5d1fdafa53273386573160158ccb23af5bdadb09:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU3MzQ3YzZlZDUwZjA1NWJkNmMxNDJhMGVjNGZkZjFmMjNmMDNlZTk0YTEwNmYwNWI0MDQzNjdkYWI4NjYxOWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZhNjExYzNlNmY3MzNiZjNmMDFkOGMxMzJjM2Y5MTM3YzNiODlmZDRmZmVhYmU5OTNlZGQwNWM2MGYwMzk1MmUifQ" + } + ] + }, + { + "id": "claim_91609480272e4ab7bff9fca36dd1b663", + "statement": "URL-system optional Object retry_strategy supplies HTTP-status-specific pump retry defaults with a default key for unspecified codes, while an explicitly set pump retry property takes priority.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L198-L213", + "version": "repo-lines-v1:sha256:bab8c694d91b1a0b6fe911db6f993b54f58a2d89eba86cdf7f4b8c4b909c79f7:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ2MjcyYzIxNWNhMjI3OWJhMmZmMTExNjkyNmRlMzVkNTdhNmNhMDQ2ZGZhNTg1MDM4NWQyMjg1ZGVhYWRkNWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI4ODcxNWYzZDQ1NDMzM2U4NDU4N2NjZjE0NDNkMmEwOWE1NzViOWVkMjI1ZWE0ZmM0NzYxZWQxNzRiMGZjMGMifQ" + } + ] + }, + { + "id": "claim_026cbbc93552464b9f54d125e8920d36", + "statement": "REST sources require String system and operation; an operations Object must be defined on the REST system or referencing REST component, with the component definition taking precedence. Named operations require String url and case-sensitive method chosen from GET, POST, PUT, DELETE, PATCH, OPTIONS, or HEAD.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst#L59-L79", + "version": "repo-lines-v1:sha256:65676f87a38d5cf608656a40cf42d92583ca1583423ab391096c4acfd4e37b79:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiYjNjZmE0NjI3OWJjZDhlMjlmZWVhYjhjYTc5MTM1MWZlMTQxMTVlOTg1NTE4NWQ5NDBkZTRhZmRmNWJiZTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkZGQ0ZGRmZDU5MmM2MTUwMTkyZmM1NjMzNTAwNjAzN2EzOTc4ZjlkMWYzNDAyYWU1MmVmMTlmNjg5ODdjYWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM1OTE2OGZlYzNlZmU2MWZlMGNhYzg2ODA2MDNmZDIyNGJjNTUxNTZjMjVlNzgxNTQwNGY3ZmYzYTEyZGQyZjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L114-L121", + "version": "repo-lines-v1:sha256:8f81b0d1c00cb9a72bc064c36d5b39bb244b6204b06d724d307e584b889545f8:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzMyMWZmMGQwMThlZjBjNmRhN2YxMzUxMmVhOTdiODE2MTE5NzEzZjhmMzBlY2Y4Yzc2MTJmODZmNDJkNzAzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWNlZDljZGNiMmVhYzZmYTgzMzBiMThmNDI1ZGQ1Y2VhNTI4ZTA0MDliZjdkMjJmNDc2NGFmMzJiYmVjMjViOCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L157-L190", + "version": "repo-lines-v1:sha256:03ccf14d9517e3e321903f52757ad7ebe4ab1669f952488802080a5592a4f7d5:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhOWQwNTYxMGM1ODk5MTVjMzQ2ZGQzMjVkODFkYTIyMzcwOTA0NjBjZjM1YmZkOGI3YzVjZDVjMmE5ZDFlOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBlYWNkYzRmMWNhNDdlMTMwZGVlZjc5YmJkY2EzMTMzM2ZhYjhhNzdlZTNhMzg3MjhlNWY5MWIwNDFmODljMjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc3MjY1N2EyYWJiMzNhZmVlYThjMGEwZjg1NDZkYTMxZDVlYzYyNDk0YWVjYzUzZDE5Njc2MTZkZDNlNDIzNDIifQ" + } + ] + }, + { + "id": "claim_2124f379eeaa484da8755148ee9270ca", + "statement": "REST-source optional String payload_property selects the JSON response sub-property for emitted entities, and String Jinja id_expression can supply missing entity ids; both may be configured in system operations but local source values take precedence.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst#L130-L154", + "version": "repo-lines-v1:sha256:bcf0ed8814a5689ac3f67e429414889e63d58b3a19adc50b2ae6e1f8fa18677a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4NTc4YTU5OWQzZTIyNmNiYWJhNzkyODJmY2VjNGJjMTA2ZDA2ODBiOWY4MGY2YWQxMjg2MmM3ZWNkYTQ2YjciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhYjc2NjA4ZWFhMDM3NWI3NGUyMzdlNDMxZjRkYjExYzRjNjg0MmQyNTQwY2IyNDY3ZDJmY2NkOTM0MDBmYWMifQ" + } + ] + }, + { + "id": "claim_427df84167364d48b3225e44898db91d", + "statement": "REST operation optional Dict headers override corresponding system default header keys but cannot discard inherited system header keys.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L105-L110", + "version": "repo-lines-v1:sha256:7174cc6c932a5d69e37e1cc5837c24ca6d3012426bc3b0573cd7ac84b8838a31:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmMzZDU3N2U1MDE1YmY2OWY0NzA4NWYyZjQ4N2QxYTEwY2RhY2NiYmRiYThjNTJlNGM4ZTYzYmM0MGQzZjM3NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODNhNGFjYzQ4ZmRkYjA0ZjA2ZjhkOWY4ZGZiYTYxZGZhNDc3ZjNiMjk4YjI5NDI5MThmNmYxN2FiMDJjNjI1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L192-L205", + "version": "repo-lines-v1:sha256:912e7cd08d01d7b6f2c18eb096a8ec81ed42ea8396aa53311e2166d19cb6abd6:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZjM2Q1NzdlNTAxNWJmNjlmNDcwODVmMmY0ODdkMWExMGNkYWNjYmJkYmE4YzUyZTRjOGU2M2JjNDBkM2YzNzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2ZmJjYWI1ZTFkNDA2ZjdlNWQ0NmY4ZTEyZjQxNTdhNzM2ZWU5N2Q5Zjk2OGI0NzMxZGFkMDQxNGI4ZThlYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk2ZmU1OGMyNjc0YTgzNTZjMWY1ZGM1OTEyOWMwMjA5MTYxMTA4NTI4MzI1M2NiMWNmZTkyZDk1MDhiMTIxNjAifQ" + } + ] + }, + { + "id": "claim_15a27ec919ff40e281ea334e0ef415ec", + "statement": "The REST-source reference permits secrets in operations only when those operations are defined on the system, which constrains moving shared operation definitions into a source.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst#L71-L79", + "version": "repo-lines-v1:sha256:4166af129fb688d46b7e0af237d0913a9353eb53dc411446a5c4afa3b6984489:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzMyMWZmMGQwMThlZjBjNmRhN2YxMzUxMmVhOTdiODE2MTE5NzEzZjhmMzBlY2Y4Yzc2MTJmODZmNDJkNzAzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2RkZDRkZGZkNTkyYzYxNTAxOTJmYzU2MzM1MDA2MDM3YTM5NzhmOWQxZjM0MDJhZTUyZWYxOWY2ODk4N2NhYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + } + ] + }, + { + "id": "claim_e19619f4ba884adc8a18167e56abeadf", + "statement": "A dataset source requires String dataset and streams internal dataset entities without an external system reference; optional Boolean include_previous_versions defaults false, returning only each entity's latest version.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L35-L39", + "version": "repo-lines-v1:sha256:c4713085110bd110e94f3c44aaaafc049235fa858ee2155b76a8be07784605e0:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTU3YzI5YWRjYmMwOTE2OGU4MWQ3ZDZjZTM1MzE1YzhhMWU1M2VmNWQ3MDcyZjI4NmVjNDQzMDMwNzI0NTgyNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODA0ZGVlNjBmYjlmNjU5YTgwNzA3MGUxN2NiNjViZGZkMDliYzZhZGU4ZTIzYzc2OTAxYjA1ZjA3NDUwMWFjZSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L6-L20", + "version": "repo-lines-v1:sha256:4c49c915f6f15936d10f25b2d04ad4f411639a80666e6660454f331809ffaed0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhMjQxNGQxZjU5Yjc2ZjcyMzhkZDNiZGFmNzEwMTZiNzVkY2RkNjlkZDNhMGU0NTFkZWYzMjUxN2Y0YTFkNmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJhMjcwZTg4Y2IxMjIyNDBiMGE2MDJiMWIzMzA3ZTg5NTVhODJjYmZlNTFhMmU1OWEwMTlkYWRmN2M1MTJlNjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2OGFmNDBiY2U0YWUzNTRmYmEwNDg2MmU4OWY5MGEzZWZiZTMxNjdiNjA5MjU4YjUyMzc4YmU1NTI1Mjc0Y2MifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L95-L100", + "version": "repo-lines-v1:sha256:5f4ea21cf0f10b20afd58afebcc3fb85b5f60e3db755ce49e518c6e529bc96dd:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTdlMDU0OTNiMGZkN2M4NTVmMTViODc4M2ZkMGM4MGJlY2UyMjFmZmE5NjNmYWQ5NDljY2YxMGUyMmU3NmIxZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTRiNTUzZWRlZDRhYTcyNTZjZDdlYWE0NmRhMWZjYWI3YjViZjY1ZTlmNThkOTBhZDg0YmQxNzcyNjg0OGQ5MyJ9" + } + ] + }, + { + "id": "claim_99b5db83f44040fc9bfdbc1edba9d08e", + "statement": "A DTL transform requires Object rules containing a default named rule; optional Boolean id_required defaults true and fails when the target _id is missing or not a string.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst#L23-L33", + "version": "repo-lines-v1:sha256:1d23471ab1b35c6aa6d0aef696d320583ca443a7dd6c08accccee5a161a008ef:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI1OTQ4ZTJlZGY2ZThmMjYwOTBlZjNiN2FjNzBhMDRjYmI2NWU5MzgxNWQ2NzNhMDEzZjVhMWU4MzY3MWMxZTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQwOWI3Y2NhMTNjNGQxZWNkZmViYjI0NDdlZmI5ZDMwMTNmMGI1ZmY2NTU2YjhkMDQ4MzU2ZjJhNTU2YWIwYmUifQ" + } + ] + }, + { + "id": "claim_9d3caf485def44dfabcda5b085752068", + "statement": "The json_schema transform annotates rather than inherently rejects invalid entities: optional String key_valid defaults valid and stores a Boolean result, while key_errors defaults errors and adds a list of messages only when invalid.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst#L110-L125", + "version": "repo-lines-v1:sha256:6a6f469a948480d8da48e13c33399b64658784bc3c87455efd2c6d374c1774f5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZjNTZjNGE3YWNkOTBkYTljZTVhMWNlZjk3ZGIwYzdmNWMzZjYyMGI4ZTFmZDJlMmNjY2IxM2IyYTg3ODg1MmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM3MGQwNThjYTdhOTdiZGI4ZTkwNzE0NWI5M2RhZTEwYjZjOTBjNzNmYzIzMjZkY2NmMzQyNjY3ODRkMTIyNjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJhZGNiMzk4NDM5N2Y1OGI2NDdmZWE1YzgzOWYwMDE5NTMwN2Y2NDhkODljMWM3MDk2MmUxZjIxMjk2NDJmMTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst#L44-L56", + "version": "repo-lines-v1:sha256:72f585cd43b2d63ee2e82b819af9b45bafaaffa4f9c326a3541e9aa3d94db63c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjZWRiNDU5ZjZkOWY3ZDk5M2M5ZmMyZGY5MzYyNzkzMjQzYmNiMWU0MTJjYTgzYjVkMmVhZTRmMzExNzNhM2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU3NWFmNDhiMGMwNDgzYzkxM2FmOGMwOTcwYWU5ZmJkOGZmYmE0NGI1NzhlYTBmNWIwYmQ1YWQyNDUzYmI1NWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQwOWI3Y2NhMTNjNGQxZWNkZmViYjI0NDdlZmI5ZDMwMTNmMGI1ZmY2NTU2YjhkMDQ4MzU2ZjJhNTU2YWIwYmUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst#L7-L10", + "version": "repo-lines-v1:sha256:fbc9d2a24ba139ee9ca6f68bc0d7aed79c114bd37fa5e973e7695557204faa11:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjY5YWJlNzY3ZGRiZWNmNGE4Y2Q1ZmY1OGUxMmU3MzU5OTUwYTdjMDZmZmIwOGNlMWE3NmJlOGUxYTlhZWRmMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDIzYjQ2MTk2MTcxMzE2MWNkMDY4YzNlMmE2ZWNjZTMwMzJiMzZlZWJjZWFjMGZjZGZjMDk1Y2RkYTA0NDQ3MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODI5MjQyZWVjM2I3OTU1NGZjMzA5OWU3ZjQyZGVkNmMzMWY2N2VhMjNmMjEwYTUxZTRkZDcxODJlZTFhOWNlYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + } + ] + }, + { + "id": "claim_c562b49e8e9d4aa2aa3c159238b82d85", + "statement": "JSON Schema validation requires Object schema unless String schema_url is supplied; external schema retrieval additionally requires String system referencing a URL system, and the retrieved schema is stored under schema in the effective pipe configuration.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst#L25-L42", + "version": "repo-lines-v1:sha256:6a922ecd515a261b9a62b3bbf05a728bf2a036dadef823c366723141d8c643c6:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQyOWEyYjc4Mzg0MDdhODEwOThkNGFhYzhmYzAwMzkwZTY2MWQ5OWJjYjhjODUzMTM2NDEwN2NiODI1N2M5OTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQyZDBkYjY4MmVmZGQxY2EwZjM0MzA3NmMyZjA1N2JkNjVjODc2ODllOTliNzg3NjY2Yzk3ZGZhNzE0ODllZDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEzZGZlZDI4MzU1ZGEzYTNlMmU3NjlhYzNlNjJmYWI5N2Y1YzNjN2NkMjliODE4N2UyN2ZhZDQzOGRiY2VlYTQifQ" + } + ] + }, + { + "id": "claim_012f6db34fd14911b5f1ec75ec46670a", + "statement": "Dataset-sink optional Boolean deletion_tracking defaults true and deletes entities that existed before a full run but were not seen during it.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L140-L148", + "version": "repo-lines-v1:sha256:3b47f3786e52ba59d3e711c53fe5b3e0616ab5d1e46e686b88f235a750983add:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjg5MTc4ODhmYjgyZGVlOTgwYmYyYWEyMzAxOTE1ZDk3MDQ1YmE3NTExYWNlYzNiYTFkMjRkY2E4OTU2MWZmOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDhkM2I4ZGE2YzE1ZTdjZDA1YTJiNmEyYTcyY2YzZWVkYjExNDFlNzhmNWE1YmRmODhkMjI0NGI3MDY0NGRlMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjQzOWZlYTU3MDhmYjUyN2Q5ZWUxMDhiOTM1MDljMDU0NzQ5MGUyOWQ0NTEwY2I5M2U1ZWRhY2VlMmJlOTFmMyJ9" + } + ] + }, + { + "id": "claim_a61b629cdf654e7c9fd0333682841dfa", + "statement": "SQL sources represent tables, views, or queries as an entity stream using a required String SQL-system reference and deliberately read-only transactions. String table and String/List query are alternative selectors with table taking precedence; optional String schema belongs outside table, and query lists are joined with newlines despite the table being marked required.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L125-L130", + "version": "repo-lines-v1:sha256:8dbf2cb7338e1c64d2cc771a2b8f0c25de03dd3b71a0ed95435e937ac7ca5879:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDI5YTJiNzgzODQwN2E4MTA5OGQ0YWFjOGZjMDAzOTBlNjYxZDk5YmNiOGM4NTMxMzY0MTA3Y2I4MjU3Yzk5NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDMwYmNjNjIyMmZlNWM4N2MxZDg1ZmU5NWQwMzFlYzJhNjE5ZjYwYWRiMjA2NTExNmQwZDM3NDllMjhmYmYwYiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L243-L254", + "version": "repo-lines-v1:sha256:ccae25da68fd858b8aae3399997faf9b6cb937965cf0779091feab55010aa448:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcyYjY2YTQ4OTI1MTcyNzEzZTIzNjAxZTU4OGU0OTZhNTJiMWYwOTZlNzE3YzcyYjBkMjQwZjgwNGY2MTFiZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU3ZjU1YjljZTU4NWUyNzUwZWEyZjA5NmQ0NzIzY2IxOTAzZmE0ZGQwZjJhZjBhYmNlZjk5MWMzM2NiMGFhZTMifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L31-L33", + "version": "repo-lines-v1:sha256:bc75b1c5f318cfe55eedc357d136428a84f1410e0bb2e67085ec68569d178324:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTM3OTA2MDY1ODdiMzNjN2JjZWQ5Yjc3ZTFiZTg5NzAwMTY3NzEyOGMxMjZiODBjOWU2YzJhNDg0NzUyMWJmMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjY5MTM5ODYzMWY5NmNmNGFlNDFiMjkwNWI4OWY5YTI1NGE0NDMzMDMyYmNmYzE3NDdiMGZlMmMwZDBhMmU4NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTgzNmYxODk4YzI4YTQyNDNhMDlkOTQwYTk2MmFhOTQ1NjVmNDZiNjdlNDE4M2JiOTkwYTQ2ZDhlNjVjYTgxMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjI0ZDFjOTQ0YzYzMzA1NDNhNmY0NTA5MGY0YzI0YTVmYjJlODg3NzM0ZWVhODQwYmUyOTE5M2U0NGNjMzY3NyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L58-L92", + "version": "repo-lines-v1:sha256:293e05e30fc84c4e2d0f6c55f5d4602a1f4011ce95abef03dfb319127aa97913:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiYjNjZmE0NjI3OWJjZDhlMjlmZWVhYjhjYTc5MTM1MWZlMTQxMTVlOTg1NTE4NWQ5NDBkZTRhZmRmNWJiZTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAyMmM3NmQyNDE3OGM0MGJmYWVmMTQ0NDc2OWViYzI3YTc4NTEyMmQ1Y2M3OGRmNTk5YzBjMTMzOTAxNDNlMTkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA0ZmY2NGFiOTNjNTc5ZWEyYzgzYjlkOTJiN2M2ZmFiNDZiY2QyMDE4NGEwNWI0MDEwMmIxMTk2YzNjMmIxYjAifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L6-L8", + "version": "repo-lines-v1:sha256:8bd699a1af47e86bd0deb498edb36b148f5c378a828d2f22376a4da66a4c569c:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmM3NDBlZDA1Y2RmYzIzNjA4ZTNhZWVhZDRkZjdlMThiN2VlNTIzNjk5YTZhYmQzOWRhNmQxNjhhNTRhZWY5NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWMyNGMzMjE0ZTg1YmMxZGNhYmI3OThhNmFjYmNlZWE0ZDk5M2I0NDJhZmRmOWRhMjMxNzNlNDI3YTNiOTE1OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDU2YmZmNmE2MjBlNWFiOTRjMzU4ZjNiNGFlYmEwY2IyOGFlYmNjOWVjZjZlMjc2Y2ZmYjIxNjQ0OWQwNGU0OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTU2ODU2NTA2NTZiZmY3MjgxYTZhM2UzMGE0ZDA5ODRmZDg2N2NhNWQ2NDU0N2U0MmQxM2Q1YTY0NmYyZGViYSJ9" + } + ] + }, + { + "id": "claim_cdfbfd2d112b4692b77f9dc459871aa5", + "statement": "SQL-source primary_key accepts a String or List; a table can infer keys from metadata, while a custom query requires explicit primary keys.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L73-L90", + "version": "repo-lines-v1:sha256:2ba821b7796710bb5feecbc79d9576db6ca45a8ec6a91dabf734d4c9a93d744b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI3Y2VhZmFmNDI5NTMxYTZlZWM3YjI5MThkMmJiM2E2ZTFjMDk0ZDllNDM2ZjBiZjZmZWMwY2I0ZDBmZTc0YzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgxOTQ3YmZmMmYyMTU0Nzk1ZGUwZTQwNDJlYTgxNTAxNTU1MWFjYjBkMWYyY2JhNzA3OWU2OWNhNThjYTE4MTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2ZmJjYWI1ZTFkNDA2ZjdlNWQ0NmY4ZTEyZjQxNTdhNzM2ZWU5N2Q5Zjk2OGI0NzMxZGFkMDQxNGI4ZThlYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhlNmY3ZjA2MWY4Njg3NDU3ZjUxYTc0Mzk0N2UzNDZkYmFjZjA4OTI4ZTVmNmFiNzhlMjkwNjE0MDUyOTJjZTcifQ" + } + ] + }, + { + "id": "claim_54f3c14c05ce4c1eb92ba747b30a1de2", + "statement": "Optional SQL-source String updated_column dynamically enables since support and requires >=-compatible values for table queries; query-based continuation needs a full String/List updated_query containing a :since binding, with lists joined by newlines. Custom-query chronological behavior must be set explicitly rather than assumed.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L183-L193", + "version": "repo-lines-v1:sha256:e955bb2d7d181f037e0c90a4bd873077910e27ec58039b4bd7257cae1f3e0664:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmYjk1YTBiZGRmMzZiNWM2YzEyOWUzZDhiZTlhOWEzOWVhN2M5NDdlNGEwNWNlYzU2YTE5NjRhNTBhNDI4M2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZlYjM3ZDMyNzcyMWFlMzk4YThmNDhjYjNmNWJjOWVkMjA2OGFkODEyM2FjOTM0ZmFiM2FkNjJlZjgxZGU1ZTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY2MWY1NGE5MTUwZTMxNTY2MzBmNzRjNTA3OTg0MjdmM2U3MDRhNDAxNmNkMGIwZWM4ZGYwYzAyMGE4Y2MzMTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY3M2EwZTVjZDA2MDFlNjk3ZmI4NDVlYTEyNWI4YTgyMDA3ZjljZjUyMDU2MzkyMDMxOTM0OTExMmE3NTc4NzIifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L256-L270", + "version": "repo-lines-v1:sha256:23efe20cc46a84623570ad7fcfbe2f3245ddabcb8dbd812a2bef9e5adda45c6d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlOThjMjFkZTA3OWQyNDA5NDhlMDQ5ODEwMWNiYWRmOGY4NzA1MTc3OGIzOWI4YjkyODNiMTdkZmU3NTQ4NTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L94-L110", + "version": "repo-lines-v1:sha256:ef6c52e9d0d11df6c04b192aa59056d9fef85329acee20cdb932c524dfe351ed:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMyM2E1NTNmMWZlMDFmNDQ1Y2NlYzQ3NjliMDg3NDk5OTMwMTMxODE2YTljNzk1YTZhZGU3YjY4OGU1Yzk3MDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgxOTQ3YmZmMmYyMTU0Nzk1ZGUwZTQwNDJlYTgxNTAxNTU1MWFjYjBkMWYyY2JhNzA3OWU2OWNhNThjYTE4MTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhlNmY3ZjA2MWY4Njg3NDU3ZjUxYTc0Mzk0N2UzNDZkYmFjZjA4OTI4ZTVmNmFiNzhlMjkwNjE0MDUyOTJjZTciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVjMmY0NzVkNzRlZmQ0YWJjM2NhZGUxMTI0MzhmYjdiZmQ2MjQ1N2U5YWU5MmEyZjVjODAxOWU4ZGYzNGRlMjgifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L81-L86", + "version": "repo-lines-v1:sha256:abe6760fa54e2b1313d15ae2028d5cb8e14396e07c8a7fb4f1ad0e10f6190cc9:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDMzNTM5YzUwNzUzMjhhZWJkNzY5YWM1ODQxYjRiNGE4NjBlM2RiYzFjYjA4YzQ4MWVhZTVkYzQ3OTM1ZWFiZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWZmOTQwZTNlYmRlNzYwOTI0MmE0MjIxYzBhMDM5OTA2ZGM0MzZjYjJlYjU5MWE5MzAxYWU0ZjNmNTRlMjdjNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2ExNzAwYmYwM2JmZDc4MjRkZTNlYTg4MmNhYTI2YWQyMzkxODA3ZTFhYmFiZGM5NmI0ZjRlM2QzODE3MzdmOSJ9" + } + ] + }, + { + "id": "claim_143eb50cf8f847f3a19ac8860d5698ee", + "statement": "The SQL-source reference warns that full and incremental queries must cover the same ids or a failed full sync resumed incrementally can delete unseen ids, and suggests is_chronological_full=false to prevent offsets being saved during a full run.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L112-L120", + "version": "repo-lines-v1:sha256:36afe0f704e3aa462e941a33f28ad765191b2afc7dd92839f0cb03240148120c:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzc4NGZlNDUwY2Q5NTk0NzQzMzc1N2RmODYwZjNkMWIwMThiMjliNjhkOWFkNjc2OTQ5MDZkNTZkMTQ1OTdhNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjE3NGNjNjIwMTg5MWIwOWMyZTAwZmUwYmI2YWQ4YTA1YTZjMDBjYjc1MjNjZjIwMmMxOGU4NGI5MzkzOTcxYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzkwMjg1MTc4ZmQ0NDZhZGUzNWE4Njc4N2IxZjM0MmMzNzZhY2QyMjQwYTc1NjU2MjRlNjgwMzNmNDZjOWU5MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTZkZWE5NTM1MDY5ZWI4NmRlNzY1MmQ4NTYxZDQ2YTAyOWVkMTIzMmM0ZGMxYTliZmE5ODJkZmQ4ZjIzNWE3MSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L192-L203", + "version": "repo-lines-v1:sha256:0de7fbf91c4f90e56882f927a4f455fe07dcee3deb0d9818cf3e2252e09c3849:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdhYTM5ZmM0YjBkMzAzMmI3OGVkNzI4NzFlYjQxY2ZiMGQwMGU4ZTY2NjA0ZGVlNGNkMDdkMmEyNzE5YTY4NjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdkZDIzZjA5NTk2ODdkYzRlN2ViNjlmMTJiYmM5Yjg1NGM5MTJmY2YxNDVhZGI4MDg3MjYyNWMyNTU2ZDRkMjAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQzZDhiYzNkNjU0Y2EyMjUwM2YwZmFmOWQ3YmEwNDFlM2I2NDQ5NTAwZWViZTY2ZDEyNjExMzQ0NmNhYTE4MGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMzNTgzZTk5ZGJmNmU4NTEzMDM5Zjc2YTQ5MjEwZjdkMjE3MzMxZmRhODM2YWE1YmJkZGQ0OTkzYTZhNDE3OTIifQ" + } + ] + }, + { + "id": "claim_c0817428c70e4908bb567a657384df0e", + "statement": "SQL-source optional Integer fetch_size defaults to 1000 rows per cursor fetch, independently of pipe batching.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L118-L126", + "version": "repo-lines-v1:sha256:ef27d5677667d311dc05990aa81e66548cd7487aee09aa049dc8ffa41ddf211b:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTlmZmE1NzFkYmFjNWVkYzhkNWUyMWM3MjIzNDZhZTdlMWI1OTg4YWU0Yzc1ZmIzOGM2YjlmN2RjMjA1YmY0YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzhiN2I0NWZkMGIxNzNhOTAzZmEzM2JlOTBiMWY3NzNhZTIzYjAwMjQ0NDA0YjEyM2U0MjZkMjY4OWEzNWJhOCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L152-L156", + "version": "repo-lines-v1:sha256:0c2c8592c02ac45a9a531e540d734c3e120e0ca2b96e69d9ee8852e1c0d352e7:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkMTEwZDdlMTY1ZWE4YWE1NDAyOTljNGFlNzQzMDMwZDMyN2Q2ZWY0ZWQ3MThhMTliMzg2MDg5YmI0OTI1NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWZkZThkZDI4NWRiZjg5MDNmZmU3MGFmMDRjMGMxOTk1YTEyNDBiYzJiYmY4MjkwOTNkNzQxMzAzNDRjY2Y1MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGI5YjllNjcyODA0YjFiODYyODMyOWE3MTQzMTQ1ODk2YWVjZDA3NzM5OTRjYjllYjU4ZTNmMDdkZWVhYzBjZiJ9" + } + ] + }, + { + "id": "claim_aced72e683fb4e9480eb6802ca3e0b12", + "statement": "SQL-source optional Boolean preserve_null_values defaults false, so null column values are omitted unless enabled.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L146-L150", + "version": "repo-lines-v1:sha256:c480b0b8f5f5852da22e67bed8504669f4e80b0fb1a7f5538e10b22ef56ee555:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDUwNWU0ZDYwMTJkZDU4ZjEzYWRmNjkzYjZhNWQzYTBiZDk0NTM4MTM0NTBhNmExNDNmNzU4ZGMxNWI2ZjU3NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzcyYWM2ZTRkODVlNjEyNTUzNTdmZjRjOTU4OTg5NjA2OTVkMzdmOWIwMGQ4ODA1NjY3NTU3NTRjZTgzNDIwMCJ9" + } + ] + }, + { + "id": "claim_ab0de37f0798442e8415e741073f7fac", + "statement": "SQL-source optional List whitelist and blacklist select columns; when both exist, the blacklist filters the whitelist. Unsupported SQL column types must be excluded or coerced by a custom query.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L132-L144", + "version": "repo-lines-v1:sha256:38b041e158da378b39c5ea1d8f08a3cb3e93fa261952b84d5403e426224baae3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM5YTZkOGEyNjU1NzNlYzA4MGU2NTRkY2MxOGJiN2JmZDU4YzhmMzc1MDc0ZTc0OTY1MjYzZDRhNjI3ZDQwY2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcwZDYxZmY4MTRhOWRhYjViN2MzMWRmZGFiOThlYzEwNTI5ZDQyZGI4YzNmODliNGUxNDQ1MWE1NDc1MjdhMDYifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst#L39-L43", + "version": "repo-lines-v1:sha256:d7f57ecbfd41da473d5010b136983efcf988a5a13957c49f5888c57229c0baee:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODlkNmU0MGJjODdhN2Y5NTY3ZTVmOTFlMGQ4N2ZjYTc1N2ZiZTRhOWJjMjUwMDU4MjVjYjQ1MTU2ODdiZjdmMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2Q5Y2UxYTgyOGY2MTM4NzZmMjJjZDBjYTkwZDBiMTc2MTA5ODgyZWM0YmFkMzhmMDE0YTM1NDQ5ZDk3OGU5MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlmOWNjMTMxNjI4NzVkZjg0MTAwNWEzYTc0ZDM0ZmU0OTJjODBhMGQ5MDJkOWViNjY2YzdmZjI0MjNjYzg3OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + }, + { + "resource": "repo://hub/source-datatype-mapping.rst#L12-L19", + "version": "repo-lines-v1:sha256:ac944e42cc7231d76c30cc5650a212f71b8e4cba317ace273e33c7676a4ea2f0:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWJmMjcwYzdlMTZhYTFkMjI1NzEwODA5MzUxYTQxYzFhZGY0NTRlMmFhN2Y0MDg0YTQ5OTNiOWE4YWE3YjE5YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmU3YjRiZmQ0NDhlMjk4MmNjMTI5YmQ4ZGU4ZDU3MzFhNWZkZDY4YmY3NTRhNTA5MWM5NDQwZTJiN2I2ZjhhMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmE2ZTE1ZGRjZThkY2JjNTk5Zjc2MDAwYjQxY2E3ODdiODJkZmE4NzIxMTZlNjllNTVmMWE0YmIxNzAzMzUxNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTYwZjc5OWRkYmY0YmRjMzRmMjIwMmQ4ZmE3ZTBjNGVhM2VmMmU4NTUyMWViNDMxZjc5ZDhiODU4NDEwMDg4NSJ9" + } + ] + }, + { + "id": "claim_dceb274e911549d38d07702f38526cd3", + "statement": "SQL systems have separate optional Integer connection-pool settings: pool_size=10, pool_max_overflow=10, and pool_timeout=30 seconds; the hard connection limit is pool_size plus pool_max_overflow. The Systems toctree lists database-specific system families, including a distinct Legacy Microsoft SQL Server entry.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-sql.rst#L72-L88", + "version": "repo-lines-v1:sha256:943dc643033984ddaebc6c72317d6852c232494ea8902da39251fcad9b524102:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRlODJmZWI2ZjRiYTRlOTliMTE0NTBiZTkwZDExMzJlNzY1MWQzNGUwYzBjMTMzYzg2MzJmMjIxMjEwZTc1NmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ0ZTk5NjkyZGNlZDU3YTJkOTZkY2U2NzgzNzA0OTdhMTBiZDQyOTkwMWQyZWEyOWI4ZWI0MGIyZmJiZTliZjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFlMDdkOTAwNmQwN2JjYTZiY2NiZmU5Mzk0YWE4ZTBmN2ZiNTk2NjZmMWM2ZTg4NDQxYzQ0YmYzYWI4NzdkMWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBjNjA5ZjFhZTkyZjQxZDUwZWQ2ZDUyYmMzMjM4NTQ2Yjg4OTFhMGE1NDhhMWI2N2YxNTdiMGMwZWE5NWRhNTEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems.rst#L103-L118", + "version": "repo-lines-v1:sha256:a5413b5f624507b18fc22827ca03a2e72961452b3d4aaffc3fd75789a1ad22f5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk3ZWZmMmQ5ZGQ2M2YyNDY0N2NjMGNiOGI4ZWNhZWI0MDk3MTE5OGE0NDE1YjQyOTIzYjdhMjQ2ZjIyMjNlMDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNlZTczYjgzNDU4YTdhNzUyZjc0Mzk1YjMwZDY0ZmU1Zjg1NTllMTIzOTVlYWYzY2NkMmRjNTllMjc5YzlmNDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUzY2I0OGIzZTAzNzIxNTJjMDcwOWZmMGFiNTE4MTZjOTc0MjZjNDkzNjYyYzQ5OTAxYWU1NmIwNzc5NWQ0M2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_98448b6024dc41588691dd66b17e17ec", + "statement": "$ENV(variable) substitution applies to System, Pipe, and service-metadata property values and is managed separately through the Environment Manager API; composed multi-variable values resolve to String, environment references cannot nest, and environment and secret references may combine but not nest.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/environment-variables/environment-variables.rst#L6-L46", + "version": "repo-lines-v1:sha256:1e74dcf672f9060457886ed96e9a58dd23bf7c9447ef462731d4f5cf96bb6efd:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVhYjNjMDU2ZDliZmQ5NDRkMTNhYmRiN2ExMjg5MDYwZWE3NTBlMzM4ZTFhYmVhY2M4MTYyMGY3ZDRkNmQ4NGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJjZmVhZmM0NjRiZDM0NjA3MWEzZmU5ZmRkNjI5YjhmNDUxYzk4YzIzMDNiYjI1MGQ5N2EwNDcyNGI5YzgyMTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdkMTNmOWM3Y2E1ZWI0NmUxZGY2YTM1ZjlmMDI5NmU2ZGRiMjA0NGE3Mzk5ZDY2NTUzZGE5YzE3MTNiNzVjYjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY5ZDhmMDM5YTQzZDE4N2I4ZjFhYmU2ZWJhZTMyYWM0YzYwNzY0ZmIwYjMzODA0M2ViZTc2MzU4MWJjMzAxZDMifQ" + } + ] + }, + { + "id": "claim_4fa132d850ed4ce9a1c0bb4b04528ffd", + "statement": "$conditional_properties replaces selected properties at its containing level rather than deep-merging objects, supports nested blocks, cannot set root _id/type, and is unsupported in transforms or embedded data.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/environment-variables/environment-variables.rst#L53-L97", + "version": "repo-lines-v1:sha256:ee16fc330b76d550df81bf3c66d7f7f5ae87eda058c1b0f2267b9aec5e874140:eyJzZWxlY3RlZExpbmVDb3VudCI6NDUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI5ZjUwZGJlMjExZmI4ZjQzNzFhNTk0N2RiM2YwMmYyNzBjZTVhYTQ4ZDRjNjkxMTkwNDM4NWM0OGNhZDY2MDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5NDVkZTVlZWJlMjU0MTNiYjFjOTIwNGQ0MTcyZmJmMDJlZDcwNTMwZDMyMDMxNzc2Y2EzOWZiNzgzZGQ3OTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhiYTI5MmQ1ZTdjZWVmZWM0ODRmMjA1OTNjNTdjMjU4M2QzYmMxZDUwNzI0NDY2ZjU3MjAzMmY2NTc4ZTc4ZTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_d9c10201b75d42a3859e7f50bb5b6d50", + "statement": "Conditional source, sink, and transform components select a complete active component when the parent pipe is created; each requires String condition and Object alternatives covering every possible condition value, making this environment/component selection rather than per-entity branching.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-conditional.rst#L7-L61", + "version": "repo-lines-v1:sha256:bc04184c373b468a6e6ebaca449a7eedaaeb2c99f2dfc4dd6463ca7458352d54:eyJzZWxlY3RlZExpbmVDb3VudCI6NTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNkMWM5NjZkNjc5ZDk3ZjI1MDg5YTIyOGQ3ZjE2NGYwYjM3YjJmNjViNjExMWU3NmQyYjE4ZDAyNWMxMTRlYjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM3ZTMzYThiNjE5ZWYwMzJmOTA3YzgyYjFjYjE0ZjMwYzljYjgwODZhY2Q2NWFiZmMyNmNlOTVkNjIxZjQ4YjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-conditional.rst#L7-L61", + "version": "repo-lines-v1:sha256:5bcae0be1092978765843fe74a8d84083920a34fca4f5ab1f7111fbd898c0691:eyJzZWxlY3RlZExpbmVDb3VudCI6NTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFiYzhhMWJjNDg4NDI3ZTRjYjg3N2JhOWUxZTY1MDQyY2Y4ZTYwOTIyYzY2NzJlYjE3YjBhYjkxZmRkNWI2MmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZlNTY4ZTdiZTZlOGQ0ZDliNGY3M2E4MTg2NjUzNGQwNjU3NGRkMGQwYzg4ODlmZGZiOTVhMTk5MTJlMjE3OGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-conditional.rst#L7-L61", + "version": "repo-lines-v1:sha256:70c75aa4a80897776b463f0d24ef46ace85b47bc5629896a7603d7ca6899ac02:eyJzZWxlY3RlZExpbmVDb3VudCI6NTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJjYjk4NzViZTIxZGFhOTYwZmIwNmFmY2JjMjE0Nzk3YmFiYmU0ZmYyZDU1YzM1OWM1YWU3YzRjZjQ0ZjZlNDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAyMWQyZGVjNzIzMjk0NTI5ODcyMDY0ZmQxMmM1NDFhMzU1ZGFhNDEyZTEzMDVhOTdiNWUyYTgzZmY5YThkY2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIifQ" + } + ] + }, + { + "id": "claim_65870d8c16554eaaaaa96c9532734e80", + "statement": "HTTP endpoint sources and sinks use type http_endpoint and are request-driven rather than pumped: receivers flow only on posting entities, publishers only on retrieval. Documented routes are /api/receivers/{pipe}/entities and /api/publishers/{pipe}/entities on localhost:9042.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-http.rst#L50-L57", + "version": "repo-lines-v1:sha256:861e288104741ff5085e229319310b2da3d0848502fdefd54e306e9b4bd368ed:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjk3ZjA3MmJjMTUzMmY1MjljMmM5NGZhZDU4ZTI1YzhjNWUyMzMxZTA1Y2I1NTNmN2Y2NDA3YjRlNGRjM2Q2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDg5M2Y0MGUzNzgxZWI4OTZjODJkMDQ2YTA4MDY3YTExZTM1Y2RmMmYxZGZhZjI2ZmVhOTBiOGRiNjY3NjQxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWIxODBlYjA1ZWY5Mjc0N2Q3MjBlNWU0YzI5MzZlN2QwNTM5ZjVhNTNhNDNhNDBmMzQxMDY3M2I0NjBmYTE5MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGFmYjA3Y2FmZjNmYTc0YjAzM2VmZGVkZGVlZjc5ZWY4YTZlOGJjYzQzODMwMjU4MmM5MTZlMjFiMjM4NWRiOSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-http.rst#L7-L34", + "version": "repo-lines-v1:sha256:a2a782993a007f9de6b26ffe1c9464373f45caddf295b31d9fe7b5c31e87fa80:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRiMzUxYjk3NmVlMjg5Mzc2YjhjNDRhYTgwMGNhYmU3OTM2OGEzZjhkZGUyMzBjNDU4ZDVmMWU0YzA4YjY1ZTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVlNTQwMTI5YzI1NDdjMDQ4MWJlZWNhM2NmYWZkZmJmZTg4NGYzYTEwNWVjY2NhZDhkYzA1YTliOGEwY2I5OWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNjOTkwZjU0MmQzNmI1NGM0Yzk3MmRhZDdiNThjOWE3NTVkZWVlNThhNmNlN2Q5ODU1ZmE0NTE5NGYyNzRlMTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMyMWQ1YjE4MDRjYTFhY2M1NzVkMTJjNjNkNjc3ZWZmMDMzMWZjMjE4N2ZlZDNhN2Q1YTUzZDhkNmY2YjhlY2MifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L6-L27", + "version": "repo-lines-v1:sha256:7a633424ffc6abef8a15b60cae8996cf6a08e1bb6803d3239b552187e65cac6d:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1ZmYwNTZhOTkwNDM0ZDcxNjc4YTE3NjQ2YWZmYTM1ZjNmNTBhMGI1MDNkM2Q4NzViYWJiMzBiYzcyMWJhMDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc0YWM0MzE0YzM2NzFhYjJlYzg3ODBjNGE4YTM0NDY0NjY1MTAyOTk3MTZjNjczMmNhMmNiOTg3YTg4YzgxZTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUyNTQ5MGVhMWVhZDA0YmVjZGRiYjUyNmY2Mzc1MjM4YzJiNDhjYzUwNzY0ODlhYjBkYTA5YzZiODA4N2E1YTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMxZjI1OGE3M2RlZjkyMTI4ZDJiZTg3MmMzNDI1ZWI4ZDFhZjBkMmJjMzA3YzJhOWIyODkyMDY0OWVjYzY4ZTIifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L60-L67", + "version": "repo-lines-v1:sha256:861e288104741ff5085e229319310b2da3d0848502fdefd54e306e9b4bd368ed:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjk3ZjA3MmJjMTUzMmY1MjljMmM5NGZhZDU4ZTI1YzhjNWUyMzMxZTA1Y2I1NTNmN2Y2NDA3YjRlNGRjM2Q2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDg5M2Y0MGUzNzgxZWI4OTZjODJkMDQ2YTA4MDY3YTExZTM1Y2RmMmYxZGZhZjI2ZmVhOTBiOGRiNjY3NjQxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjUxYzhhNmQzYWVkZjI2ZDA2OTk5OTAyNDhjM2RjOTg0YTk3NjRiMmE4NWVlNmJjZjY5ZDJhNDY2MjM3OThhOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGFmYjA3Y2FmZjNmYTc0YjAzM2VmZGVkZGVlZjc5ZWY4YTZlOGJjYzQzODMwMjU4MmM5MTZlMjFiMjM4NWRiOSJ9" + } + ] + }, + { + "id": "claim_39e7247f85f14656a4edac08dacf4084", + "statement": "The HTTP receiver JSON endpoint accepts either an individual JSON object or a list with application/json, and publisher URL parameters are bound to DTL variable _B.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-http.rst#L36-L42", + "version": "repo-lines-v1:sha256:20cd5ba7524190754a09e91d185e6c3d8c811412fff483db1c8d756e8902e47f:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGZmMmY0OThiOTdkM2IwOWE3OTAwNTVmN2YyZjY2YzgwOGRhYTI4YWQzMTA0MTUxOWFlNDgxZTQ5ZWNhM2Q2MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTk1ZGVlMWQ2OTY5YjAzZjM5ODY3NjJmZjA3MWU4NmE4ZDNiMDQ1ZTY0YTk0NDgzMTFiNGZhMTA5NGMxZDA1NiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDUzMDBmOWRiZWZkZmU4OTAyYzUyNWZkYjhmY2M5YjNlNTIwZWQ4M2QwMmM3ZmIyNWJhMDE3NmY1ZjkzYTI5ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjIyNTI4YjBmMzFlOTc3ZjJmZDc2Y2JiYjlmZTUxYjBiY2NlZTE0Y2FkNTE2ODViZTBmMjQ5NjIxOTIxNGJiYyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L29-L41", + "version": "repo-lines-v1:sha256:f9b72aa0f1c7378c3b0bcf27ff88d2c03ac84be95d1440673d05264306ea5e35:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU5MGYyNWRjY2NlYzNhZTlmZTAwNzM0MzlkZDU4NTA5YTFmOWMyMWI5MDAzNjYxOTM2N2IxYzBlNDRjYzU4MWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJhOGE1YmNlZTcxMDMxZDJlYTYxNjY2MWJmOTkzZDgzNTkyNmI4YjhmMGJlY2I0ZTQwZGExMGIxNzRlZGNkZjUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUxNzIxNTc0M2RmNzM1YzM1MmU2OTlmYWZiMzY0NjMwMjIzZTJkZWYwOWQxMzMxNGE0ZTc1MWYwY2U5ZjI0MTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVjNDgwMWVlYzY2NTYxNDVkNzIyYWJiYTZjNDk5NGY2MWRhNGMyY2M0YTMzZjExYmRlY2I1MjliMWM3ZGE3ZTQifQ" + } + ] + }, + { + "id": "claim_56d8c471eb4c4e7987d14a98eac71ea6", + "statement": "The HTTP-publisher reference example omits source and describes a same-named dataset, although the pipe property reference marks source required; explicitly configuring the source avoids relying on this documentation discrepancy.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L165-L169", + "version": "repo-lines-v1:sha256:745df69c43a5ba1e5372d88714c98027724bd113715e67f894b0b5ab060a3c26:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmUwYmI1NmRjZTU1YzczYjZiMDUwMzg5NTY3YjYzMDg5MTE5OWYzZGYzYjk5NWMyNjEyMDJjZjY1Yzk1MDA2MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2QyYTRlNWI2NDU2ZGNjNzBkNjJkNDI4ZDM4NGIyMzMzZWQxYjQzMjEzOTBmZjk2NWQxMGJkZmZmMmUxZmM5YSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-http.rst#L90-L106", + "version": "repo-lines-v1:sha256:5cc9f217fc0343ec24dcbaa9f3d39ed2855d78bfbdf094e185cf0070d5937b21:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYxMjYyZDgwMmM1NmU0OTRkYzU2MGNmZDdiMGZjZTJkMDhkNzM2MGMwMDc1YTkzNzAzYWI5M2ZhOThjOTBmMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUyMTE1MzFmMTk2YWNjYWYwMmMxMGI3NmFjMDY4NjU0M2ZmNTcyY2UyMWMzMTU4NjVmYmMyYjg4N2FkZTdjYTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoyLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc1YTExZGE0NGM4MDI0ODZiYzZmNjU2NDBhYTQ4YTczMGYwZjY4NGM1YzA3YTQyYmEzY2QxNzM1ZWIzZmIwNzAifQ" + } + ] + }, + { + "id": "claim_9652e88065634792b41264fde234d955", + "statement": "Template transforms are bundled REST-oriented templates named transform-collect-rest, transform-defaults-rest, and transform-share-rest; required template accepts String or Object and required properties is Object, with an Object template body permitted to override the built-in version for development.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L142-L145", + "version": "repo-lines-v1:sha256:4c3563c75628396e7ffd0b4dadfcfecc3ce036a006f3a4dd55a402104b44223e:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjIxODA0YWI0MzlmMmExM2U4ODJiMzhkZTY5ZjU1MzBmMTZhNzFmN2ZhMzM1YTU0YTEzNzZlNjJlNDA2ODJhYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2NmYmMwMWE0OTIxZmJhMmQxNDc3Y2FmZTM4M2M4NTM5YmVjZjgzMmM3NjU0OWMwYjEzMmU1YzkwNzM1M2JmZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGY1ZmRlZmRhMGI4NDY2NDRiMDE2MjNiN2Q4NGRhZGEyMmQ1ZTc2YTc4NzcyZjJlZjc1ZTYzOTM0MDI3NDk3OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWI3NzFlYmJiZGEyZjgwZGFmYTE4ZDY5MDhmMDA0YmJlYTkzMDJhZjMwZDM4OGFjZjg1YTg3YTNkN2ZiZGQ4NSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L52-L54", + "version": "repo-lines-v1:sha256:f8e6ff108f3ab1d90ee7375faaa10d03fb7f276fe4f9a681eaeedbc5a012d5ff:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzg4OWU3YWJkMWFkNTNmMWJjOTI2ZDM1NjhlNWM1YjJiMDZjNGY2ZWE0ZjBmYzQ2Y2VkMzI3MmRmODA3NzAxMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDE3OGU4NDgyZmYzMjQ3NzBmNThlOTc1MDZjZGM0NmJkZDI1MDIzN2RkOGYxYjA1YzIwYzA4ZDUzNDI5YTJjMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTZmNWU3NGIzZDNlNTY5OWU1OTk4OTcxMWIyMTQyMGZkMjM0ZWI3YWMzMDYxMGE0Y2RjNWYyYjAxNTljZGEwNSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L6-L50", + "version": "repo-lines-v1:sha256:dd41bbd247e6f3348084a579872fe9748d7928aca88bee2dc14c4d39581689c2:eyJzZWxlY3RlZExpbmVDb3VudCI6NDUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhNTcxZWFjNmJlNzk2Y2JkMzc0MzFiMDY0Nzk3MTk4MjgyYTEyMjFmZTBiNDYxYjVmM2Q3MTc3NmM5MjBmMjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5ZjJiZDlhYTA1MGFkOTVjMzJiOGNjYjc0MzY3MWYwMTc3YTk4NjhiMTlmNDMxMGRlMWMwYzg4NzlhMDQyOTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFkYzNlYWZlNzllYjliNDI0Y2Y4MWZmOWY1ZDU0OTE2Mjg4NzVhZTViZWQ3ODg5ZWI2M2I1OWY3NDRiZGIxMTIifQ" + } + ] + }, + { + "id": "claim_e5c0bd5062e94512905e3950587b6163", + "statement": "XML transforms render the XML-endpoint-sink entity shape to a string embedded in required String xml-property and continue the transform chain; optional Boolean include-xml-decl defaults false and skip-deleted-entities defaults true.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-xml.rst#L52-L69", + "version": "repo-lines-v1:sha256:a13a4cf6b6cf28c123915393b2ff28f84cadcf979796bf85e3f37fb767e5ac9c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFiM2ZiZTg1NDRkMGVlY2UzYTRkMzczNDlhMTdhNGRlYmU1MGNjZDlkZGQwZTg0NWViMDhhMGU5YmNiZDNmMTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQwOWI3Y2NhMTNjNGQxZWNkZmViYjI0NDdlZmI5ZDMwMTNmMGI1ZmY2NTU2YjhkMDQ4MzU2ZjJhNTU2YWIwYmUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-xml.rst#L6-L12", + "version": "repo-lines-v1:sha256:bf62a32db6941695bbe6f51bf8ada813d57890308215385b1c278393ca326e2d:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTk0ZTY2MzgxYjk0OGFkN2ZkMzMwMjVkOWRhNWNlMWE2NjA2MTI4ZGJhZjFiYjAwYzIyMzMxNWIyZDFlNDdiOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZWJiZDAwNTE0ODQyZDI5ZmVjZDBkOWQ3ZGFhZDkyY2UwNzczZmIzNGExOTI3YTJkMmQ5ODVkYmE4MzU3ZWFkOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDEyMzM2NmZmNzNjYjY4MzBmZGFkZjZhYjU1ZjYxN2E2MDZhODg4YTg1NzEwM2VlY2ZjZWExNWE3ZGViY2U5MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjg1NTZkMTMyNzFmZjA2NTcwM2Y5ZmZiZWE4YTM1YWYxMmEyNzM4YjY2ZWMwNWMxMzdkZWVkMWJmOGY3MmI1OCJ9" + } + ] + }, + { + "id": "claim_a879997ef6b9475a8ccce2c7e2fd182d", + "statement": "HTTP transforms POST JSON entity arrays and require application/json array responses; non-2xx responses raise exceptions and zero or more output entities may be returned. Their reference recommends REST transforms as the more flexible option for most uses.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-http.rst#L7-L21", + "version": "repo-lines-v1:sha256:eddbd4bd5d59d87308ae6ebce164357dfb392b3328dea5dfb3e9b90d69adc924:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUwYjUwNDI4NDZiMTdlMjhhNTU5NTJmM2FjZTEzYjhhMGZiZTc5NjFmOTRiMzE3Y2NhMDVlNGI1ZGVkMjViYTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhMWJjNGIyYWY0ZjE3ODhhZGFlMGVlOTcyZDIxOTFjMWQ1ZmIzMzAwMjVkOWFjMzYyZmQwYWE5NzcyZjUxZDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiZDIyNjE0MDA3Mjk4Yzk1MzFiODM3NzFhYjc5YWY1NzRhMTEzYWE4NmIyYzE3NTFhNzc2MDhjMTcxZDU2MmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2OGFmNDBiY2U0YWUzNTRmYmEwNDg2MmU4OWY5MGEzZWZiZTMxNjdiNjA5MjU4YjUyMzc4YmU1NTI1Mjc0Y2MifQ" + } + ] + }, + { + "id": "claim_0554f0bed9384370820dd41e1d98b69c", + "statement": "Custom connector extension points can use URL systems for external JSON pull/push endpoints or Microservice systems for Docker services hosted inside Sesam.", + "evidence": [ + { + "resource": "repo://hub/extension-points.rst#L7-L19", + "version": "repo-lines-v1:sha256:686fc2c5cde95f5fff5365d60c34f6df1d2798c76e0ac0c29a2487ab4a793a38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJhY2EzYzFjNDFmNmViNGY4ZDdlYTgyNGViNjI0ZmViYTMzYmVkNmFhNTk3ZmExZjk4ZDZhYmI1NDgwOTA0ZTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4Y2IxOGFkMjhiYmQ5MWFiOTNmMDU1ZmQ1MWJkMWI2NWJlMzNiMmEzMGRjYzRkZTMwMGUzMmI1ODE2YTc5YWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ0OTUyNzlkMzQ0MjQ0ODcxODU1NTJiZTg0YWM3ODg5NTkzNDkxNmJlMTAwMmMyMWIzZjEyNTAxY2UzYTI1ODMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNmMDJjODQ0Y2I1YWU2NWI3ZjQ4Njc4OTMyZTVkZGM1ZmZiNmVmZWZhMTA4MjVmY2I2MjU2OGJkZTA3MzVmNWIifQ" + } + ] + }, + { + "id": "claim_2be7262bc89c4264bb7e444cba8d38eb", + "statement": "Embedded sources are intended for small static datasets inside configuration and should not hold large entity populations.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-embedded.rst#L7-L7", + "version": "repo-lines-v1:sha256:e1a7d12e1cf28dd3f5fb8b2b0f1a2e64d08a46ae98173962d5e8f858cf588013:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTFhN2QxMmUxY2YyOGRkM2Y1ZmI4YjJiMGYxYTJlNjRkMDhhNDZhZTk4MTczOTYyZDVlOGY4NThjZjU4ODAxMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTFhN2QxMmUxY2YyOGRkM2Y1ZmI4YjJiMGYxYTJlNjRkMDhhNDZhZTk4MTczOTYyZDVlOGY4NThjZjU4ODAxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzU0OWI1MTlmNmNkOTYxYmZiODQ3NTUzMmQxODhiN2Q0OTM3YzY1NDViMjVmY2MwYThhNzU5MjBiMGMwZjI1ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + } + ] + }, + { + "id": "claim_1a5096bfff0f4d38bfeb260f457c95c2", + "statement": "The Service Configuration Guide routes to General, Environment variables, Service metadata, Pipes, and Systems; Pipes routes to Sources, Transforms, Sinks, and Pumps, whose toctrees distinguish dataset-combination, endpoint, file/JSON, messaging/directory, RDF, search, and notification families rather than defining a single universal connector option contract.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L298-L304", + "version": "repo-lines-v1:sha256:95549b5d4b710b86eb83914a7f3550404bde15a4a8e9aa2398128a1c048b5c7e:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZThmN2U3MTYxOTQzNTk5YmEyNDk3YzE4NDhhN2M4NmUxMmZhZGY0MTBkMTk5ZTlhYmQxODk5NGIzODc0MWIwZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWNlYjQ3YzMwZWEwYzMzYmQ0OWRiOGY4ZTQxMzRjNmY4MjI0OGZiNTdmZTc1YjZjYTFlNTRkOTExMjRmOWJhNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTU5ZThkNWQ5ZDllOTE5MzFjYmViYzJjMDliYzZjZDBkNGI1OWUxZDFiMTA1MzY5NDJlNDBmZjQ1YmQ4ZTMwYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks.rst#L55-L76", + "version": "repo-lines-v1:sha256:6ea15ee105bcb66286c17426e8e3f7b3767aa204f3d114af3f6a599c6533f7d9:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiMTkxM2Y2MzllYTYzMGRmMTY4ZmZmOGY2ZGU4Y2ZjNmY0OWQ4MjJlMjBjY2UwZTRlOGNiNmVhZmRkMGU0NDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxMzY2NDIyYzg1OGY3MGM5M2QwZDY2ZDlhNDQ3MjIyYzY0MjM0NTQzOTI1NjYyNTYxMGU5NWIwZGJmYTY0ZTkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L344-L367", + "version": "repo-lines-v1:sha256:6ffd266e830f4baba34c6d4f8bb6f58abb7f23fcd0530008980040a487818dec:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyZGJkZWI5NDY3MWM2NzU1MjAyNjYxNzkzMGM0NzdkOTk4MzBlODIzYWI5Yzk2NjRlNjI4NWY3NzRiZDliZmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQxNjU3MTAwNDIxYmUyYjE4YWY1MzA1OWU5MGU1ZTRmOTBlYWMwZTc5NGRlMzQwZmQyOWFhYjVlYzkxNDgwNTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhkOWIyNmM3NDI1YTdkYzhkZmRmOWI3YTE2YWNlN2EyMzI1YWFkYzU1ODAzNmI2ZTkwZjllMTM0MTRlMmRkMzAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms.rst#L66-L80", + "version": "repo-lines-v1:sha256:c8cbde9b9be473b19d2d06d6a3d963d6ede7345995f81e5243b0b0ec3ae92e52:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc3MjRmMWYyNjQ1MGIxM2RhNTFiNmYxMzYyOGQ0ZWZlY2MyMjkxM2ZiMmFkOTU1NTc3ZGMwYzQ4YzYyNjVhNTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5NmE5NmM4OGZhYmVkNzk4MjEwYTI3OGM5YTRhZWQ4M2IwYTc0NmNiMTQ5ODhiNDQyZDYzOGYyMGM3YmQyZjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIxZTMwNTI5Njk3MDRhY2NiMzkxYjI0YjA4OWVkODdhYzg0MDQ0NzczMmE5MzM5YTk1NjA4YTQzOWEzYjJmNzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems.rst#L97-L118", + "version": "repo-lines-v1:sha256:cfedf092f5ec4a7c3ef82398e318a58d5c5783753122cc4c081e4d55b37c3194:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU4ZjIxNmY3NGE2ZGVlZDM5NzNlNDYzMjZiMDg5ODg5NTRkNmM2ZDk2M2FmNTdkMGI3OGI2NjZlNDNiYWQ3MDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNlZTczYjgzNDU4YTdhNzUyZjc0Mzk1YjMwZDY0ZmU1Zjg1NTllMTIzOTVlYWYzY2NkMmRjNTllMjc5YzlmNDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/index-service-configuration.rst#L7-L14", + "version": "repo-lines-v1:sha256:d53a05f189fd10aa8dc88886e369d526f89a0ca3a2037c6a48cd44d636319c85:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZThmN2U3MTYxOTQzNTk5YmEyNDk3YzE4NDhhN2M4NmUxMmZhZGY0MTBkMTk5ZTlhYmQxODk5NGIzODc0MWIwZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWJhODA1OGQzYzkzNjkyYjBkMWFkNDY1Njc1ZTU5YjQ3MmQ3MDVmZGNkOWNmMmRlZGE1NWE0MmE1OTdiNDEzYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjJkNTVlZDNmZGEyNDM0NzJiMTU3ZmVjMjk1ZmRlNmM3ZWExNjRjZDVlMWQxNWU2MjY2ZGEyYjAyN2Q3NzQxZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjEsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiJ9" + } + ] + }, + { + "id": "claim_4e90d9d48ccd4beca60dd2e794ff3d90", + "statement": "The dataset-sink reference inconsistently types max_entity_bytes_size as Enum while describing a byte limit with numeric default 104857600; service metadata types global_defaults.max_entity_bytes_size as Integer with the same default.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L172-L176", + "version": "repo-lines-v1:sha256:2eb60c5892df1bbf81e10b49131227b815473a442c565d595757e309a25ece99:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDkzMTQ1MTcwZGNiYTk3NGFlMWI4OGUxMDdhOTdjY2EyYzIyZjkyNGRlMjhkMDE5ZWU4Mjg2ODBiZTg0MTAzNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTBlZDM1MDFjOGRmYjZjYmZiYzJhZjQ1NTg1NmE4MzEzMmE4MjhkM2I3YWE0NmRiMzY5MmY5ZDBmY2VhNjEwNCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L176-L180", + "version": "repo-lines-v1:sha256:8380a7f96159864c2e8b5a86dcced84c9111a275367af97793943b969c8b2a4c:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2I5YmUxOWNhNWZlY2JmNzQ0MTI5Y2ZmZmM4NDc1ZWI1YWY4YjE5NDA5NDk4ZjVhZTRjNTJiMmRkYTQwZDFjNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzE1MjgzNzQ4NmIzZDY5OTVjN2I4MzBiZTMzNjY5NGYyNTZkZWQ0NTk0ZGE2NTYwMGRkZTI3MTY1ZjBmNGNhNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTllNGU0ZjVhZTc2MzgxZWQ2YWVkZDJlZmExMjFhNzczYzRhMGUzNWUyMzk2NWJlMWMwMDE1MjY1ZWUzMDY0OCJ9" + } + ] + }, + { + "id": "claim_f9e178d49b51481db0116c5c6c075c04", + "statement": "Reference prototypes are not reliable default lists or standalone JSON: environment examples use unprefixed oracle/url system types and deprecated base_url, while system prototypes use system: family types; REST-system rate_limiting_delay is 60 in its prototype but 1 in its default table.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/environment-variables/environment-variables.rst#L20-L38", + "version": "repo-lines-v1:sha256:8473b8c49ead5e0a08d21b7a66a6bf0f2e07fdde2cef6a1ac5f142175e157247:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc3Y2FmNTU4NDhkYWRkZDQ2MmFhZTY1ZTBjYmIwOTBhMzBlOGU4ZjU0YWJmYjBmMTg4ZGJhNDMzNDU3NGQzZDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM0MWM0N2EwODhhNzc3NTBiMzQ4MDI0ZmQ3ZWI0NDIwZDAwOTdhNTczYWViYWYyNmE2MDRjMTE3NmZlYmFlNzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImEyYjIxMzcwMGIyNDJkYTYyYTcxY2Q4NjIxYWQ1YmY0NmMwZGQzNDQ1M2Y3NmIwYmU5NzE1MzE5ZGNmNjQyMmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRjNmMxYTQ1YTA5NjA1MTY0MzdkMmFlMDk5YTllMzMwMmFhZjA5NGEyNzA2ZTI4OTMyNzY3MzcyZjUzZmIwNmMifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L130-L136", + "version": "repo-lines-v1:sha256:81bb0431357bdf0e0242b4085214a40d313491088758173db7d9060111dcba58:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDMzOTI3NDc2NzAzN2YxMGMwYzY1M2I1ZWY3MzJjNGEzNDZlYWIxOTA0YjdkZTYzMzI2NTI0NTY0MDQyYTQ4MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjJhYTgxYmYyMTMyMTFkZWExN2QyOGNhYzQxMmNlZWM4YzdiNjg3ODMxNWZlYTAzOTliOTM3M2NmZjA5MTYwMiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L23-L37", + "version": "repo-lines-v1:sha256:c96f35e04639b7837d7ed8af0165566b7cc392567d81e86ba3075b4468a8f3ab:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY5Y2E4OTFiZmY3YWMxZjdjZWFhZTQwZWYwNTEwNjZiZTllZmU0N2I0ZTQyODFlODZjMzE5YmUyYzU1ZWJjZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhkYWJhOTUwYmViZWVjMTcxNzZjN2U5ZTIyZGUyMmMwOTE2MWM0ODQ1MzM5ZjVjY2EwMDE0ZGJkOTQ0ZDM3MzAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImMxODVlMzlhMzM2ZTdlOWUyYzE1OTZmNTgwOTk4OTNmZDY4ZDcyODJiYTM0NDVmMGI5OWI3ZmM3MjRkMTZiOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkzYzFjNDJkOTU3OGIyYzlhMTg5NDk2MDEwMmM3ZDg1ZDk1N2M2MzE5NmJlZGY3MTYwOGNkM2ExYjQ5Mzc3NDkifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L18-L23", + "version": "repo-lines-v1:sha256:5b17e6c14d1cd8cd3fd67cb6344c728a879f4023220d8e3575298805f9bd66cf:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjljYTg5MWJmZjdhYzFmN2NlYWFlNDBlZjA1MTA2NmJlOWVmZTQ3YjRlNDI4MWU4NmMzMTliZTJjNTVlYmNlNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjhmM2VjMDMyZTMzMGJhYzRhZjk2Yjk0ZjI3YTYwNmQxMmY3YzVkZDVmOTM4YWFkZTNlMjY4MjE3ZGI5MTdiNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmFiOTBiMjU4YjA0YjJhNmRlZWZlNjY1YzgyMTc5MGY2MTgyYTFlZGM3ZWIwMTcyNGViNjQxNGQ1MmY4NjNmZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDNjZGRlM2VhODc1YWYyNWFmMzJhYzZiNmRmMGNhYjBmYjVlY2ZmYWU1NWM0NzBmMmJiMzliNjM5MzQwNGIwOCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L80-L84", + "version": "repo-lines-v1:sha256:640d2d8a6d306bc43c3b91eedbf3457ecb1bce17c4f8980c9375aac75e7e86b9:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTQ4ODRjYmU0ZmU0M2E1OThhOWNiNGFhMGQ4Njk3YjNkNjZmYzA2ZmUyMmQ0YWZmODY2NzIzZGRmNWJkMmVhNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGI5NDFmZDg1NjNlNDQ5ZjQwZTlhMmM5NGY1OGFiZGM2MGU4NmY4NTQwMGNkMDI0MDFhNjczMmYzMTU4ZTAxNiJ9" + } + ] + }, + { + "id": "claim_cca760968025405f8b82ab087b8428c4", + "statement": "The documented local Sesam-client configuration test workflow runs pipes until queues drain with output pipes disabled or unable to write externally, compares expected endpoint output using expected/.json and expected/.test.json, and is invoked with sesam -vv test.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L21", + "version": "repo-lines-v1:sha256:d728920650b733582762cd2916dd09f6f0f0af185fdda8c3774bd133cdd1ef38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + }, + { + "id": "claim_2c1968b6a8dd466ebee94386dbd63c61", + "statement": "Sesam-client test configuration can select source, before-transform, after-transform, or sink stages and provide parameters for published endpoints, enabling focused transform-stage and publisher-parameter comparisons.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L108-L139", + "version": "repo-lines-v1:sha256:0fb86541b0234d1c51be8c1686785f19cfd1cc1bc63dbf5f3b5de8e1aaf4cdeb:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlYmUyOGI4NzIxYjVhZTMzMzM4MjZkYzBlZTQ3ZGU0OWQwY2VmZjdkYWQ1NjVmYzkzMTVjNDdjMTYyYTNjNTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUzNTBkYzY2Njg4M2Y2Yzc0YzRhY2U2Mzk1MjY0MWVkYTRmNWQ5ZDQ0MzI2Y2Y3YmU3ZDQzMDMxNTZkZTA2OTgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4ODA4Yjc3MjQyMmI5NTA4ZGQwYjU2ZWNjMzJjYjFhY2Q2ZGJiOGVjOGRjYzlmNDIzM2Q4ZTQ2Mjc2MDBlNDAifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L63-L91", + "version": "repo-lines-v1:sha256:dc2b0997a2854d04dafce14526c151389c4e5540d7db44e6652cccd0a80fcc3b:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhkMzdiNDcxZTcwOWUwNGU1ZmYwMGI3M2Y5MzNmNjY1ZWMyMjYyZWU1ZmM0MTc0NjBiMGUzYzU4YzZkZGVkNmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzMjExOTAwMjM3NTFhM2M5MWVlYTM2ZTUyN2UwMzRiZGRhZmNhMGY2NzFmMTE4NzY5NWViNDI3MmI4NTAxM2EiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhhMTNlZjY4NWFlNzc5Yzg4ZDJhZTkxNDFmNzlhMTNiYjQxY2JlMmExMDg5MWI4NWNmOGUwZjg0ZDFmNzVkMmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4YjkzNDE2ZGQzNWQ0Zjg0MGQxMjk4YzZhYTYyNzZiMDNmNjcxMWY0OThhN2UyYTViY2MyMDdlYmE1ZTNkZTAifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/configuration/synchronization-and-state.json b/openwiki/.claims/configuration/synchronization-and-state.json new file mode 100644 index 00000000000..bfeaee5c787 --- /dev/null +++ b/openwiki/.claims/configuration/synchronization-and-state.json @@ -0,0 +1,1016 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:af51b1106d5c6b280ff60cfe294b2aad65851cd9ee17beb8c9cdcd24892b3b5b", + "claims": [ + { + "id": "claim_82bb96335e0146d19ba431461ceb88e3", + "statement": "A pipe's pump reads entities from its source, sends them through the configured ordered transforms to the sink, handles failed writes, and logs execution activity.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L171-L177", + "version": "repo-lines-v1:sha256:ea11905a50d047e3c342903c9710cf6de1d22027c77ec1c1e85c0cd897c3acf2:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmFmN2Q1YTdmYWE1MDZiNjk3NjA1OGVmNWY4MzJlMDIzNThiZjE0NGQ5ZGJlMjUxMTJmN2QxYmJiZjkwNWM5YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGZkZWZlZDhlYzQ3ZWI3Mzc5OGI3MzYyOTdhYTFkMWJlN2Q0ZjQ5ZmI0MDYyZTMyNGU5ZDVkNTY1NDJiZDczYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L6-L13", + "version": "repo-lines-v1:sha256:cf8516d3db33abc55b15f6b9c2785b938503b337049e3de9536d4358c1428f4e:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2MxYTVkYzg4ODYzNWNlMzMwNjcyOTRiYTJjYzY2MzE1YWM3YzcwMzZlMjk2ODgxNGQ1ZGIzY2YwYWY2MzczMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmI5NDNlZGJjYTA1MzA5YjI3MTI2Mzc3NzBmZDA1ZGFjNGQ5MTAzZTY4NTM5ZjE3ODNlOGJlOTY2OGFmZjhlNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2ZjNTllMGY1M2NkMWYzMmUxZjFhYzQ4ZDg2ZTFkMzdmMmVjM2RmODBiY2MzOWExNmM2YmJjZTFjNzJjNGFjNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmQ2OThmMTI2NGY0YmVhMjc5M2M4NWQ4NDNhYzdiMTgyYmY4YWQyYjFiYTNmYmUyNGY4NDgyYTYzMWRmYzZjYiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L6-L11", + "version": "repo-lines-v1:sha256:e4438d6c78f02bb8733dc5f3386246a7f2cd3df0c70d20ba92f3218fe3360be2:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGExMTA0Mzc4ZmYzZjg2MzhlYTI1NzU2YmUyYjZiNmVjODM5ZjUyMWFjYjI0NzU2NDg3YzUyZDA3NzE3MmZlMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjYyNDVhYTRiZjg3ZTc0NWFiNzZlOTcyN2RhZGFkMTE4YTZmNGMyYzEyMjc3YjZiODU0YzAxMDNhNGI3ZmVmZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWEzYTVlODc3MDg1OGE4OWU1MjEzNzkyMDQwMzY5NzY2MjliNTM0ZTI2Y2E0MDI2ODYyNjBjMzdkOTI1MDdhNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWNjMGUxM2U5MzYzNmZjZmI5Njk0NTU1ZTY1OTllMjBjYjkwY2NmZTRkOWNiNmRjZjRmZDRhMTczNWIyMjVlYiJ9" + } + ] + }, + { + "id": "claim_bc24bd14aef640258f884789df547fe8", + "statement": "Continuation tokens are source-interpreted bookmarks carried in _updated; when tracking is enabled the pump stores the marker as pipe_offset, exposes it through the Service API, and permits manual update-last-seen changes.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L249-L256", + "version": "repo-lines-v1:sha256:3a1a8f087316117fdbee8324beeaddab4ca34e9bfee06ceac4cf709ca7c9c5ff:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2U0YjYzNzlmOGIzZmNlYmNkNThmMzU0NmI2ZTM3ZDgxMTBiOTdmOWVjNWM5N2NkNWQ2ZTc3OThkZGFiMzk3ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2UzNTBiNjQxOWQwZGQyMDk2ZDg4Y2QzZTU2MGM0NDQ4YzUwMzFlNjE2ZWFkYjk0MWEwMWQwMDg4ZjY2NTc0YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDM2NzJhNjA0ZmUxNWJkZDQ3NDc5MDIyZTg4NWUwYTkxYjU3Y2ZlMTc2YmQ3ODMwNGJjNzZhY2YxMmZkOTYzMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2QzMDdlZTY2OTJmMjgzMzFhNGQwNDVhZjY5ZTg5MzRiY2I4NDZhOTlmZWVhZjU4NDU2N2Y1OTk0YjI0NWJlNyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L55-L65", + "version": "repo-lines-v1:sha256:ddd49f1b49493ac056aaa46cfe6c75305dc324a333beddc5b1828f0b05ab33b7:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhNTBlM2M0MzU2MThhYWMzZmZiYjNhMjgwNjA4YjcxZTNhYzQ5MjJjZWU4MGQzMDY5NmM5MTNjNjE3OWJlMWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYwYzVmOGE0MjhhM2RjODY0ZDQ3ZmVlYzJjN2JkMzI4ODUwYzM4OGM0NDU0NGFmNzI3ODI5YTFkNDBmMWE0MDAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUyMTE1MzFmMTk2YWNjYWYwMmMxMGI3NmFjMDY4NjU0M2ZmNTcyY2UyMWMzMTU4NjVmYmMyYjg4N2FkZTdjYTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUwZGQ3ZTdmMjFkMGExMTdlMjYwY2Q4OTYwNTczM2FiZGY4NWEyYjU4YWNmYjE3YTZlYjQ0YWQ4ZjNhMzI2ZTUifQ" + } + ] + }, + { + "id": "claim_cf4fdcb2998d4568acf16c0f3c911ced", + "statement": "Stored dataset entity versions receive dataset-local incremental _updated counters, while a dataset source fixes supports_since, is_since_comparable, and is_chronological to true and returns only latest versions by default unless include_previous_versions is enabled.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L138-L157", + "version": "repo-lines-v1:sha256:f255527102f793601c0f0887c71b0e2da9dad429b1c9d3bec267d073c897c8ed:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBkNzVkZDRmYzkyZTRhOWI2MTE0Nzg3OTg2NmI0MGRkYmI0Y2FiNzc2OTM3NDc0YzViZjE4MjBhMTVkZWJiZmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM3MzM0M2FiNThjMTgzNzg2NWQ3YmI4M2I0ZWJhMmI2MWYxNmM3NzZlNmQ5YzNhNjE1NDk4YjdlYzMyZmM5MDQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUyMTE1MzFmMTk2YWNjYWYwMmMxMGI3NmFjMDY4NjU0M2ZmNTcyY2UyMWMzMTU4NjVmYmMyYjg4N2FkZTdjYTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRiNjcxNmZkODg4ZGM3MTkwODFkNThjNjdkZTI2ODBlYjRiOGUzMmU0MWZmM2ZkMGZiODI4NmRmZWY5MDcxZDAifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L95-L99", + "version": "repo-lines-v1:sha256:9c8b229fa025af093a71349e59bb5be45388c2d6a5977f63fa3ff5646956935e:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTdlMDU0OTNiMGZkN2M4NTVmMTViODc4M2ZkMGM4MGJlY2UyMjFmZmE5NjNmYWQ5NDljY2YxMGUyMmU3NmIxZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTA3NGI2MmMyYWUyYjRjYmEzMWE3MjFlNGE2ZjIxMmUxNWU3MmQyNTYxNzZkZGVhZDE1MDdiYmVkMjg4ZWYxNyJ9" + }, + { + "resource": "repo://hub/features/change-tracking.rst#L20-L20", + "version": "repo-lines-v1:sha256:cd1fa8ece98789f7886a6b0e8eead19546c39b3adf17d22c51509ba8afe6c651:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2QxZmE4ZWNlOTg3ODlmNzg4NmE2YjBlOGVlYWQxOTU0NmMzOWIzYWRmMTdkMjJjNTE1MDliYThhZmU2YzY1MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2QxZmE4ZWNlOTg3ODlmNzg4NmE2YjBlOGVlYWQxOTU0NmMzOWIzYWRmMTdkMjJjNTE1MDliYThhZmU2YzY1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE0ZTU4ZmNlZDUwNDViMzExZDMzNzYxMDI3NWYxYWVkNzViMGUyYTVkZmFkMzY2MmVkZWJlNTIwOTcxYjZiNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzVlMjUyZWFhMDgxZjQyN2QzM2ZhMWMxMWNhOTViYTk5OTkyMDcyZWJkNGY4YmJjMWJhY2E4NjJlNWI1NTc1YSJ9" + } + ] + }, + { + "id": "claim_249cf271682b4f998ae3c019df1df845", + "statement": "The pump chooses chronological continuation first when supports_since and is_chronological are true, otherwise maximum-token tracking when supports_since and is_since_comparable are true, otherwise no continuation tracking; chronological processing permits advancing progress during a run, whereas unordered maximum tracking determines the marker at the end and requires rereading an interrupted request.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L129-L146", + "version": "repo-lines-v1:sha256:2ff2a6153a5461e090745160271c6408541d8727d135cab5f028c8d6fba6f404:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4ODA4ZDdiMmY2MGU4NDE0MGQyMjJiYTNkYTFkYTZkM2ViYjYzZmM4NWE1NjQ4ZWJkNTUwZTkwNjMyNjJiYTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg2Njc1N2RhYTQ4ZDQwOGVmYTYwZWMzMTE1MTJhZDJjYTgzZDM2YjFmMjA4N2FlOWUwYWM5MGJjNGNhMTQyMWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE3NDZiZDY4MDllYjNjMWRmM2NjYzc3MTIzNzc3Y2VjZmM4ZTE5NmRmMzAxMjM5MTI1Y2RhZmZmMTAyODBjMTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhYjc2NjA4ZWFhMDM3NWI3NGUyMzdlNDMxZjRkYjExYzRjNjg0MmQyNTQwY2IyNDY3ZDJmY2NkOTM0MDBmYWMifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L187-L247", + "version": "repo-lines-v1:sha256:bbaf088c53ce8188843c2ff22b4b1c5e290e49fd15e0827671d7116744a8ee8c:eyJzZWxlY3RlZExpbmVDb3VudCI6NjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjczYmMzMzIxYTFmOTEzODRiZjM1Nzc4YjA2ZmM3YzBhOWU4NWQ2MzZhNTdlZmE4ZWI4YTMyMTE5ZWY2N2M0YWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhY2VkZDY3NmFlYmEwOGIzYTAyMTg2MDI3NzYwMDEyMGRjYzQ0MjI0YzRkYWIzN2I5ZGI5MTRjNGY3NjYyM2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAwM2ZiN2MyMGIxNWQ0NWE2YzYwZWRjZDZiZjZmNjQyYmM2MDY2OGU5MDBiNjZlMDM3MGI0YjE2YWE1NGYzYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJmMjBiYTMzYzlmMzAzOGNmZWM5NWZhZjcyNDE2MjFlYzcwZTg2MTY0YTA1YmI5ZDRlZTliMzdlYzdhZmRiMjEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L342-L342", + "version": "repo-lines-v1:sha256:215e8220a8f5665588d03cab51e8be9cb13e7148cb03b13f570080cbee5a0226:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjE1ZTgyMjBhOGY1NjY1NTg4ZDAzY2FiNTFlOGJlOWNiMTNlNzE0OGNiMDNiMTNmNTcwMDgwY2JlZTVhMDIyNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjE1ZTgyMjBhOGY1NjY1NTg4ZDAzY2FiNTFlOGJlOWNiMTNlNzE0OGNiMDNiMTNmNTcwMDgwY2JlZTVhMDIyNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGNiYTJmOTgyOGM4MGEyYzM4ZTI0OTY2ODk4NGNkY2I2MzJkNzYzZDY4ZmFkZGY4ZmU1ZThlYzI5YmQzNGVlZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTIzNjQzODFhMzM0ODY4ZWYyZDc4Mjk2NmYxMDU2YmM2YTExMDdlNTQwN2YwNzg0NzZhNWViMWRlMjZlNjZlZSJ9" + } + ] + }, + { + "id": "claim_448553f246b443c9a75a920c46d0d8df", + "statement": "Continuation flags must describe actual source properties: is_since_comparable promises lexical/bytewise token ordering and is_chronological promises increasing stream order; falsely enabling flags can prevent correct change tracking.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L81-L86", + "version": "repo-lines-v1:sha256:abe6760fa54e2b1313d15ae2028d5cb8e14396e07c8a7fb4f1ad0e10f6190cc9:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDMzNTM5YzUwNzUzMjhhZWJkNzY5YWM1ODQxYjRiNGE4NjBlM2RiYzFjYjA4YzQ4MWVhZTVkYzQ3OTM1ZWFiZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWZmOTQwZTNlYmRlNzYwOTI0MmE0MjIxYzBhMDM5OTA2ZGM0MzZjYjJlYjU5MWE5MzAxYWU0ZjNmNTRlMjdjNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2ExNzAwYmYwM2JmZDc4MjRkZTNlYTg4MmNhYTI2YWQyMzkxODA3ZTFhYmFiZGM5NmI0ZjRlM2QzODE3MzdmOSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L96-L146", + "version": "repo-lines-v1:sha256:57c9034ace549522eb4c5bf1987eee83a4d9963c432128f95de8f33c7f133b1b:eyJzZWxlY3RlZExpbmVDb3VudCI6NTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmYjk1YTBiZGRmMzZiNWM2YzEyOWUzZDhiZTlhOWEzOWVhN2M5NDdlNGEwNWNlYzU2YTE5NjRhNTBhNDI4M2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg2Njc1N2RhYTQ4ZDQwOGVmYTYwZWMzMTE1MTJhZDJjYTgzZDM2YjFmMjA4N2FlOWUwYWM5MGJjNGNhMTQyMWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE1ZDI4MzllY2I4OTcxNjU1NjYxMTM0MGQ2MmQwMWNmNzFlMGJhNjIzZjU4ZGE5ZjA2MGNmMmZmMzYxMDYyN2QiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhYjc2NjA4ZWFhMDM3NWI3NGUyMzdlNDMxZjRkYjExYzRjNjg0MmQyNTQwY2IyNDY3ZDJmY2NkOTM0MDBmYWMifQ" + } + ] + }, + { + "id": "claim_dfcd5a00d3c945f0af18855bc449ccd9", + "statement": "Pipe-level checkpoint_interval counts processed batches between saved offsets, defaults to 10000/batch_size with an exception of 1 when batch_size is 1, and a changed offset is always saved at the end of the sync; less frequent checkpoints leave more progress to redo after interruption.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L118-L137", + "version": "repo-lines-v1:sha256:a5d875bab301cbb0364b03b84700c9b0469a61773caf7fbef8d07b534dc5a5df:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU5ZmZhNTcxZGJhYzVlZGM4ZDVlMjFjNzIyMzQ2YWU3ZTFiNTk4OGFlNGM3NWZiMzhjNmI5ZjdkYzIwNWJmNGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdhOTU1NTQ0YzI5NWUwZTYyYzdlZjUzYTAyNmM4YmNlMGI4NTJlMGU1YTk3ZjJmZjVmM2VjZTFkYzhiZTUzY2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRlOGUzMDllYWZlMzY1MzQ1NDI0YTM3ZmUxODI3NjZkM2MzNjcwMmZmNmJkZjQ5MTQ5YzkwNmY4YjM1Y2I0M2IifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L129-L140", + "version": "repo-lines-v1:sha256:138a08661c50ab8d5b5727425882e15eed247731802b9e7ea771aeb9a2403caa:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4ODA4ZDdiMmY2MGU4NDE0MGQyMjJiYTNkYTFkYTZkM2ViYjYzZmM4NWE1NjQ4ZWJkNTUwZTkwNjMyNjJiYTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzYzAwNGQ5NjgxM2E0OTA2YWZiMmQ5ZjdjNTM0YWU4ZmIxOGU3OWY3MmIzOWJkODZmMjExZmQ4ZDFkY2U2ODciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE3NDZiZDY4MDllYjNjMWRmM2NjYzc3MTIzNzc3Y2VjZmM4ZTE5NmRmMzAxMjM5MTI1Y2RhZmZmMTAyODBjMTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ5ZjAyZTZhMDFhNDA0Y2Y2Y2Q1MzM4YzhhMDlmMGM0ODg2NTU4NjYyMGZiNmM2NGI3YzFhYWYyYzI3NTU1MDAifQ" + } + ] + }, + { + "id": "claim_c9bca6b8155d45e8b1b3e75636074e9c", + "statement": "initial_since_value on a since-capable source is used when the pipe has no offset or has been reset and can deliberately prevent fetching all historical source data.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L180-L184", + "version": "repo-lines-v1:sha256:f4039160812b74e8936e24a05a5c20e578430a89ac6dafa7b7ead8a9d0aa8340:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGZjMWRlYzU0YzQ0N2Q2Nzc5NTdiMGU3ZDVkYjcyZjY2ZDI3YWE4NjlhYzQ4OWU3ZDI1OTA1YjcyZTQ4YjQ3OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTY4ODQxNDA5MjQ2MDAwZGRiYTBhMWYxOTMwNDZkMTQzNWFiODI5Yzk5MWYyN2Y1YmU2ZjQ2YmQ4ZTQyNGQyMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGIxYTIwYmQ1YzE5MGIyNGVmMDM4YTEwZTM3MDBhZjJjNGFhODkxM2ZhMGM4ZTk5YjEwODU4MWRhYzhhMWM1ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmY1MDZlNWY5NjYyNzNkMDNmZDNmMzcyM2M5ZDY2ZWQ5MjNlMDgzZTg2OWJiMDMzZTJmYmZmY2NlNjY3YzM2YyJ9" + } + ] + }, + { + "id": "claim_b63c66e1acde4826a8ccbdb08db331ad", + "statement": "Custom source entities can supply _updated for continuation, and JSON Pull defines since as the offset after which to stream entities, with an omitted since meaning start from the beginning.", + "evidence": [ + { + "resource": "repo://hub/custom-data-source.rst#L13-L22", + "version": "repo-lines-v1:sha256:83a4269b44b6b484559fcf109c70147cb65fcf3ad13a40031839da17c6f58296:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJlNWNkYjUwN2M1YWNiN2U2YWZiMGZkZTdkOGE1YmRlM2ZkZTllMzc4ZWRmMDljZGQ0NzFlYjliZWNjNjgzMjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA3NDRlYTkyNmJmODRiMTk2NzE3NDA3MmMxM2E3ZjUyYWM2ZGE3OTQzOGQwZGEwN2UxNzdiODQ3Mjk4ZTg4ZTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNkNmZhNzhiNGM4NzBiYTBiN2NkNTllOTczYWViZTRlY2VhYjlkNzFlYzViYzU1NTVlMWFiMzAzMWQ4YWI4ODEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdjMDIxMDIxMTZkYTAxZDVhYTk2ZmJjYzZmYTQ0ZDMzZmNlZjZiYzg5NmJhODVjMDMyZDVhOWU2ZGVkYWI0MzQifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L263-L305", + "version": "repo-lines-v1:sha256:427078f0314628444040f8ca6b271d9ce65a1fa3baaefcf16cbfafe4af6213f4:eyJzZWxlY3RlZExpbmVDb3VudCI6NDMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg3MWNkOWYwNGM2ZjRiOThmNWVhZjdjZDNmMjc4MTZmMmFlZmQ5YjAwZjQ1OGI3Mjg2M2M1ZmQ0OTRiYmY2NjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUxMmM5OWUzMDZiMTQ5ZDJmZDBlYmZmMmFmNDI1OGYzYjIzZTFkOTEzZTA1ZjQ3NjhjN2E5ZjlmZTgyNWY1NjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBkYThmYTBjNTIzMzhkNWM2ZjRkZTM1YzhhM2IxNGQ3YjNkZWUzNmJhODE1ZTRkNjlkYTBjMjgwZmYwMGJiYjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjcifQ" + }, + { + "resource": "repo://hub/json-pull.rst#L29-L41", + "version": "repo-lines-v1:sha256:9d43239c0f8b1191647f430a3b278b256b31c59c009247e41b0d3d4937c5f319:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1NjBjMTg2YjliNTc5M2JiYmE0NWE3YWEzNmUxNDkxZWQ3ZmYzOWQ1Y2VhMGQzMWQ0OWQ4N2ZlMzk4NmZkZTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM3NDM4MTQyNjg3MWI2MGY2ZjNkZWY0YzI4MDQ3NDBhNmZkMjU4ZTFlM2NlZDg2NjIzYmRjZDg5YjllMTdiZTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJlODIzNGEyNGY3ODUzMGMxNjhlNGJlZDBlNzE4NzIxMzlkYjk3NDU2YjUwZDgxZGMxYzk5OTcyNzNkN2ZhNmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNhMDU4MTU5MGNiYTNkMTY2ZWE1ZDFhZTVmNDhlYzFiMmNmNjkyZjdmNThlYTg5NzFhMzMzMjYzYzk5ZDg5NmYifQ" + } + ] + }, + { + "id": "claim_aef379bf4fbc403ba05460b640aa9022", + "statement": "Pump schedule_interval specifies seconds between runs and is mutually exclusive with cron_expression, with cron taking precedence if both are present; without either, dataset-to-dataset pipes default to 30 seconds plus or minus 1.5 seconds and other pipes to 900 seconds plus or minus 45 seconds, and explicit cron is recommended for external-system pipes.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L67-L73", + "version": "repo-lines-v1:sha256:0e7b481efefbb10eea5e10c2b7a9513189ecd6ca3e0549c70aea907dca12a773:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzE2ZjM3MWI2YzBhMTcxMzUyMmQxNzcyYzA1ZGNhNDk2YWY2NDExNmE4MzkxZTdjOGZiNTE5OWJlOTk2NzRmZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzhmMDgxMWNkOGQ1YjhjODRlYWZiNGU0OTg0MmRkNjJmZGE4MDBlNzBkZDIyNmMwZmEwMTY1ODExZjFlM2JlZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTNlYmQ3NjZhZGU2NWViMGQzZDc3ZjY2Y2YwNDY4NmJmYWVlZmViMDg4ZjdiYWI1NGE1NTk3NGQzOGU1N2MxNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTQzODQwYjYxYzA3NmRkMTg0MjlhM2E2OTFhNGU4YWZlZjVlNDg4ZDQ4ZTliMWRkMGJlYTU3MDIxM2U4NGIxNCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L96-L109", + "version": "repo-lines-v1:sha256:3b5c4834daa171a5e630b99de40694c5159c68bd0b639c36c67b9c2ea878c772:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU1MzI0MDRkZTU4YzlmNGU4YTcyZjZkZTBhNjc4MDZjN2NhMmQ0NTVhY2Q5YTA1OWQzNGMyMDM4MTMzZTZmZjQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAyYmM3MzRmYTJhNjVmYjRlMWVkYzUwNDc0OWY3M2ZjOGE5NjEwNWJmYTg2M2NmMzNkNmJjNTAwOGQwMTY4NjQifQ" + } + ] + }, + { + "id": "claim_3391b0b322b040eb88746d30f21cf4a1", + "statement": "Sesam pump cron expressions are evaluated in UTC and consist of minutes, hours, day of month, month, day of week and an optional year; the explicit syntax restriction says W and # are unsupported despite a # example in the table.", + "evidence": [ + { + "resource": "repo://hub/cron-expressions.rst#L115-L116", + "version": "repo-lines-v1:sha256:314867ad9a61d78665af484aabcfc9da4d121a40e1f69ccb54b9a4a5b68a29b0:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGY1NGFhYmNmNWZlZDU4YmU0OGYwYTMxN2M2N2Y4ZDc3MDEzOWVlOGI1ZDFlZTNkZjNmNDdkMWE5OTg5NDI2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjNkYzhlZDg4ZTI4ZDFmMTI1MGE4MTRmZDViNDFlYjI4NmY4YzFlZDkxOWYyOWJhMjBkZDhkYjQ2YjkyZDg0ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjUzNGYwMmE4ZDBkNWY0Yzk2YjAwNjIwYWI0ZTI2YmNkMmEyZDM2ZjkyYjA1NTQ3NzI3ZjFiYjlhYTQ2NzRmZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzQ2YWQ2YzE2YTUwMjkzNWEwZmFmZmFiOGM4YWRiMDYyYjBlNGZkZGQxNTJmODZlMWFkYWE4NTgxNGMyOTU1YiJ9" + }, + { + "resource": "repo://hub/cron-expressions.rst#L6-L60", + "version": "repo-lines-v1:sha256:80c8d378b34eb71625475c6d892dfc39932642fb9e8c7bdc768ae111474d2ae6:eyJzZWxlY3RlZExpbmVDb3VudCI6NTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhYzIwYjI1ZGNmM2QyNzNjYzEzYzkwNGYzYjQ5MTcwNGY3YjliNWJmNmY1Y2FiOTAwYWRiZTA4YTg2ZDVjYTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU0OThkZDVlYzY0Y2QyMWMyZDNhYzI5YWZkMDY2NDY0MmU5Yjg4MWI5ZGRjN2Q3NmIzNzA1OWI1OGU0NmRhYjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBlNTgwOGU3MTg4M2I1ZGVlZjlkY2UzMTRiZmVlZDBlMWZjMTMyNzUwYmEyYTRmODljNjY5MTgzNTU3Yzk1NGYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZlYzU0Y2Q0MGM0YzNlODcyYjE5MjU5ZTI0ZWQ5YWI5YTZjNTI4MTY5OGU4OTNiNjQwMTczZGI1NjkyNGZlMzMifQ" + } + ] + }, + { + "id": "claim_7b12d76bda164c0987ac4e9fdd57d933", + "statement": "For cron schedules and scheduled intervals longer than one hour, the planned run start time is persisted so a missed run is attempted as soon as the service can run it.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L26-L30", + "version": "repo-lines-v1:sha256:d60f62143efb03960f0a1830b736315e3b76ad19ba450d0b92db99cf7873474d:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDMyMTk4ZWU3NWUwYjk3MWFhNGYzMjZkM2M2NDZkNzY5NDI4ZjUzYmNhNDI2ZmNmNzJiY2Q3OTYxNzQ1NTIzNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTZiNTMxZTAyYzVmMTc0ZTk1MzcwNjhiYjBiOGU2MTc0MWM2NTc4NWYyYWNmOTQxODYzYmJhZDAyZDJhOTk4NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTE5NTBlZGE4Y2MwZWYyMGU0MWJlMGM4ZDAzYTg2YmYzODc5NzJmYWQxMzllMzhlZjhiNzBlODQzMGFlMTcyYyJ9" + } + ] + }, + { + "id": "claim_360216218fe9430cb8e67116e981b8a5", + "statement": "run_at_startup and run_at_startup_if_not_populated default to false and add startup execution to the normal schedule, with the latter conditional on the dataset not being populated.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L164-L176", + "version": "repo-lines-v1:sha256:7535bcb5ebe999c808d227aa23fa27e95be2cba7d1e6ac11ca7226524f9a027b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcyMWE1YmFjZWVjZWFiMTlhZmZmZjczNWE0MTc0NDFhNzVkY2I2ZTk4NzkyNjUxZTQ2NjI0NDAyZWIxYTE2MGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwMTU2ODMxN2JjZTUzOGJiNDEzZTlkM2RlMzM3MDFjMmNjMGE2M2JjNWYzYWZlMjllMjFjOTMyZmM3MGE5NGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM5ODA2NWNiMjNiMjc2OTU2MWQxMDczMTcwOWRlNGMxOTY5NWZmN2U3YWJmMjBkYzU0ZDA5NWUxMDdkMWIwNDUifQ" + } + ] + }, + { + "id": "claim_e0bac8f9eb8e40d4919339b974dbf7a8", + "statement": "Pump mode defaults to scheduled; manual mode permits only manual Service API operation, and off mode prevents starting the pump at all.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L286-L298", + "version": "repo-lines-v1:sha256:dd67216ce0208eafdf40ad3a408b5247f2c3cf7306d9bcfd0077270464fec3cb:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY1MTg2NjI5OWU3MTU4MTQ3YTYwYTgzMmYwODk1NGI2YmNhZDgzMTUxNDJkZGYxZDY3MzQwMjFkMGIxYTE4ZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhYTQ4MzI1OGFhMWFhZWEwZTkxNzNhMzcxOTczYzY5NGQ4ODg0NzQ2Y2U5YWU0ZWJlOTAwZTZmZmQ0ZDIyYzMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE1NGRlMmJjYjIyYjMyMzcyMmJjYzJmMzNlZDM2Y2EyOWE5ZWMxZjI5YWYzMDU5ZjEyNjA5NTA3ZTcyNGIyMGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUyNzJhMjRiZjVhZDYzOWYyNjNiOWJlYjMxNDE4MzUzNzE4MmY1NjZjNjg3MzQ4NDI3MzFiY2MyODg0NDU2YjIifQ" + } + ] + }, + { + "id": "claim_911523a677d84dcb8b9a6263adc919cd", + "statement": "Runtime disable prevents automatic pump starts but allows manual start and does not stop an already-running pipe; the stop API operation stops both normal and rescan runs.", + "evidence": [ + { + "resource": "repo://hub/management-studio.rst#L204-L217", + "version": "repo-lines-v1:sha256:e4b55d8a0c0d33d383ae2be8ee280af52975a12fd6632e729f07635f2d900a6d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk2YTJmY2YwYWY3MmZhNDVkNjg0MDEyZDhhZWM2YmM3MDlmMzMyNmE4ZDdkZWRmNjNjMDYzYzI3OTlmYzZjZTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUwMmVjOTRlMTI0OTdlY2UwNjkzYjlhMmY4ZmYzODRjNjAwMjgzODY4YmZmMjg5OGQyNjlhMDk2ZWZjYTljNmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY3ZTIxYjYxNDI1OTBmMjI5YTQ4NzcyMmZmNzQxYzZhMjY5NGI3NzA4MWVlNmQ0M2M0MGNlM2E0N2VjZTZiMDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBiOTUxMjg4NDFiMDIwNTJlMGZmNmMzM2Y2MjNjNDJlOTE0MTI2NjQ1ZWZhMjU3MDAyNTFiYTMyNjYxOWFlNDYifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L557-L573", + "version": "repo-lines-v1:sha256:4fe352862179d4ac81f4569ac3cf51fd1d700fe19100bad0e05ab40524c659a1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZmZDFjZDhlNGUzZTQwNTdiODcwYjIwZjZhZGUyYTIzYTRiYzJhOTE0NTJkNTA5N2Q4MmI1NDNmNjU0ODk2ZGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJlOWMwMjZiOTM1Yzg4ZDRlZTdjNTVkOGUxZGIzYTM1N2JmNDM1YTM0OWM5ZGFlYWQ4ZmU3OGVjMWZjMjcwYWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjliNjhiYWZiOTJhMGM5NWZkYWIxYWFhZmJkZWQyZTNjOTQ2NGNiNmIyZDM5ODc1YTM3MmJmMmEwOTkyY2RmMzciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAwNmJjNTA2NGFmNTQzZjcxN2Q2Y2E4M2RkMzQ5NDU3NjBhNGFhMTQ0N2FjZjg1MzE5YmZkMzNmZTIwMmViZDEifQ" + } + ] + }, + { + "id": "claim_11ed0e29ef00481d829ceabf21016b0f", + "statement": "global_defaults.use_signalling_internally defaults to true for internal dataset-to-dataset flows; changes in any input dataset schedule immediate execution without interrupting a running pipe, and source supports_signalling can override it including for non-internal pipes.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L88-L112", + "version": "repo-lines-v1:sha256:eee08333f58557e61587f03634d2f37e70c585b602cc27726f6fb3ab171ae3c6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ3ZTFlMWFkZTNhMzc5NDNlNTRiNzkzYTZjZTgyYzA0NzhlNDg2YTUzZTg3OWEwMThmOTBlNDI3NTk2MDY4NzQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM0MGIzNjJkODFjZDA4YzE2M2YzNTM3NDU0ODYyN2NhYzRlZmFkZDgwNzNkMmQwOGE3N2RkYTY3NzkzYjVhYTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM2MmMyYzU4MmM4OTkxNjAxMjc1OTI2OTJiMzc1YTdkZTA3YTU2ZGIyYTA1NWVmMzRmNDQxN2IxYTJhMzFhMGMifQ" + }, + { + "resource": "repo://hub/features/scheduling-and-signalling.rst#L8-L10", + "version": "repo-lines-v1:sha256:97e4d567ede6a31c7e5994c8cba6d6b0422f75d411b76c8f6e74d6f8fc020297:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjdjNmU4YzI4Mzc0ZTIyNDI0NmU3NDY0YjNiZjI3YTgyMjdkYTM5Y2E5YmMzODA0Y2VmYTI3NTFmYzg0ODJjNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTJmNDhkMTZmZmYzZjlhYzQyMTRjOGFhMzFkNDQ3YzQ2NDljMzExNTIwN2NkOWM4Zjg1ZGRiY2Y2ZjJiN2I0MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2I4YTEyZmZlYzc4NmMzMDExMTAwOWU3Nzk3NTY1ZWFiMjQxYWJmZmNmYTEyYjhjMzIwNzIxYzM0OTA3NTdkZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_ba641ef314b34c7da1e61f7bb6f19ac5", + "statement": "The dataset-source documentation says an interval below one hour or a cron expression disables implicit signalling unless explicitly enabled on the source; explicit supports_signalling true enables signalling regardless of the pump schedule.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L103-L110", + "version": "repo-lines-v1:sha256:a84755fe43fe3315773c43701750d023504ef6b4411ce7799e094c1e03cf0e1d:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjVlOGRkYWRmMmFjNTM1YjU3YmE1OTIxMzgyN2I1Nzc0MDdkNTUwYzA1YmIzMDIwODVhNWIwM2JhNDg0MzhiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGFlZjUxNmM1ZDM3Y2JkZGFkZmU2MjM5ZTc3ODM5YzRmNWM0ZWJhYjY3ZThmMGY2NjdiNTI1MjlhOGRiYTQzMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTgzZGE5MTk5Y2UzMDI4ZGNmZGUzYmEwMDA2NDI1MWFhYjU5ZDk3ZTczOGFmZWUzNTVkZGIzNTg1ZTA1ZWE4YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzY2Nzc2Yzk2NmVmOTE2MjIwOTJmM2Q1Y2E4NGE5NTQxMDczNmVkZGI5MTY2YzljMWE1OWMxM2ZlOWRlNjhiZiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L108-L121", + "version": "repo-lines-v1:sha256:c74ffe7071bff74efd194661ceae6134488ea5fa81bca959e8234a33d3204da4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2NjQ4MWE5OTMwMWY5NWMxYzIyZjczZDgxYTUwMTNkZjA5NDIyNWY3YTM4NjUxOTljYjNiZjdhNzE0YWI4N2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM2OGQ1YmQ5OGRmYTFiZTdlNGY0MTQxN2MxZTQxYTZmNTU2ZDM4M2NhN2QzY2YyNmM0NzU2ZmM2MGRkMmQzYzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNkZTFiZDY1MWNjODFkNGY0YWZjNmNkNDVlNjEzNmU4NmIxOGUzYmJmOWYwYzZiNDg0ZDc4N2ExN2U3ZDEyM2UifQ" + } + ] + }, + { + "id": "claim_52445610b6ee4370aa200577f7f141ef", + "statement": "Signals are best-effort, not persisted, and not guaranteed to arrive, so signalling-based flows should retain a scheduled backup.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L103-L108", + "version": "repo-lines-v1:sha256:e7f720281043d718fde91229ffd5110631c5cc841e8a8c3c6f5920bd8408daf8:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjVlOGRkYWRmMmFjNTM1YjU3YmE1OTIxMzgyN2I1Nzc0MDdkNTUwYzA1YmIzMDIwODVhNWIwM2JhNDg0MzhiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTRkNmQwZjdmNjRjYzk4ZGI3MzYxNGNiZDI0NDFkOTg1M2IzM2I2ZWYxOWZmNGMxNmMyNzNhMzc3N2QwYWQ1YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTgzZGE5MTk5Y2UzMDI4ZGNmZGUzYmEwMDA2NDI1MWFhYjU5ZDk3ZTczOGFmZWUzNTVkZGIzNTg1ZTA1ZWE4YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTJjNjdkYzY5ZmVkYzQ2NTlmOTMyODk5ZTViNzJhYmQyYjAxZWE4MzhhZmEwNzRmMzU3NTcyZTYzOWY0ZDZjZiJ9" + } + ] + }, + { + "id": "claim_bf6cc89745be4a2fb69d1853cce02f63", + "statement": "An incremental run begins with a nonempty stored last-seen marker and processes source entities after it; an explicit reset/full run reprocesses source entities and performs deletion tracking on completion.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L391-L417", + "version": "repo-lines-v1:sha256:d2aa64913824883110242c4c74d1f09bc81b11c0b2119f452bc367ff8d9bfc14:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE5M2QzZTM4MGFlODAzMjVmNGNlZjI0ZDFkNzQzY2IxZWNhOTJkZjU0YjJhNmEwZDFlMTZjNWZhYTM1ZTk5Y2YiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE1OTQwODQyYzZjZTllNDBmNjIzNGM1OGJiYWQ2ODU5NTllMzQwMzBlN2VjYzRjMTIyZTA0YTBkMTM2YTQxN2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjlkOWQyYTY4ZTIzNGMyZWRkYTliNjAyZmZhOWIxYjk4MTJlMjU0NDRkNTQzNmYxOWMxZWY3Y2RmMDRiNDNhZWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjljMzYyNGNhNDllMjA2MDBlNjFhNWI1OTExM2I2MzgwMTUwNjMwMDEwN2MxM2YwZjVmZTJlZmE4YTFlZGQwYmMifQ" + } + ] + }, + { + "id": "claim_9b84712349c34bec855cfa64fc566c36", + "statement": "rescan_run_count selects complete rescans every N runs and rescan_cron_expression schedules full rescans by time; these pump settings are mutually exclusive.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L112-L129", + "version": "repo-lines-v1:sha256:fb7b3a7aaf9b6e20507803b9fcddf1955bfe4eb049822af0ff1eb67eefe5ec95:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA3MTE5NjdhNGEyNTU3YjlmNTI1NjQwMTA1MGJiN2I1YTI5ZDk2MzMzMWZlNDM0OTZlNzY3MmRkODc3NDYwYzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgyNGQ1MzQ5ZTE3MTllZDYwYjZiYWI0ODQ5NTBjMzI5MTVlNjJjNTBlNDQ3YzYyNTAwNmU2OTkxZTA4Y2MxMjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_85b7a5e6636540e4b7a887d6f0137096", + "statement": "partial_rescan_run_count requires partial_rescan_delta and is documented as mutually exclusive with rescan_cron_expression; full rescans take precedence, and the delta subtracts an integer offset amount or seconds from a timestamp since value.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L133-L160", + "version": "repo-lines-v1:sha256:9b730695bf49aff53b560c6860a94fe8f472f6844e183618c5ff97bb5d9bc26c:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI3NGJmYTMwZGRlZjFlYWIwZWE1ZTg1OTM3OTI0ZjZiYzRmOWJlNDY5NTQ0MDQwNjI0ZDM2NDZlYjRmNzYxMmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRiM2EwYzFhOTU0ZGRkNjAyYTIyNWM4Nzg4M2IzZWMwYTllODEyN2VkNmNkNTBhODNkZGJmNTNjOGY1ZjEyMzciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_cbd65b68cfbf445e81dd67b743a0f567", + "statement": "Background rescans process all source entities and deletion-track at completion while permitting incremental work; they are disabled by default, require enable_background_rescan at pipe or global-default level, and are supported only by dataset sinks because these protect newer incremental output.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L225-L230", + "version": "repo-lines-v1:sha256:cefff05ce087f29e16f46c74a4161f0bd0fd691ee9e59206140292dd34a2fb40:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDhjZThmMTUzOWQ4NmQ4YzBhNGQyNDUyNTg1MTA0NzU3YWIxMjA4ODc5NTg4ZjA2ODAwOGUwOTE1NTg0OWYxZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGQ0N2M5YzQxNmViOTVhZmMyMDczMDNkNDFmODZmZDYzNGFkOWIyYjg3OTg0MzYwMGJmNTY4ZTIwZjIwMzU0YiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L147-L152", + "version": "repo-lines-v1:sha256:4dc671409200ddcc91b69dad92cc507af993d0813c60da64cc7886df2f231f49:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmI5MWQ3YTJiMmY3YTg0Y2U5MjA1ZThjN2EzNzM4OGFmNjZkYmY4YmY2MmEzMGY5ZmRlNTliNGY0YWExMTZmNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDZhNTYzNmYyMzQyZDdkYTU0NDU2M2QyODM5ZmM1MmY5MTA3YTExODJhZTE2NzQwYWEyNzJiMWM2MjQ5MmZiNCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L398-L412", + "version": "repo-lines-v1:sha256:5ad1796dc31857c6929ec23167e04188db17dfc67eccc50a3a2ebe6154ae9692:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZmYzg5MTc1YTA0NzZlYjMxMTY5NjJjYTdjNTljZDJhZDllMDE4ZDdlMzMzYWY0ZGNhNjc5OTU5NDM0NjQ3ZmEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZlNGFiYWViZWZkMWEyNWI4ZmQwNjg2ZTYwODY0ZDA0ZWQ2NzNjNzJjOWRlYTM1Y2NmZDZhMGJjNDFhZjZhZWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImEwYjE5YjIyZDc1MzBmOTNlY2RmZTMzZWY3NzAyODg1YWYzOGZhYTE2ZGVmYzg1ODc0ZjZjNzRiMTNlYmM3NjIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVlMThmZThkZDMzOWIyN2I0ZjFhMGZlYTIxNjM1MTU1NjNhZmRjYjNjZGE4ZDYzZTA4ODJmOGVkMWYyNGIyNTAifQ" + } + ] + }, + { + "id": "claim_c786b5bb394f42478011f5d87de697a4", + "statement": "When concurrent incremental output is known correct, a rescan stops at the first overlapping incremental run's last-seen boundary and neither overwrites nor deletes its output; without overlapping incremental work the rescan can advance beyond the stored offset, after which incremental starts are prohibited, and ordering and emitted historical versions can differ from a reset.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L429-L451", + "version": "repo-lines-v1:sha256:c39bd7ce57a57ffcff022750e51285a7387ab2c5183e0055993c8d10b4b33d94:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyNjI4OTk2YWZkZGNkMjRlYTk3ZTMzMjI5YjBlMjI3ZDdlOTgzOGViNTdlOGZhOTk1MmU5NWY2YjdlNzU5ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNlYmY2ZWUzY2UyNGIzMWQ5Zjk0YWRhOGM4NmY0NzUwZjA5ZDRmYjViMDQ5YjAxY2NlN2ZkYjkwZThhODY4ZWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJjZjI4YTg3ZTZhNGZlYjBkMDVkOTk0NDM4MmQxODRhOWUxMzI3ZjU1YmI2NTlhNGNkM2RmYzUwZTZlYmM3NGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2NjE2YWIxZTdiOTJmMTBjM2ZhYmEyYzU3NWZjOThlZjU1YjBiYjMzNmUzOThlNWVmZDMzYmQzNTVmZjJiODkifQ" + } + ] + }, + { + "id": "claim_42ef14afe4cb49eda81a54a534f83af0", + "statement": "After changes such as merge-source reconfiguration, concurrent incremental output may use the old merge source and be temporarily incorrect; it does not overwrite rescan output or enter the sink seen tracker, and the finishing rescan stops active incremental work, catches up new entities, and deletes erroneous incremental output.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L453-L468", + "version": "repo-lines-v1:sha256:a37349c49ce9c31b8957c50c095bc9369ad04888fecf4fa26c01125c16b17f8c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwY2Y0NWZjNjUxMDQ2Njc1MWU0YjNjZGQ4OWFlZGZkMmE2M2IwMDBiYjM2ZjRiOWQ2MGNkOWUxMTJlOGVmZWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkMDBlMDEyYjdkY2Q0ZDJmZDJkYzlkZWNmZmU1NTM1MDNkZDNjNzI0M2ZmY2JiZGVlNTg2YTA4MGM3NWFlM2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRhM2U5YzhhZGI3MzQ2YTU0MTZkYWY1Yzc0M2NiZDNjMDdiNDkzM2Q3Y2Q5YjQ3ZjQ3MzIzMGJkNGU3NDJmY2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUyYjZjYjk5ZjkwYjViYTNjNWNmOTZhYjljOTBhNWRhNzVkNWY3ZjA4OWRkY2IwZDcxY2ZlY2JiNjBjMDE4NWYifQ" + } + ] + }, + { + "id": "claim_ec835dd70319473798be7981065c9129", + "statement": "Only one incremental run can be active at once, but successive runs can overlap an unfinished rescan and a rescan can begin during incremental work; in this concurrent-rescan context incremental runs perform dependency tracking but skip retries because the rescan reprocesses failures.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L470-L474", + "version": "repo-lines-v1:sha256:a86740893fd652d2db4013de9413b3657652be2c24f707cc0c73f95b2002fb66:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWQ1ODI0MTk5YTQxZGEwMWFmNjdlMWMwMGE3NjZjNDVkOWI3OTc5NGQzZjI2ZTg3NWYyZjZjZGMwOWI3NjZkNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGE1YzJhMDY1ODc5OWFkZmM2OGU5M2FlYzU3MjEyNzFlMTIyMTdlNTgyZDA2OTc5M2Q0ZDRhNTI2MGNhNmMxMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjY3ZjJjNmVjNjVkMDUxYzIwMmExMTgzMjFiNDFjYzRmN2QwNTAzNGFiMWYzZmI3M2ExZDk5ZmZhZGFjYzdlZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_b3acace547114787ac1e3a650d13473c", + "statement": "start-rescan starts a rescan unless one is already running; interrupted rescans normally resume, while reset-rescan forces subsequent rescans to restart at the beginning.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L553-L555", + "version": "repo-lines-v1:sha256:a171343c8293c02f752fbe2e4157b8b8c0942ca90f00d903e354a1cd2deb0edb:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjE2NDAyMjY0YjlmZDhkZjJiODUyMzZmZTYxZTI3YTg3MGZhNTIwMmFlMzVhNzViMzFiMTgxOGZmMzRhMmMwNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzUyZDFmMzkzNjJlYjJkZTZiMmNmMzhiYzk0MjA2NWViZjk3N2I1NjYwY2RlZTU2ZDJjM2Q3MGUxOGVmNGVjMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2VjNWNlNjU1ZDkwOWZmNTE4OWY0NTg3YjllNjE2OWNhZDQzN2ZiMDU4MjY3Mjk3NTcwNDYzNWE4NTkyYmM1YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzdlM2FiZjVkZWQ3MGFkYzUzNGRkYTUxM2M0NjgyYjhiZjNmZmExMTY1M2Q0ZWMwZjZmYWZiNzI1ZDdjM2Q2YiJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L607-L611", + "version": "repo-lines-v1:sha256:ff499046dfe5b11221599b3d5d151d7a446f9cce10cc54ee11c09d159a4381d6:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGNkYmZiODA5NTE0NThhZDhmNmNlMzNmNGYzNzY3YWUzNDAwNGYwOWY1NmJmYmEwYWVlOWVlNzRiNjMyNGU0YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGE4YWQ5NjU4MWUwNDU4MDUwYWEzYzc4NWE3N2E3NTQ0M2ZhOGY5NDkxZGRlYWM5N2EzMGQ2ZjhlYTZiMmI5MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTQyNzE2NDJkNjA1YTQ2NmUzMjUwMDcwZDVjZWY2Y2UxYTBlZTZkOTFmYzMzY2FiMzFjZDg0ZDU2NWRjYjBmOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTNkNDE4OTgxOTU1ODI1M2EwMDkyNDNlZGNiZGIyODRmZWFjYTY0OTE2Njg2OGJhMjkwNjE2YzlkYTJmMjA2NSJ9" + } + ] + }, + { + "id": "claim_3cc015571f4c42e686a0adfe316325a7", + "statement": "A dataset is considered populated when its initial offset is set, and dataset-source require_populated_input true prevents runs before input population; it defaults to false and can be set globally with a source-level override.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L287-L296", + "version": "repo-lines-v1:sha256:f73f5a037631b55ce07e4b121c869a117ff079164b293d25ab27ef5cf9f375fa:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEwMmMwYTMyYzMwMDFjMGNlZjBkZjE3MDJjOTk2M2Y1MjYwODUwNTg3YjNhZGQ2MWVmYThlNDFiNDQ1Mjc4M2YiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY3OGE2NGU1MzI2MGU1MDAxN2EzNzA1M2RjMjViYjZiYWM3YTFkMmI1YjVkZDI2ZDljOWY5MzIwNjA4YzQ0YjYifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L46-L60", + "version": "repo-lines-v1:sha256:6a70484c5f3e8b8e11c620da768637e3aa50e54aff71191506e805c2e1970f56:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVkMDEyZDU3OWEyZjMzYWFmZGVmOTE1MzczYjk4YjIwMzBmNGI1NGEyNzYyYjEwNjIxYTIzYTM4MjlhYzAzOTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFiN2FhOGZiYzk4YjhiYTBmNzhhNTIwYWNlZjA4ODE4ODJkNGM2NGI3OThiMWFmM2M0N2IyZjI3ZmRmMDk0N2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU2NzBmZjUxM2MzN2Q0NjU0ZDk1OWVmMjk0YWM1NmE0NTBmMDZkMmU5MThkMGExOWZmMzBhZjgzNzc1Mzk4ZDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU2YjQyYTM5ZDRkMTU2OGZhNDYzMTgxNDZjMjhlNzYwN2ZkM2NmNjkzNGM0ODE5NzMyNDI1MGJhMDY5ZTdhYTYifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L87-L92", + "version": "repo-lines-v1:sha256:0d06eac2294b68b2e1f9776917b7c862012fe6f10dde6d36bca5767009d57208:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2FkZjFhM2MxYzJhYzliZTU2YjE0OTIyMzE1YTY2MzQwNDcxOWIwZjgzZTJjNzFjNGVhZTg5NDIwNmY5NDc0YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODVjMWZjZjg0MjRmNDRjYTRhMjlkZTBhMGY4NmM3ZTk1MzM1ZTc0NTk0MmJhZjQ5ZDM1NjlmMjk1OWVkNTU2NSJ9" + } + ] + }, + { + "id": "claim_aef66edc687b42b7921a23374b4b56aa", + "statement": "Dataset-sink set_initial_offset defaults to if-source-populated, setting population after a populated source is fully consumed; always sets it on successful completion, never does not set it, initially sets it at run start, and onload at configuration load, so population alone is not proof of nonempty input or a completed successful import.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L46-L62", + "version": "repo-lines-v1:sha256:a5489e7a0ab74f0060ee4139cdae0608f0ec4281985d1176be95c3cd69b6ce89:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVkMDEyZDU3OWEyZjMzYWFmZGVmOTE1MzczYjk4YjIwMzBmNGI1NGEyNzYyYjEwNjIxYTIzYTM4MjlhYzAzOTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYyZTExZTcxZGYyYTViNzg2OTBmYTRiNTQxMjkwNWQ0NDk4ZGMwMDJlY2NjMzk4YzNjMGQ5NTkyNDY2NDdkY2MiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU2NzBmZjUxM2MzN2Q0NjU0ZDk1OWVmMjk0YWM1NmE0NTBmMDZkMmU5MThkMGExOWZmMzBhZjgzNzc1Mzk4ZDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMzZTQ2ZGI5N2E1NzAwZjQzYzIzNGM4ZDYyZDAzNDM2MTQwMzE3NmFjOGNjYjcxYjc0MDhhMzIwZjQzZWFjMDAifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L124-L134", + "version": "repo-lines-v1:sha256:e6f011f5ff6996e7534d719a982e9e7825b7057a076878b8024415961e609ed0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliZWIzZDliMmYxY2IwOTJlNTJkMWZlNDBkMmFkMmQ1NWVhMjg3OTAzY2FiM2MxMGE1ZGMwZGE4N2FlYzk2NmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE5MTA1YzA1NzY5NDQzMDU2NjllODg1OWU4ZjRjZWJiNDM4NGE4OGZlNTRiN2Q0MWE0YzdmN2MzYjYyOGM2NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUyMTE1MzFmMTk2YWNjYWYwMmMxMGI3NmFjMDY4NjU0M2ZmNTcyY2UyMWMzMTU4NjVmYmMyYjg4N2FkZTdjYTUifQ" + } + ] + }, + { + "id": "claim_4324e483cda343558e8c854bdb4878fa", + "statement": "Successful pipe runs propagate the minimum completeness timestamp from source and related datasets to the sink dataset, while inbound pipes use current time; completeness holds back recent entities to reduce processing or sending intermediate versions.", + "evidence": [ + { + "resource": "repo://hub/features/completeness-feature.rst#L8-L28", + "version": "repo-lines-v1:sha256:e2dcc8e3dc1d725e4392dd9265228dc9720f73c3fa698dd418c18ac27f390bca:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVkYWM3MmMyNWUyOGY5OTM0ZjIzNTM5MWZkOTUyZjk3MGJkOGNhNGZkYzQ2MTliYzg3ZTViNDIwODkzYTRjMDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYyNTRmMmE5YjVjYTkxNzU0NzJiY2U3OTE1NDRhZjY1YWE1NTcwM2QyNGNjNjczNWFmNzVjNzRkMzE4Y2JjMjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiMTg4OGM5OTMyOWM2NjQ2NGUwMzY5NDQzMmE5NzNhYzI1MTZkNGRkMzhlZmQzZTQwZGNjMDE4Y2UzNTM5OWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU1MWU2ZTFjY2VlMDIwODEyYTNlYWEwODQ1ZWJjYzZhYjVkOGU5MGYwYjliNmMwNTI0OWM3MGUxZmQ2YWRkMTQifQ" + } + ] + }, + { + "id": "claim_9ff3c391094446b2803863b5e10c1c17", + "statement": "HTTP endpoint imports can override current-time completeness with an X-Dataset-Completeness POST header whose value must be a positive integer, with microseconds since epoch recommended.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L177-L182", + "version": "repo-lines-v1:sha256:fb8675dbe6d30c3a472fec1d08514645e2eda94ebd4737bec9a30f64330f97ac:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjg3OGZjNGUyNWU5NjYwNDEwNGE1NTMwNDQ4MmJmZWIwYjYyNzhjNTE5ZWVhYTkxODZmNTYxNTZmZmRkNTlmZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDMwNjAyNzNhODNmYzMyMmE0MWQ1YTMyYThlYmU5ZTUzNTQzN2MwYjExNTE1ZDJiYmJhNzU4NTgzZjJkOTZlMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGY1ZmRlZmRhMGI4NDY2NDRiMDE2MjNiN2Q4NGRhZGEyMmQ1ZTc2YTc4NzcyZjJlZjc1ZTYzOTM0MDI3NDk3OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjJhYTcxZjM4NjY2ZWY3YjcyMGE4ZmIwOGNlMTQ4NzJlYjI3MWM4ZjU4ZjYzODY2NmUwZmUzMGE3OTI3MjgwMyJ9" + } + ] + }, + { + "id": "claim_9eb78ab5cb154ed6ac56c14dbf5a85e8", + "statement": "Pipe include_completeness controls contributing datasets and by default includes datasets in sources and transforms except exclusions; exclude_completeness wins over inclusion, and excluding all datasets generates a new completeness timestamp in the pipe.", + "evidence": [ + { + "resource": "repo://hub/features/completeness-feature.rst#L54-L79", + "version": "repo-lines-v1:sha256:e0ce291a6e7120406c43c30ecf724c74f12d88e9d706aab5fba6ea8a9b90863a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMxM2U1NjcxNGJlZGI0MDgzODQ0NGRmMDZjYmFhODBmNTU1ZTU3MGViNTc4ZGNhMWE5ZjZmMmU4NTJmZjE3MmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIzODFkNTE4MTY1N2ZiNzM5Y2I3OTRmNDBhMzk0ZmIzM2Q1YmU4MDgxNDBhOWY1YzQ1NjkyZWZlMDFkYTI4YTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQifQ" + } + ] + }, + { + "id": "claim_bfa03e7d4ead447d93537b86b01a4f63", + "statement": "Dataset-source completeness defaults to false; true filters to entity _ts values at or before the source completeness timestamp, while an array of dataset ids uses the minimum completeness timestamp of those upstream datasets.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L53-L76", + "version": "repo-lines-v1:sha256:3d0e6252aebf805769639b50605145178c8b048ae317c11df7d0f4077c560a06:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4YzYxYjUxNDU4MGIxNDkwNzZiNmE4YjgyNGNiNzA0MDM3ZDllOGMwZTM2NTk3YzZmNDk0ZGJlYmNhMTQzNDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZiNzkyNmQ3MDQ5ZjM3NmU3NTVmZjUyODIzYjhhMGFmYWI5ZmYxOTgyZDVkNzVlYThjYmIwMTE2ZGQ3ZmE0ODEifQ" + } + ] + }, + { + "id": "claim_b7e990d261894bbd95892193a3929843", + "statement": "Dataset-source completeness can use a DTL expression evaluated before each start that must return a datetime; a non-datetime result falls back to ~t1970-01-01T00:00:00Z, usually preventing processing.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L60-L71", + "version": "repo-lines-v1:sha256:29e4f7f227e1937f43bdf81a75057d19192542298bcf0471ab490688d10f1cab:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzMTBjMjEyNWJhYTYwOTEyODBhOGNmMmRjMjQ3NDY4N2VjMDEwODdhNmQ5M2EzYjhjZjg4MDY1NDgyMmI5NTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZiYTVhNmQ4NGJhZWU0Mjc2NzMzMGNhYzUxNzliODBjMWI5OWI3MzY2NTUwOTBhMmVmMDdhMjgyM2Q3ZTY2OGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBmZDhhOWYwYTBiNjg4ZTYzZGZmMmU5N2Y5YWJmYTY0NzEwMjQxNmJkNjU0NzcwMGFlMjQ0ZTg3Yzk5NTZjMGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmNzA5NmNmMzFhYzMxMzVjNTZkODFlZmYxODhkNDRmMDI1MTIzODhkZjdmMDI4NDRiODRmNTBiZjdlOTM4NDMifQ" + } + ] + }, + { + "id": "claim_a44bf1ab631840179632b657e53001f7", + "statement": "Dataset-source initial_completeness gates entity output on the presence of completeness values in all listed datasets, without depending on the actual timestamp values.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L79-L83", + "version": "repo-lines-v1:sha256:6570f3f3572270f583008b58816f28db7e3ffacc9d89b52a728e869dede5a4a6:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTYwZjhlNzM0ZjM4ZmM3Nzc0MmM1MzYwNGJmOGUxZWMxYTg0NTAzNzM3MDNlNDIwNGY4NTA5ZDdiN2NiYzZjYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTI2NmMxMWEzOTM3NzhlODA0NTE2N2RkZjA2OGZlN2IyYmRlNzlkZjBiODQ1ZTAzYjUzY2EyZTA0Y2FhMzI1NiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + }, + { + "resource": "repo://hub/features/completeness-feature.rst#L34-L34", + "version": "repo-lines-v1:sha256:5cdf102b7b3f8772baab257d7569aa00082c02df5e712c4cf9350160b787aadd:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWNkZjEwMmI3YjNmODc3MmJhYWIyNTdkNzU2OWFhMDAwODJjMDJkZjVlNzEyYzRjZjkzNTAxNjBiNzg3YWFkZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWNkZjEwMmI3YjNmODc3MmJhYWIyNTdkNzU2OWFhMDAwODJjMDJkZjVlNzEyYzRjZjkzNTAxNjBiNzg3YWFkZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjU4Yjk1ZDc2ZjUyYWRkNmJiNzZkNWYzZmE3NGMzYzc0NmY2MDg0YzBlNDNkMGIxMThlOTQxODMxYjAyZTc5YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWQ3Nzc4MjRmMzc0NzhmY2JhYjFiNzcwZTM3MmQyMDZmNTc3ZDQ3OTA3MmUyYjkxMmMwNDc3MWY4ZmQ4NDk3ZSJ9" + } + ] + }, + { + "id": "claim_b09af6c944044d658c294a83cc67ac7e", + "statement": "Completeness filtering is hazardous with full rescans and dataset deletion tracking because latest entities can be hidden and their unseen ids deleted from the sink; deletion_tracking false disables this sweep when a completeness-filtered stream must not be authoritative for deletion.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L140-L147", + "version": "repo-lines-v1:sha256:5541d7abd2fde800053d8b9bbb143d5cee60afcfee54c9e15fd50be11ae5d93a:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjg5MTc4ODhmYjgyZGVlOTgwYmYyYWEyMzAxOTE1ZDk3MDQ1YmE3NTExYWNlYzNiYTFkMjRkY2E4OTU2MWZmOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQwYjM2MmQ4MWNkMDhjMTYzZjM1Mzc0NTQ4NjI3Y2FjNGVmYWRkODA3M2QyZDA4YTc3ZGRhNjc3OTNiNWFhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDhkM2I4ZGE2YzE1ZTdjZDA1YTJiNmEyYTcyY2YzZWVkYjExNDFlNzhmNWE1YmRmODhkMjI0NGI3MDY0NGRlMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzViMmI1ZWNjNGY3MDUwNzc5NWViNTc1N2Y0YWZjOGQzMDZkZWVhYjcwNTM1ZThjYjAwNWEyYTE5OWQ0M2Y2ZiJ9" + }, + { + "resource": "repo://hub/features/completeness-feature.rst#L37-L39", + "version": "repo-lines-v1:sha256:931bfd27345f79e724c95d2b2da6fc0f600b98311088681ed2b9dd64bc976143:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTAwNDAxMjJiMjNhMzk0YjI2ZGE3YTdjODBkYTZhNTE4ZmE3Yzk0MjI5ZDJmOTk0Y2E2NWRjYjg5NGY1OWIwZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGMxMjM0ODk4NTM2YjU3YTk3OWQ2NzI4OThkNmQyN2Q0NTE1NDE1ODRmOTJhNDFjMWVhNWM1NDQ1YjU1YTQ1NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWI4YTdjZDMyY2U3MjY3ZjczOTBmNWY5NTM0MjBlYTQ2MjhlMDYwNTcwYWVjNzk0NmJlY2RkMTRjNmFlOTU0OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + } + ] + }, + { + "id": "claim_8470fc03e4ce4699a974ab417220bf75", + "statement": "Dataset content change tracking compares _hash against the previous version and drops identical output; new identity, changed non-reserved content, or changed deletion status can generate a version, and among reserved fields only _id and _deleted contribute to the hash.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L82-L88", + "version": "repo-lines-v1:sha256:8127481397e75bc5a5554ce37ad567cc324ce0a868fbf981de21e07986beaf7f:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzgzNmE4N2ZiYjIzM2VhNDBkNWYzNjc3Y2NkOTRkMjNlMTEyNzg5NTM5M2I5NGQyOWFlODdjZWVkMTdlMGQwYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmZmOTkyNGQxZDgxNGQ5MmZhNWM3YTc1Nzc0N2QxZTUwNGNlN2Y5NmYxNWVjNjdmOGUzMTI2ZjM3MzUwMzYwOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzYxYjg4OTcwNmNhNWRlZmU3Mzk2YjdmYzY5YWEzMjY2ZWE1MDI1ZTY5NmMwMDgxYjE2NDM1MzQ3NmNjYzQ5OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDA1ZDEzNWY5NmEwNjc2YjI4ZDgwMGRhYjBiYzViNzc5MTMwZTRiOGJkMTNjN2IwYTZjNTI1ZDU0ZjIxMjJhZCJ9" + }, + { + "resource": "repo://hub/features/change-tracking.rst#L10-L20", + "version": "repo-lines-v1:sha256:e686473e01dab0c873635f14c499429e95698d4d98ab94a0fd0f233958df6c64:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg3ZWRmMjg3M2QwYjRmYTY5MzkwYjUyZTU3MGUxOTJjYTRlYTgxYWFkZGQ5YTk5M2UwZjQ0YTIwYTVjYjRlZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkMWZhOGVjZTk4Nzg5Zjc4ODZhNmIwZThlZWFkMTk1NDZjMzliM2FkZjE3ZDIyYzUxNTA5YmE4YWZlNmM2NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImIzNTdlNmJjNjNiNGFiYzgxODhiOGU3MDRjZDViNWZlNjFlODI0NDhlMzViYTc5MjFhN2Q5ODBmOTNhNDk2N2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM1ZTI1MmVhYTA4MWY0MjdkMzNmYTFjMTFjYTk1YmE5OTk5MjA3MmViZDRmOGJiYzFiYWNhODYyZTViNTU3NWEifQ" + } + ] + }, + { + "id": "claim_f784e01cc9ea48ab99dd36c708529faa", + "statement": "Dependency tracking reprocesses source entities affected by changes in joined datasets by analyzing DTL hops and apply-hops and traversing their joins in reverse from the referenced entity back to the pipe's source dataset.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L9-L11", + "version": "repo-lines-v1:sha256:a1bd2cf1485667322c1d314fe889c2b1f9886d19fe1d007a938a091067598872:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMxNzI0NzM4MWYxNGY2OGEwYmY1OTZkYThkNTdhYzJkOWY0ZTg5ZTliMWIyNGIyZmQyOTE4ZTExMWNmNjYxOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzczODk1MTc3N2Q5OGI3YzFjNzUxYTY0YzQ2MmE5YmRiOWQwN2MzNDg2N2I2Y2QzYTA1YzE5NWFhMTQ0NTllMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzc0NmY5NjM5ODUzY2I2ZGZiOGMzOWYzMTZiZDQ0ZDg4YjYyNjc1NmMwZTM2OTI3NzM0NTAwNzNmOGNjYjg5YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjgwNmNiMmI0ZWQ2M2ZlOGQ1YjhjNzkyZmM0YzZmMTNiNWViOWU5YzRmYzcwYjU3YTYwNTBjMjBmOWRiOGExMCJ9" + }, + { + "resource": "repo://hub/features/dependency-tracking.rst#L8-L10", + "version": "repo-lines-v1:sha256:c72c8aa0c47791e1b192d80c8bbe07e13eeebdcbf64a6e8c95af3fd5894d7313:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUzN2VjNzZlZmRiZDZlNTU3ZjQ4MjFkNmEyMWM4Y2E3YjBjYTdkNjdiNmNjNzIxYTBjMjI0YjU1ZmM2MDMxZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGExYzE4ZjFmMDJkN2Q1MzQ1YTY5ZWQxYjM3OWYxNDAwNWZmYmRmZjZlZTEwODY1ZGFiNjk4NDY2YjhhMzMwMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzI0MGVjZWQ1MDEwYTQyZjEwZDcyZjFhMDU5YTA3ODliN2NhZDVlN2E1NTA1MTFkYzYzM2FkYWQ5OGU3OTQ0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2JlYWJiMjFhYTBlOGRkNDU0ZjkyN2ZhMjE0MGZlNDM4YmU2OTI0ZDA4NDViZmFhOTNkZGUzMTg4YWU5NjQ2NCJ9" + } + ] + }, + { + "id": "claim_36a356f0eb814572b9e95b83e99b1fb0", + "statement": "Dependency tracking is supported only for dataset-source pipes because it requires source lookups by id before a particular point in time; merge-source DTL joins do not get it and should be separated into another dataset-source pipe when tracking is needed.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L9-L9", + "version": "repo-lines-v1:sha256:0317247381f14f68a0bf596da8d57ac2d9f4e89e9b1b24b2fd2918e111cf6618:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMxNzI0NzM4MWYxNGY2OGEwYmY1OTZkYThkNTdhYzJkOWY0ZTg5ZTliMWIyNGIyZmQyOTE4ZTExMWNmNjYxOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMxNzI0NzM4MWYxNGY2OGEwYmY1OTZkYThkNTdhYzJkOWY0ZTg5ZTliMWIyNGIyZmQyOTE4ZTExMWNmNjYxOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzc0NmY5NjM5ODUzY2I2ZGZiOGMzOWYzMTZiZDQ0ZDg4YjYyNjc1NmMwZTM2OTI3NzM0NTAwNzNmOGNjYjg5YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWVlYzA0MGVlYTJmZjliMWM3YTA3MmRjN2ZiNmQwNjY3ZDE1ZTY5ZGU1Yjg5MmVhZmRhM2NmYTRkODQwMDYyNCJ9" + }, + { + "resource": "repo://hub/features/dependency-tracking.rst#L12-L14", + "version": "repo-lines-v1:sha256:575522e2ead826951cfe9c2e534169ad7008885b7a3ff1e59df8a3d5f0b2b530:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDYwZjVhODVlZmEyYmE5NDM1OTViYjFiYmQwMTZhMDVlMzk4MTljOWZmNGNjMjFhZWQwNTM3NTdiNTc4MDUyZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzBlYjY2M2M0MjgxOTdkOTYzMzM1NDFjMjRlZTI4ZGQxODZlZGFhZjk0MjVmZjU4ZDI5YzA4ZDdiYTg5NjFkNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWUxMGM2MDA1NjAyNjMyOTgzY2QxMTJiYTVjZWUxZWIwODkwNjYxYzczNDk0NWNhZjllMzVjM2QyMTk3MjY3YiJ9" + } + ] + }, + { + "id": "claim_f05e7c90b8be42689742efb326062151", + "statement": "Inverse dependency matching uses original source-dataset join values, so hops in later chained transforms require unchanged join criteria; namespace rewriting and dynamic _S.$ids wrapping can interfere with those inverse joins.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L13-L17", + "version": "repo-lines-v1:sha256:6419ac7275c07e7654cb59fe4c95097379760e036aaff57fd126603e42a284a7:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWI1MzgwYmYxN2MyZWFmOTQxNGFmY2VjMTVkYzEwYTYxNmUyYmIzMWE1YmQzNDIwZWUxNTliMzhmOThhYTdmMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDBmOGRhY2Y4ZWY3NzRmYjI5OGM3ZDQ0MTI4OTQyZWU5ZTZiOWM4MWFjMTU1ZGNmMmJmNDAxMDllMjU5YjM4NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWVlYzA0MGVlYTJmZjliMWM3YTA3MmRjN2ZiNmQwNjY3ZDE1ZTY5ZGU1Yjg5MmVhZmRhM2NmYTRkODQwMDYyNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_a56fa0609e75403cafc8e78be22602ee", + "statement": "The older dependency feature description of materializing a source entity at the head of the log must not be treated as a current implementation guarantee: the entity model explicitly says _tracked was superseded by dependency tracking that does not require modifying entities.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L124-L134", + "version": "repo-lines-v1:sha256:ec396663ffedd310efc2e71ab2c5a7f929ecece32fd40d805e5e2528baad0403:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY3MWMxOTY2YWExMjA5MDZjNjNjYThhZmVmYjgyZTZlZDJiMmUzODY0Y2JiNWQ5YmQ2ZjMzNmU0MjYyMDk3ZTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliNWU0MzlmMjY1NzU1NDU0ZWQwMTBlN2M0YzU5YWZhOTI2YzVlMDQyMjdlMDNjNzZjODQ2NTRkMDcyODQyYzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU2MDU2NTIwNDA1OTAwMWQxMGUzNzZjMWQ3ZWM3MTllNDRlZWVkMmExYjI3YTdmMjE0ZWFiYmExYjkzZDBjMDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImViN2NjY2I5MWE3Y2RlZjg5NjZmMmMyNWIzN2EyOTIyODI2NzQ2M2YxNzdlYmE3OGRiN2IyYmMyMzJmNGNjN2MifQ" + }, + { + "resource": "repo://hub/features/dependency-tracking.rst#L8-L10", + "version": "repo-lines-v1:sha256:c72c8aa0c47791e1b192d80c8bbe07e13eeebdcbf64a6e8c95af3fd5894d7313:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUzN2VjNzZlZmRiZDZlNTU3ZjQ4MjFkNmEyMWM4Y2E3YjBjYTdkNjdiNmNjNzIxYTBjMjI0YjU1ZmM2MDMxZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGExYzE4ZjFmMDJkN2Q1MzQ1YTY5ZWQxYjM3OWYxNDAwNWZmYmRmZjZlZTEwODY1ZGFiNjk4NDY2YjhhMzMwMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzI0MGVjZWQ1MDEwYTQyZjEwZDcyZjFhMDU5YTA3ODliN2NhZDVlN2E1NTA1MTFkYzYzM2FkYWQ5OGU3OTQ0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2JlYWJiMjFhYTBlOGRkNDU0ZjkyN2ZhMjE0MGZlNDM4YmU2OTI0ZDA4NDViZmFhOTNkZGUzMTg4YWU5NjQ2NCJ9" + } + ] + }, + { + "id": "claim_48b41973d73943f0b6fe9a520a102c36", + "statement": "compaction.keep_versions defaults to two; keeping fewer than two makes dependency tracking best-effort and can miss reprocessable entities, with full or partial rescans documented as countermeasures.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L44-L55", + "version": "repo-lines-v1:sha256:15796258efe5927782434c201883c1a3841b374c6862a7b3b1d6e68c7f7aa8dd:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjZDIyZDViN2RhYzY1N2QwODZhYTNjMjUwNWU2NDcwYTg5ZTJmYzMzY2EwNzUwZTI4Y2Q2NTdlNGVjNjE2ZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYyMmYzYjhlODgwMmQzNGUwMTRlZDk2Y2E0NjQzODk3MzRiOGQyMWM4YTI3N2FhNWE2ODBmMGY0ZTUwMDE1MWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjljNjczNzI1MTQ0YzA1NjM0NzA1YTRhMWE1ZTU5ODUwZjQzYmE1NDU1OWNmZmU2ZTFhZGNiMDAzZWMyMTNmOWEifQ" + } + ] + }, + { + "id": "claim_633aef0d63f942c5b4856d1e90fe4455", + "statement": "Each dependency-tracking pipe keeps a tracking offset on referenced datasets, and compaction cannot go past the lowest such offset; even disabled pipes can hold off compaction.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L13-L17", + "version": "repo-lines-v1:sha256:161f3d3bb8ab13b7fe0769349e9d01cb9cae336a74eabcd637cb809d0c566485:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjFlYWFjMDdlMDA2Yjc1NjIzNmJmMzllZDhmOWM2MWUxOTk5NjU1ZTAyNTM3ZjRjODQxNTUwMGE3OTY5ODA1YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjYxMjZiMDczNDU5ZjQxYWJhMTBhMGI2M2ZiNWNiYTY5OTAwZjQ5OWU3NWI0MmIzODcxZDdkYTc3Y2ZhNmYzNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + } + ] + }, + { + "id": "claim_a29008ee323847659d4cc37023da71c3", + "statement": "Pipe dependency_tracking has entity warning/error thresholds defaulting to 10000/50000 and total-byte warning/error thresholds defaulting to 33554432/134217728; exceeding error thresholds fails the pump, and enable_hops_thresholds defaults false but can apply the same limits to ordinary hops, as recommended for development.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L206-L233", + "version": "repo-lines-v1:sha256:0ded7eb1db2773717757fab01fa3b7dd3dd5d688d6308ddebdf7c75110db967f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNjNTAzZjYwYWNjM2MyYmVkNDkxYTFhYzIxNGM4YzZjOWJmMDAyYjA5MmRiZDJmZTAyMzY3NDQ1Zjc0ODZkZGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM2OGQ1YmQ5OGRmYTFiZTdlNGY0MTQxN2MxZTQxYTZmNTU2ZDM4M2NhN2QzY2YyNmM0NzU2ZmM2MGRkMmQzYzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ5ZDljNzY1NTI3NDQ0ZjQzZjAxOWMzYWMyYTk3YmY3MTM5MzlmNzNkODMwYzE3MTZkMjk4YjcxMjRhYjk5NTUifQ" + } + ] + }, + { + "id": "claim_01edb1d4eeba4f468a73a25d49dbbe39", + "statement": "Property lineage is a best-effort property dependency graph derived from static pipe-configuration analysis combined with schema-inference data, distinct from runtime entity dependency reprocessing.", + "evidence": [ + { + "resource": "repo://hub/features/dependency-tracking.rst#L8-L14", + "version": "repo-lines-v1:sha256:752f9ae994e38b757195dcec312457813f6ed823de4486cff9a14aae1b61267b:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUzN2VjNzZlZmRiZDZlNTU3ZjQ4MjFkNmEyMWM4Y2E3YjBjYTdkNjdiNmNjNzIxYTBjMjI0YjU1ZmM2MDMxZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDYwZjVhODVlZmEyYmE5NDM1OTViYjFiYmQwMTZhMDVlMzk4MTljOWZmNGNjMjFhZWQwNTM3NTdiNTc4MDUyZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzI0MGVjZWQ1MDEwYTQyZjEwZDcyZjFhMDU5YTA3ODliN2NhZDVlN2E1NTA1MTFkYzYzM2FkYWQ5OGU3OTQ0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWUxMGM2MDA1NjAyNjMyOTgzY2QxMTJiYTVjZWUxZWIwODkwNjYxYzczNDk0NWNhZjllMzVjM2QyMTk3MjY3YiJ9" + }, + { + "resource": "repo://hub/features/property-lineage.rst#L8-L17", + "version": "repo-lines-v1:sha256:8f55fdae5f99ea8156f66caa2d3ef0ece6b462403ffe59903aa4249d955c9931:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc2OGMzZGViNGFlNzJiZDcyZDhjNjZlNWIzNTc4MjNkMmNhYjJjZmZmYTIzZjVmNjk3ZjE4ZGU2ZDc3OTdmN2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlmYmVlYzViMTMyZTU1NDg4MzEzOGJlNjhlNzVlOTY2ZWI3YzAzNGU4ZTMyMjZjYmU3ZjU0ZGUyOWY0NzExNTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY5YmY5YTNkYTdjN2YzN2M2YmZhZTdlYTFkMDNiZDM4MmU1M2MzMjA2YzNjZTViZmYwNGFhMTAyNWZjMTQwOGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjcifQ" + } + ] + }, + { + "id": "claim_bc7ee84b082945b5832194941a1ce5c5", + "statement": "Dataset-sink deletion_tracking defaults true and after full runs deletes previously existing unseen ids by writing versions with _deleted true, rather than physically removing their history.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L140-L147", + "version": "repo-lines-v1:sha256:5541d7abd2fde800053d8b9bbb143d5cee60afcfee54c9e15fd50be11ae5d93a:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjg5MTc4ODhmYjgyZGVlOTgwYmYyYWEyMzAxOTE1ZDk3MDQ1YmE3NTExYWNlYzNiYTFkMjRkY2E4OTU2MWZmOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQwYjM2MmQ4MWNkMDhjMTYzZjM1Mzc0NTQ4NjI3Y2FjNGVmYWRkODA3M2QyZDA4YTc3ZGRhNjc3OTNiNWFhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDhkM2I4ZGE2YzE1ZTdjZDA1YTJiNmEyYTcyY2YzZWVkYjExNDFlNzhmNWE1YmRmODhkMjI0NGI3MDY0NGRlMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzViMmI1ZWNjNGY3MDUwNzc5NWViNTc1N2Y0YWZjOGQzMDZkZWVhYjcwNTM1ZThjYjAwNWEyYTE5OWQ0M2Y2ZiJ9" + }, + { + "resource": "repo://hub/features/deletion-tracking.rst#L8-L8", + "version": "repo-lines-v1:sha256:4020424a3c25ef2069d7aa025543cc5ec2d4bc57ed0833a3e2ffc413f7178424:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDAyMDQyNGEzYzI1ZWYyMDY5ZDdhYTAyNTU0M2NjNWVjMmQ0YmM1N2VkMDgzM2EzZTJmZmM0MTNmNzE3ODQyNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDAyMDQyNGEzYzI1ZWYyMDY5ZDdhYTAyNTU0M2NjNWVjMmQ0YmM1N2VkMDgzM2EzZTJmZmM0MTNmNzE3ODQyNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMThmNGY5NzczMWRhZWI3MDE5NWEwNjA4NGU2ZWQ5NWNlYjQ2YmEwYTYwYTk3YmI0NzQ0ZjllMWQ3NDE3N2EzNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_9b6f200630634f07bfe3cd1709fbdc46", + "statement": "Dataset-sink mark_deletion_tracked defaults false; enabling it adds $deletion_tracked true to entities deleted through tracking after full runs or rescans.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L150-L154", + "version": "repo-lines-v1:sha256:fe65e0049be591ce989c392e94b5a67cd0f3eb798de4f275ff8e70ab816ee311:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTc4MzU3NmUwOGY5MGQ3ZjdkMjc2Y2YxMTE2Nzc4YzY5ZDU1ZWNmNmYxYWE3NGJlMGE4MjUxOWViMTkxMTliNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjIyZjNiOGU4ODAyZDM0ZTAxNGVkOTZjYTQ2NDM4OTczNGI4ZDIxYzhhMjc3YWE1YTY4MGYwZjRlNTAwMTUxYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGRhMzI2MTY4NTMxYjFjZDNjMmJiYTZjNWVhN2ViZDAxZDExMzZkOGYzYTFhMDZiOTc1Zjg1MTRkZTgyOTRkMCJ9" + } + ] + }, + { + "id": "claim_2c3b1fc7535c457eb2116dac608fe1da", + "statement": "Continuation alone cannot infer deletion from absent delta entries; when a source does not report deleted entities, regular full synchronization is needed to discover disappearance.", + "evidence": [ + { + "resource": "repo://hub/custom-data-source.rst#L18-L20", + "version": "repo-lines-v1:sha256:f99460e7b041877fb26b18d976391f9a018179b799b6002df3ebabe6abd99a25:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWE0NTQxNDI5MGFiYjgyMGRhMmJlY2U4N2QxODIxMzEwNjE1OWVhOTcwODA4OGY0NjJlN2NkNjFiODQ0ZTdkZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODU2NTA2ZmI0ZmE0MWVjMTg4NTk5MTA5NDNlMDcwMjAxNWFhNDJlNzRmOGVlMmU2YTY4OGE0Y2NkYTc2ZGU5NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmIzMDYzZDcyZDQzMzU2Yzc4OTc2NjQwMjI5ODE5NThhNzE0MGJlZmVjNWI0NGJjNTAwOGNlNmYzZjdmN2VjYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWQzYjk3MTA4YmIwNDRlZjZlYjRmNWZjMzA1MzI3ZWM4NDdiMzNmODBhOTc4ZDQ5OGIyYWQyYWM3ZWJjNzZlNyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L67-L73", + "version": "repo-lines-v1:sha256:3dad4b19ed60f021a7ba27b5bc228f498ee935e9036d221933c3366054b0d042:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTMwYzZiZWUyZGEyMTA4YmUyMTRjZDhmYzU5Y2U0MGQ5NDM4MGM2NDhkM2Y5Mjg2MjA3MDZiMDhmOTBmODU1ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDUwMWVlYzUwZmJmNDY0ZTkzYWNmNDU5NTcwNWE3NTAwOTM5NWIzNzI4MWM0N2FiMzBjMzE4ODhkMjRlMTYxYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTA3ZmI1OTFmZjhmMjZmZDA5NWUzOGE2YTBhZTcyZTIzYjhlY2I5MDA5NjMzOGFhMDAzYmE1MWEzOGNmN2VkNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTYwNjkxOTI0ZDhhYWIyOWVhZWNiMjUzNzJmNGFhZjc1MDI5YzAxYjU0MmNhYzc4OGM2ZDcwMjRmY2Q4OGYyZCJ9" + }, + { + "resource": "repo://hub/features/deletion-tracking.rst#L8-L8", + "version": "repo-lines-v1:sha256:4020424a3c25ef2069d7aa025543cc5ec2d4bc57ed0833a3e2ffc413f7178424:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDAyMDQyNGEzYzI1ZWYyMDY5ZDdhYTAyNTU0M2NjNWVjMmQ0YmM1N2VkMDgzM2EzZTJmZmM0MTNmNzE3ODQyNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDAyMDQyNGEzYzI1ZWYyMDY5ZDdhYTAyNTU0M2NjNWVjMmQ0YmM1N2VkMDgzM2EzZTJmZmM0MTNmNzE3ODQyNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMThmNGY5NzczMWRhZWI3MDE5NWEwNjA4NGU2ZWQ5NWNlYjQ2YmEwYTYwYTk3YmI0NzQ0ZjllMWQ3NDE3N2EzNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_5ac8a72c6b354b4b98d286f8f69567f2", + "statement": "DTL _filtered signals a dataset sink to delete an existing entity, while sinks that do not support it discard the filtered entity instead.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L113-L121", + "version": "repo-lines-v1:sha256:95c243f019475e68797591a4e93e297c67063758f4363e381114aa886bb78a79:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTMzNTQ2OWEzNjlmYzViZjlmMGZiMzRjYTdiYWVjYWI5MjBiMTNlNTY3ZjNjZWZiYjY0MjZjMDQzYmU4YWRhMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDZkY2NmMDJlZDk4OThjYmQ3ZjM2YjMxYTExMTA3NjczMDg4Y2U5YWRlOTdjYjk2YjRmMzNlMjc0ODMxYTMyNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWM3ZjM3NjMxODMxYjg3OGUzODVkZGJjZTZhNzg3N2VhMDlmYjc5ZTIxOTcyMThkODk0NWZjZGQ2MjI3MDc5MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWVhMjlkOWMyNjQ0MjdiMTE0NzE0ZThhMGQxMThhNWE3ZTdmZjUwY2Y0MDM3NmI0MmViNGIxZGMxNjdlZDU1NCJ9" + } + ] + }, + { + "id": "claim_25486e87533b41258ca3f60c2432cb05", + "statement": "Dataset-sink track_children compares $children with a previous parent version to detect removed children during incremental synchronization with create-child and emit_children; it is inferred true when transforms use create-child and can be overridden false.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L78-L93", + "version": "repo-lines-v1:sha256:ad6fb55d97566c397623de989bd93ab4d0a209f80cdafd718bff19af24ecdc37:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNTQ3ZmIxYTEzOWFlMjRkZTQzYWNkNzBlODI0NWJmMmRlYWY0NTk3MzYwZmMxYWY1N2Q2YmNmMjJlNmUzZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkYWQ3YWJiNTc1OGU4OTBmMmE4NWYzZmM5MmE1ZTZhOGUzMDkzMjFlYTM1OWVjMjA1OWMwMzJlNGMxNWZjYTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ5MjVjOTVmMzQ4Mzk2ZjJmZTZkMTQ2NjY2YTI1ZjE2YmNkODRkODAxNGM3ZDQyNmVlZWYwNDMxODMxMDkwODMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5NzdlZGU3NjY4NzZjYzgwMjE4MDE2ZDIzNzg3MTkyZjcxODJlMjZkYWU5YjlmNTMyYzNlYjhkMGY3NWM1MWEifQ" + } + ] + }, + { + "id": "claim_1351f1d1820f44e4990d08dd43cccb2b", + "statement": "Dataset-source if_source_empty defaults to accept, allowing an empty full import to delete previously synced entities when deletion tracking applies; fail stops empty-source processing and prevents that sweep, with global_defaults.if_source_empty overridable on sources.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L271-L283", + "version": "repo-lines-v1:sha256:5f2760c446d1d99052de038bc666157c1ee295624cd4cd2290e9fc0d3b0f7eb5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVjMzU5ODFmNDczMzk1ZDViMzY5ODcyYzZhODIzOTQyZGU1NWQyOGFlMWJiOWQyODAwMjRiYmI4N2FmY2I0Y2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmZDViZjZiM2ZmYzA2NTVmN2EzNGMyMDc2YTRiNTBmMWY4Mjk2OTY0MDI1NTgwMzVmNjliMmRkMGY5YTAzZTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L140-L147", + "version": "repo-lines-v1:sha256:5541d7abd2fde800053d8b9bbb143d5cee60afcfee54c9e15fd50be11ae5d93a:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjg5MTc4ODhmYjgyZGVlOTgwYmYyYWEyMzAxOTE1ZDk3MDQ1YmE3NTExYWNlYzNiYTFkMjRkY2E4OTU2MWZmOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQwYjM2MmQ4MWNkMDhjMTYzZjM1Mzc0NTQ4NjI3Y2FjNGVmYWRkODA3M2QyZDA4YTc3ZGRhNjc3OTNiNWFhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDhkM2I4ZGE2YzE1ZTdjZDA1YTJiNmEyYTcyY2YzZWVkYjExNDFlNzhmNWE1YmRmODhkMjI0NGI3MDY0NGRlMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzViMmI1ZWNjNGY3MDUwNzc5NWViNTc1N2Y0YWZjOGQzMDZkZWVhYjcwNTM1ZThjYjAwNWEyYTE5OWQ0M2Y2ZiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L124-L134", + "version": "repo-lines-v1:sha256:e6f011f5ff6996e7534d719a982e9e7825b7057a076878b8024415961e609ed0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliZWIzZDliMmYxY2IwOTJlNTJkMWZlNDBkMmFkMmQ1NWVhMjg3OTAzY2FiM2MxMGE1ZGMwZGE4N2FlYzk2NmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE5MTA1YzA1NzY5NDQzMDU2NjllODg1OWU4ZjRjZWJiNDM4NGE4OGZlNTRiN2Q0MWE0YzdmN2MzYjYyOGM2NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUyMTE1MzFmMTk2YWNjYWYwMmMxMGI3NmFjMDY4NjU0M2ZmNTcyY2UyMWMzMTU4NjVmYmMyYjg4N2FkZTdjYTUifQ" + } + ] + }, + { + "id": "claim_65da5cd6fef24e48890598bb9538f8b5", + "statement": "GET /api/pipes/{pipe_id}/pump exposes pump state and form-encoded POST controls it with an operation field; update-last-seen uses a source-specific last-seen value and an empty string clears progress for first-run behavior, while pipe disable_set_last_seen true prevents reset or manual last-seen changes and defaults false.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L12-L22", + "version": "repo-lines-v1:sha256:b8279743a07cae1b6729847f86dbea9a477b470aeb4a5b28f2ae490c7cb38370:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU3M2YyMWQ1MzExYThjOWFlNWQ2MGU5MDhjNmY2M2RmZjkwMmRkZDMzOWNmZGZmNzFkNmRjYWU1NDQzMjUyNWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhNjEzYjEyMThmN2UzMThiYTM0YzdlMmFhZWEzNjQxMDJiMDAwYjY1YzRiZTViMTA4MzA5Y2VjZGJkMDU4ZTgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFlMmZlYmU2YjNhOTU3ZWYzYzUzZDdlYzkwNDVkZDg0ODkyOGFjMzUyYWQyNzg1MjAzMmY5Y2ZlYjA5MWIzMDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEwNmNjMGMyYTNhOTMzZTgxYzg5NGU1NDRhOTliOWUyNjQwOGI3NTlhNWRlZGFhMGMyMzg0N2Q3NDg1M2MyMmEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L140-L144", + "version": "repo-lines-v1:sha256:561822624792ba99798eb2dde2af2a6ce1028ab8d0a8a3ce24908aba30a4b6e9:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjMxMWQ1Njg4NWJmYzBiMzVmNTk5ZjIwYTQ4Yzc4NDM4MWE1Zjg3ZGE5MDNiZTcxM2QzNzMwNzZlNDY4NWIyNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNGNhMjk1NDUyZDQzOTAxZDAxYjM4N2EwZDllOTEzNGUzMjY3Y2JkZDE2NDk1ZjE3YjNiYzQ4YzAxYjhkOWRiYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmMwNzk2NTI5NWJiM2I1MDU1YTc2YjBhYTg5OGQ2NGQ5NGRjODczM2E0OTYxYzcyOWIwODM0OTM2NGE4N2VhMCJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L519-L544", + "version": "repo-lines-v1:sha256:3fd485109666737f95b7c87a91541d1e7f11887d968c21828c2a2a7826d669df:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjN2Y2NWM0MDNiZGM1MzRiZmQ4NGU5YTNmYjEyNzhiYTFlOTUxYjQwZTUwOGZjOGM0NmU0OWQ3OTc4MDhhNGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhmMjEzYzc3ZDkzMDk3MDBiYWViNDAyZTFkZjkzYTg2NDU0MDAxYTA3MTcwMjRkMTVlZmQwYzI3M2FkNjUxNzUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFmNDc2MDU5NGVlYTI5OGIzNTEzMjcyNTUxNWMwNzM2YWJmMThlMmNiZDQxODVmOTM1YjBkOTZhZDhjZTUwYTEifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L575-L585", + "version": "repo-lines-v1:sha256:fb1049b08452c6b5e24e438a188773a2d3a7d26499b2c17530016d192aa55e93:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ3ZjdlNzQxOTEyYWQ4YWIyZGY0YWYyMDE1ZmVhNmVkOTJmMGY3NjVlY2MwYmEwYzRhY2FmNDJhYzhjMjc2MjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlMjAxODVhZTUzNDBhMGIxMjYyNjEyZWQ2MDU2ZjFhZGU5YTM3MGI4MDAwNmRjOWUzYTNkOTJkODNmZGIyNjUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM1ODI0ZTg5NGE3MmJjYjIyM2FhNzQzMWIyYzA3MjBlZjM5NmNhMzFkMzQ0NTJjYmFjNmI4ZDUwNzc4NWI4MzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZkOTA5NjBmODE2MDc5NDJiZDU1M2I1OTJkODExMTBlY2NmNTNkM2RhZTAzZTAzMjk2ZjE3YWY3MTU5ZjMxMWQifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L634-L650", + "version": "repo-lines-v1:sha256:539c17829e8fd8ab11388277acc0c0bb00706da57aa68610327a9f79b1626ff2:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmOWI5ZDcwZGZhMDMzNjc5MzFjYmRlM2JiYWExOGFiMWIwM2NmMzM1NzJlZDIxZTNjMDZlMmMwOGFhZjQ5NGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk3NDA0MWE4M2VkNDMyMTJjZThjYjYzYzcyODM3MjdhZjU0ZDdiZTQxZmNkMzdhODkzNWM5NzQ4OTU0OGJmZjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI5ZWU2MzI1NjM1NjE5YzczNjFjMzNjNjEzZjI3NTMwYzZhNjg1M2I0MmE5ZWQwMjIzZmUzZGZiYzdmZTIzODciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjljMmRlNTVkMDk0ZDFhY2UxMTczYjhmOTkxNzM1YTU2MWFmZWM5ZmUyZDllZWZiZjk4NWEwMTUzZDUzMjIyZmMifQ" + } + ] + }, + { + "id": "claim_20b2015753cd422ca1feeac2b93a5c6e", + "statement": "Management Studio describes Reset as setting since to 0 for reprocessing and Restart as Reset plus Start; these UI descriptions do not replace the source-specific API marker contract.", + "evidence": [ + { + "resource": "repo://hub/management-studio.rst#L210-L226", + "version": "repo-lines-v1:sha256:98e58f051f2bd4f4aa7d08cfffc73a9ec51fe3f4a351738bddb3f477267cf26a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjViOTc2Y2ZkY2U2YTc0N2U2Mzc1NGMzZmI3ZjBjNzZjN2NmNWUwMTNjZDBhMzIwYWE4OWUxODg4NTIyZDBjODEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNlNWU4ZTc3Yjk1ZmQ4M2Y3YjY3MmM3ZmE2N2NkMWFhODlkNjU0ZGFmMjZmMTdhZTgyNDNhYzdhZGFlYzI0MzkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJlNzQwOWVkNjY0ZWU4NjJmZWRmZjY2YmM1Zjg2NDdjYjdlN2ZkNDM3NjBjYWIwZmFkMTYzYjI4MzIzNmM4MzQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU5ZjhkMzZlM2U1NzMyNWE0MzcwM2Y5ZTNhNTQ5MjU1NjMyYWMxZWFhOWU1OTZjNTI1ODNmNmNhOTQ5YzgwODEifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L575-L585", + "version": "repo-lines-v1:sha256:fb1049b08452c6b5e24e438a188773a2d3a7d26499b2c17530016d192aa55e93:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ3ZjdlNzQxOTEyYWQ4YWIyZGY0YWYyMDE1ZmVhNmVkOTJmMGY3NjVlY2MwYmEwYzRhY2FmNDJhYzhjMjc2MjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlMjAxODVhZTUzNDBhMGIxMjYyNjEyZWQ2MDU2ZjFhZGU5YTM3MGI4MDAwNmRjOWUzYTNkOTJkODNmZGIyNjUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM1ODI0ZTg5NGE3MmJjYjIyM2FhNzQzMWIyYzA3MjBlZjM5NmNhMzFkMzQ0NTJjYmFjNmI4ZDUwNzc4NWI4MzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZkOTA5NjBmODE2MDc5NDJiZDU1M2I1OTJkODExMTBlY2NmNTNkM2RhZTAzZTAzMjk2ZjE3YWY3MTU5ZjMxMWQifQ" + } + ] + }, + { + "id": "claim_4a06ba9c5cff4193b5e827ffb406cedd", + "statement": "set-last-seen-to-end skips unread source data, is unsupported for some source types, and can cause data loss; it is documented for deliberate development or testing use.", + "evidence": [ + { + "resource": "repo://hub/management-studio.rst#L222-L226", + "version": "repo-lines-v1:sha256:26c5576c8e9e2f460f8fbd30261ea5b459b2353a03c22406569f3d0f306e3ab4:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTI5ZTQ2NjAzYWQ4MDQyN2IzZjEwMmUzNTJhYWY5N2YwZTdhZWQ0NDk4MjkzMTI5ZDVkZDg3NDdkNDJlZWNlNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2U1ZThlNzdiOTVmZDgzZjdiNjcyYzdmYTY3Y2QxYWE4OWQ2NTRkYWYyNmYxN2FlODI0M2FjN2FkYWVjMjQzOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGQ0ZmI0MWE5OTE1MTI5OGJkY2FlMmM5NmQyY2NiNzMxNWRjMmE0YjBjYzZhMjZkOWQ5YWI1NjE2MGVmMmZkYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTlmOGQzNmUzZTU3MzI1YTQzNzAzZjllM2E1NDkyNTU2MzJhYzFlYWE5ZTU5NmM1MjU4M2Y2Y2E5NDljODA4MSJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L587-L593", + "version": "repo-lines-v1:sha256:06748b942dfad926dd26b93e14df213caf8edc0789b2bd777b913bce8173d21f:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmFiZDdkYmM2Y2NhNjYzMjU2ZDIxMTY4MThjYTIyNzEzOWU5Y2FkODllMDY2Yjc0NWZhY2Y3ZGUzNDA1N2NlZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWZiZTFlMGVmMDNiYzQ5N2Q1NjE3OTU1YmRiNzFiY2RkZTU2NDJhNjZlZDEwMGY1MTIxZGE1YWJhZTc4ZmFjZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODIxNmU0NGYxNTNkM2ViM2MzYjg2MjdjNDgwNzZmNzZiZDU5M2YyYzlmYTk4OWQ4ZTY1ZTA5MGJkOTAwZDRlMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmY2MzdiYThkZDQzMGNjYjBiOWY2ZDhiNGY1Y2Y0MTdjOThhNzczYTI0YTE4ZDVjZDMzYjhiYmYzZjAyY2Y2MSJ9" + } + ] + }, + { + "id": "claim_ecbd1a5e3033444d82e4c5b0a2b44b1d", + "statement": "Experimental reset-tracking is unsafe while the pipe is running and resumes tracking at dependent datasets' ends as of the next run rather than the API call, skipping untracked changes and potentially making output incorrect; it is restricted in guidance to development or a planned full sync soon afterward.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L595-L605", + "version": "repo-lines-v1:sha256:2cbbabc20e2aca019bf31f82780d9062a3f4ba12ba74ca4c4a586394a023eccc:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxZTU0MjM1ZThlOWNlZTc5NWJlYjRjZjY0MDJlNTVkMmM0ZWU2NzRhMTAyNTMwMzk2M2Q5ZWMwMmFjMjRjNTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgwNDQxNWIyOTgzNzIyNDk0ZWFjZGYzN2FjZTU0MjlkNWVkZTY2ZWZkYWE3NTdkYzFlOTliYzU5MzY1MmJmZGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJjZmJiOTFjZmZlOTlmMTAyM2ZhNDRlMGRlZTE5MDAyMWExN2QwNTE3Y2Y3MDM1OTEwNjRlYThkN2RlZTgwYjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJlZWQxMmVmMTFlYjU2YzFjNzliZDRhMWNiZGI3ZTVlNmE2Zjg2NGEwOWU0NjY0MjgzZGU2YWZmNGQzOTE4ODcifQ" + } + ] + }, + { + "id": "claim_1f3f0904cfef432da692b0b41f1a6032", + "statement": "discard-retries makes the next pump run ignore pending write-error retries and does not send the discarded failures to the dead-letter dataset.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L613-L617", + "version": "repo-lines-v1:sha256:527e4340071c0f73f529f50ff966912eaf540f5b5dfa606f0be27998315f270c:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzM2ZGM2NjBjNWU0YzM1MzAxNDg1MzQxOGVhNWVmMzFkNzFjZGMyZWM2OGNmMjUzNjk0MTViOWE5NDcyYWIwYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTQ4MDBjZWI1MTUwMWJmMTEzOGQ0NGMwY2M2ZTY5MDJhN2U5YTEwMzhmODRkYmVjZWNlNDMzY2Q3NzI4ZGNhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmNhMGE1MGMzZTQzODIxYWVjYTNiYmU5Y2E0YmQyYmI2NTE1MzFkODQzMzY5YWJlZDA1OGE3ZjFhZDNhNDlkMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWQyOWNhNTNiODc0ZDZlY2VhYmQ1M2MwZDU5OWQxNzUzZjhiMWM5ZDdhMDhjNzhhNjhlZGZmNTY5M2RlZmY2YiJ9" + } + ] + }, + { + "id": "claim_a8f0ba4011f745109de795b254dc34d9", + "statement": "Management Studio's Delete sink dataset action deletes the sink dataset and resets the pipe's since value to 0, unlike a reset that replays into an existing dataset.", + "evidence": [ + { + "resource": "repo://hub/management-studio.rst#L219-L220", + "version": "repo-lines-v1:sha256:699c1acb8b6936e5f47c99194451f6c4bc73f0fa94326be3edac07a3ad3d1baf:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmE5ZjRlZjNlYmNkODYyY2Q4NWU5ZGI0MDU0YTMyYjJhMWM3NjRiZmI3NDdiOWU4Zjg1NDNkYWRkNDAxMGZlNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTQyNDcxOWJiYjdhYTkxYWY1MTkzNGYyNTdhZTgxZWI4YjE5NTgzM2M3MTU1NTIwNzI3ODc3ODVmOGUyNTJjMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNThhN2ViMzc5ZjM2MTcyOGRkMzRhZTg5Y2FmM2E5MjMxY2FlYzFmZDkwZjZiODM0OGVlZjYyNDkxN2Q0ZmE1MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMmJlNjIzNjY5MmM4NDViNzA4MzVhNDE2OWZlNTI1NWNhNjA2MzViZDJjOTk1MTQ5ZGNhMDJiYzg0ZTg5NGJiZCJ9" + }, + { + "resource": "repo://hub/management-studio.rst#L246-L247", + "version": "repo-lines-v1:sha256:c6f6cf132e2a1280cbdc1ef957b0c912dbfae5aad7e55e87020c173f997f3b83:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTJjMjdhYzFjYzE2ZjYzNWIzZDFiZGU4Y2ZlZmQ5NWNkMWYxOWQ0ODI2ZGY4Zjg4YmUyM2VjMDUwNDg4MTEyNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODU5ZWYxMmNjZTA0YmE5ZGI2M2IwZTlkMjQ5ZTA3ZTVjYWIyYjU5NDYyYjFhYWEzNGJmMGJhMzZjNDk1ZDI2YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTU0NDM2OTNkY2M3MzM5NDI5YTlmNzkyMzU4MmU4ZjY0MGVmZGFlODNkODg2Y2EzODhlYTU2ZDk4OGFmZjdmZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTJhMWViOGIwYmQ4NDY5ZjcxNDY3ZTJjZmVlMmZlNGZlODJiNDU3YTQwYWFmM2Y5ZDRlZjI4ZDY4NWM4MTJjNiJ9" + } + ] + }, + { + "id": "claim_fd2f4137303a4e32be735d84daf6332f", + "statement": "Repeating operations against external systems can have non-idempotent side effects, so dataset change suppression or resetting progress is not a guarantee of safe external replay.", + "evidence": [ + { + "resource": "repo://hub/features/change-tracking.rst#L10-L12", + "version": "repo-lines-v1:sha256:5a4800c74bd58c5f822e3b8605ef951f6ee9187e1752abb3565023c6b73d683a:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODdlZGYyODczZDBiNGZhNjkzOTBiNTJlNTcwZTE5MmNhNGVhODFhYWRkZDlhOTkzZTBmNDRhMjBhNWNiNGVlNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2MyOGE2MWMzYzk3YmQ5ZGM0YTcwMGIzNWNhZmM4MzI3YTBmMjBiZGY5ZDI5MTJiNjA1MTU5NDE2NGYyZjVkYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjM1N2U2YmM2M2I0YWJjODE4OGI4ZTcwNGNkNWI1ZmU2MWU4MjQ0OGUzNWJhNzkyMWE3ZDk4MGY5M2E0OTY3ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWYwN2U0NGZiOWI1ZTc2YzZlMjBiYTE2OWYwMTIxZDEyNjk5OGNlMWNkODVjMjdkNDNjNmFiZDg3M2VkYWEyNiJ9" + }, + { + "resource": "repo://hub/idempotency.rst#L4-L25", + "version": "repo-lines-v1:sha256:5f66ddb7de61c6e01b69d819d5923a9f95cb0eab2a25bb351f8f8a1343111499:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjNzk0NTQ5MDhiZGQ0NTJjMDM2NzVlMWZjZDdmYzQ3NDFjNDNiZjAwMTk1MGZlZjI2ODBhYWUzMmRjOWUxNTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc2MjI5NmY5Y2Y3NWM3Y2U2NWJmZDUxMjczOTE0Mjg0ZTc3NWM1ZDgwNzk3ZjAzMDFmNDRhZGY1ODdkZTQzZTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM0M2I5Y2IzYjBkZGM4OGViNmQ2ODhmOGJkMjkyZTA3NDY4ZTZlNDU1OWUwYzgwYjRlNmU1MjY4MDM1MDZmNzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImIzYTI0YTEzY2RmYjFhYTZjZTE5Y2Q5YTViNWE1ZGFjYWMxOTVkZGE4OTM5ZDYyYzBiYjZkZTE5OGJiMTQyMWYifQ" + } + ] + }, + { + "id": "claim_9539ec11c5174a429172e5bb8d71119e", + "statement": "Out-of-sync conditions include configuration changes, recreated datasets, truncated sources, backup restoration, new joins or inputs, and deleted hopped-to datasets; reprocessing_policy continue is the default and continues without reset while tracking affected datasets, whereas automatic repairs with reset/full rescan or sometimes rewind.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L205-L214", + "version": "repo-lines-v1:sha256:7cf277abc90a23038d7b5f9d16f7f38b2bafb172e0353d21633709bd7de89042:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1ZDU5ZDQ3NGU2ZTAzOTQ3NmFjN2ZiODA1M2Y4MmQwYjNkZDI5Njc5OWQ5MWJmZDQwMTVhMjNhYWZkYjdjZTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3MTVmNzJjZDM4NDBiMjE5NGMwZWU0NGZhOWUzZDYyYzUwODcyZDQ3M2ZlMTQ0NTg3YWRlNjQ1MGQzNWI0NTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFkYzBkZTMwNmY2NTY1OWFjNWQ3YWIyZWJmNDRiODQ1ZmEyMDIxMTMxM2FlMzNjNzI0M2E4YzkyZTJhYzdhNzMifQ" + }, + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L44-L52", + "version": "repo-lines-v1:sha256:f0172db2703bd060347d503c0fdd5dff62d2032a5a3636b302a4ad8ef8bbae82:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODQ4YWM4NjZiYTI0YThhZGVmOTkyMDQ0MDlhYTEyYjk3ZDE4Mjg1MDQyNjdlNzFhNGZhZjBiMDlkNjQzZDlmNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L8-L29", + "version": "repo-lines-v1:sha256:a4b946ddb36e387d4a22d297c148b62823304265c2176c1fc46d4042a5bf3e60:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2ZTYxZDE4YzU5NzViYTYxMGJkYzNiM2M3MjE5Y2QzNDRkZWVkODU0ZmQ5MzNiOWRmMjgwMDVjZDA5MTRlMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5MmE2YzI4OWEyMzAxMGE1MTkwNGRmNTViNTljOTdlNzRhMzI2M2QwZjdmOWYzMDhmZTI3NTIwZGM2OGRjZDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ5ZDk1OWZkMGVkNDIzMTVjZjE2Y2Q3MDkyMjc1YjVjMDVkZGMxY2I5ZWYwOWU1MmNmODg3NTQ3Y2NhMDNjMGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2OGFmNDBiY2U0YWUzNTRmYmEwNDg2MmU4OWY5MGEzZWZiZTMxNjdiNjA5MjU4YjUyMzc4YmU1NTI1Mjc0Y2MifQ" + } + ] + }, + { + "id": "claim_0b85d01cd9ad4fdd9bad849bfb6e8c7f", + "statement": "Pipe rescan_when_config_changes true causes reset on the next run when automatic reprocessing is enabled, otherwise out-of-sync marking; its default is false inherited from service metadata, and it is distinct from reprocessing_policy automatic.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L217-L222", + "version": "repo-lines-v1:sha256:10af0c872eee8f7b36decb902f31876e685f98bc873c360a941aa1a6172a2323:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzYzODAwYmVjMjRkYWE1OTc2MTA4NzhmYTZhZjViNWQxZTAwY2E4Yzg4YzE1ZDQzYjdiZTUyMGZmY2NiYzhhNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGZiZDA3NmI2YzA5MTcyNDAyNjYyYjgyOGI0MDFmMWE3NDQ3NmRlYWQwN2EzNmU1M2U1MjM0OTlkY2FkZjY3NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzliZTk3ZGZhMTkwNjUwNjBmMzFlZjQ0ZTY4MTIzMmE5Yzk3YTMzOThjNGZhZTA4Y2RiZGM2ZmMyYjU4ODRjYSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L155-L162", + "version": "repo-lines-v1:sha256:6ab3dea6e9c759844cf92a9b8bed60a168b9c0bc69e0b31bb09c92650285c455:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjA5ZGVkNmZjOTZiYmE2NzU5ZjNiOTEzNWUzYzFkOTJlYzk5OTQxNWNkYjU0MDNmM2JmM2QyZjYyMDYxMGFjZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmNlYjIyMWZjZTYyNWQxNGYwMjQyNTFlYmQzNjllMGUwZTU5NTllNjgyNThiMjA4MmFiZDliMTc4MTFkYzk0MSJ9" + } + ] + }, + { + "id": "claim_36bf2278fbc8476ba09153540ee215a0", + "statement": "JSON Pull exposes populated, maximum committed offset, completeness, generation, and restore metadata in response headers; recreated datasets receive new generation UUIDs and restoration supplies restore UUID/offset, and automatic reprocessing uses several of these headers for rewind/reset decisions.", + "evidence": [ + { + "resource": "repo://hub/json-pull.rst#L65-L96", + "version": "repo-lines-v1:sha256:b9376b5575a6b933ea67418dd6b9522fcce08bcf813a0967728c2cb67de27dbd:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUwYmRiZmNiNDM3MWRmZWU1MjIxMjQ5OGU1Zjc5ODlmZjIwNzIxN2QyOTM2N2I0NzQ0YzhjNmYzMGM0NGU3M2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNiZWVkMTQ5NGY4YTY5MWY1YTNjYjI2ZDYwZTUyZGY3ODlhNGQxMGQzY2QyMjMwNTU0YmNkZjNjNWEwOTA2N2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFlZWMyZmMzMzhjZThjYTBhNDBmYzcwOWE5YTNjNjllYzU0MDQ1NTJhYTc3NjkwNTNmNGExMGVmZGQ4MDNlNTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM5Y2Q3YTZjZTk1NmE5NWE2NGZhODI1MmUyMGVkMzdjYmUxNWE4YmM4M2Y5NjRlOGVjY2M1MGMzZDg1MDE0MDEifQ" + } + ] + }, + { + "id": "claim_8ead384def9744e08f595c439480344c", + "statement": "Pump max_read_retries defaults 0 and logs read errors without retries; read_retry_delay defaults 0 seconds for immediate retries when a nonzero read budget is configured.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L208-L213", + "version": "repo-lines-v1:sha256:5e657e9067929e0c0efbb2724239145e97034e3127aeb0f2bfa639cfe5feeda1:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTc3NTIyMzgzMDhlMzY0ZjlhOTMwMzdmMDA1MWNmZDI3MjZlMjFmNmY4Y2Q1OTAxMjc3OWZjZmRhN2RjMjVlNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWE5MThlNTIwYzM4ZGZlN2RlNTRlNTg5NjBkOWY4MTI0ZjQ5NzcxNjUwYTNmNWY1MTgzZjI0MzM4MTRjMTY0YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzYyZGQ1NDRjZmQ4NDNlMjViZTQ3N2NjMjA4MjljOWViYzZjMzk3N2I1MWJiZGJmN2NjY2RlNTIyYjg0ZTAyZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjcxZDlkZGI2MTk2ZWY2ZTQ5NzJlMjE2MWNkZTI3N2VkZTkzYzZjNWQzNTA1ZjI3OTQ4MmVkMDY4MTliMzRhOCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L225-L231", + "version": "repo-lines-v1:sha256:f292e89eb47983330ccd6fd58f7ba890d0aec905d8c415439eee7dc6c6fc9631:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2EwMmQ1ZjBmZjMwZWM0YTNmOThmNDM4NzA0YzQyYmJhMjc1NjgyMjE4MzJiMWQ5OGIzMjg0MDRmYzNjY2JkZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWE5MThlNTIwYzM4ZGZlN2RlNTRlNTg5NjBkOWY4MTI0ZjQ5NzcxNjUwYTNmNWY1MTgzZjI0MzM4MTRjMTY0YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2MwMzA5MzJiMTE5OTAwMTgwYzZhOGEzMzUyNzE1MmI2NjZjMmY4MmQ1ZDc1Yzk3M2E4YjZhN2I5NzAyNWJlNCJ9" + } + ] + }, + { + "id": "claim_d9e6ec84a11f4f45b3483d6b6bbda691", + "statement": "Pump max_consecutive_write_errors defaults 1, terminating the run at its first write error; write_retry_delay defaults 0 seconds and controls delay between write-error retries only when the consecutive-error limit exceeds 1.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L234-L241", + "version": "repo-lines-v1:sha256:39f039b4337c1b8953326cb254b8921efea6c5859fac0db1d6bd77f4a78878bd:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDE4MDUyMzYyNWQ0ZWRhYjIwMmE1OTcwZWU3Y2E5ZDc1NDgyN2QzOTRjNWM5N2ZkNWMyMDc3YzAxMzFlNzE0ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWE5MThlNTIwYzM4ZGZlN2RlNTRlNTg5NjBkOWY4MTI0ZjQ5NzcxNjUwYTNmNWY1MTgzZjI0MzM4MTRjMTY0YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2EwNTdjNzViZmI5ZWUxY2M0N2VmNmEwNDNmOGY0ZDlhZGEwYTNjNzU0ODMyYjE4M2MxMzUxNjU5NmUyM2FkNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjAxYzVlMWM3N2MwOWY3YjE4MDQ2YmJjNTMyMTFiZjBmMDc4MzQ3ZjJmZTdmODlhMmU1YTJmMjQ5MjNhNzg5MCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L252-L257", + "version": "repo-lines-v1:sha256:a7d0d30a4f4cf8557cae5d815d973eb0cc4d40787091f73a66b0494ef3b80ef7:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWNlMzE2Njg5MWVjZWU3OTViMzIyMDQxY2I2Mzc5YzE5YTZlMzc2MzJiMGExMGQ5YWIyZjc3NjU4MDQwNzk2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzZkNDIwMmIzODE1NjRmMDU3NmM5NDk0MGI4NDQxODMxMzk5MjNjZTNhNWQwNmE0MGRiYjk3NGMwMzBkYTM4OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2M1N2JjMzU3YjE3YzBmNGY3YjgzYWRlNWQ5ZWM5OWNmNTJkODYyY2I1ZTY4NTU1MmJjNjEyOWRiZmRmYzJmNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTg1MmU3MDJhZDUxYzZjMjExMmE4NzJkNjdjOGU3ODljZmRlODEyZjVhNjVlZTdjZmIyMmU0YWMzZTA0ZjEyMSJ9" + } + ] + }, + { + "id": "claim_95802f09d8ec47d3a0b760f06e772bdc", + "statement": "Pump max_write_errors_in_retry_dataset defaults 0, effectively disabling write-error replay; a positive limit bounds retryable not-dead execution-history failures and exceeding it stops recording more failed entities and terminates the run even before other retry limits are reached.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L260-L268", + "version": "repo-lines-v1:sha256:90aa0b3231b04e7a00bcf55b12dc513f2448dad2c0a48c6a1ad48125bb9875bc:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGZjOTg1MjJlYjRiYzM2Mzc0OWQ1ZjhiOWFhNTMwNGVkOGQ3ZjJkNGJkY2JkMGQ3OGM4OTk3M2VjMDYxNmRjMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWE5MThlNTIwYzM4ZGZlN2RlNTRlNTg5NjBkOWY4MTI0ZjQ5NzcxNjUwYTNmNWY1MTgzZjI0MzM4MTRjMTY0YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNGM1Y2NlZjM4ODQxMjgxMGEzZWNkMTcwODRhZjAzMmE2NTU1ZjVlNjI5ODRiNjQzZTZhN2I0OTYyOTM0ZTRkYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGU3MDk5OGExMjk4NDc2M2E5MmEwOTZmM2JhNWQyZTNlMzFkODg5N2UyZGE3Y2I0NzYzNjM1ZjQ1MjgwZDg4YiJ9" + } + ] + }, + { + "id": "claim_e5c0dada248346bfa2c54c5649c7447d", + "statement": "Pump max_retries_per_entity defaults 5 and limits sink-write retries before giving up; an optional dead_letter_dataset receives exhausted entities only with active write-error retry storage, must be unique per pipe, and is restricted to users authorized to see that pipe's configuration.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L190-L195", + "version": "repo-lines-v1:sha256:03130d01638e6af896f086fd7b1c2cb61736d1e687031ba161e6758d573af745:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOThiZjAxZjQ4M2U5MDljZjU1NTJhMjMwNWUzM2VjYzQ3NDM5MTBiZDlkOTJiNGY2NmJlMjZjMThkMjk3YmRjNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjYyYzNlMDQ5Yzg5NDAyYTRjMGI3OWY2Mzg2MmVkY2Q0YmJkNTkxOTcxM2M4MTAzOWEyYmQ2Yjg5NzNmZjM5NiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L244-L249", + "version": "repo-lines-v1:sha256:284463a8272fe5bfab54ed9617bd5b53282fef4fd60c62a8387a081faca19d81:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2Q4MjcwOTJiYTQ4ZTZhMmYzY2NiNmU5NWVkODk1YTQ0NTJiNDI4NDkwYjJmOTEwZDUxNzA0ZWIyNDM5ZmQwYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODBiMjlhYjM1YTQxNmZhOWY1YTQ0Mzg4N2NlOTlmNTFkMTA2MGFiZTYyZTQ4ZjMyMjE4ZjIzZmFkOTgwNGQ3MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2EwNTdjNzViZmI5ZWUxY2M0N2VmNmEwNDNmOGY0ZDlhZGEwYTNjNzU0ODMyYjE4M2MxMzUxNjU5NmUyM2FkNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTQ5ODRjZjI3MzkzZjNmYmNlZTQwOWM0ZmUzN2VmYTdjNTc4ZDViOGMxNGEwYzBkZWI5NmZjMjdjNGQyOWIyZCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L260-L268", + "version": "repo-lines-v1:sha256:90aa0b3231b04e7a00bcf55b12dc513f2448dad2c0a48c6a1ad48125bb9875bc:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGZjOTg1MjJlYjRiYzM2Mzc0OWQ1ZjhiOWFhNTMwNGVkOGQ3ZjJkNGJkY2JkMGQ3OGM4OTk3M2VjMDYxNmRjMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWE5MThlNTIwYzM4ZGZlN2RlNTRlNTg5NjBkOWY4MTI0ZjQ5NzcxNjUwYTNmNWY1MTgzZjI0MzM4MTRjMTY0YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNGM1Y2NlZjM4ODQxMjgxMGEzZWNkMTcwODRhZjAzMmE2NTU1ZjVlNjI5ODRiNjQzZTZhN2I0OTYyOTM0ZTRkYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGU3MDk5OGExMjk4NDc2M2E5MmEwOTZmM2JhNWQyZTNlMzFkODg5N2UyZGE3Y2I0NzYzNjM1ZjQ1MjgwZDg4YiJ9" + } + ] + }, + { + "id": "claim_ee57f445519f40ae915beb43d2886f51", + "statement": "Pump batch_retries defaults 3 and limits batched-write retries only when the sink supports batching.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L271-L275", + "version": "repo-lines-v1:sha256:b1a3037ac8647c8a2d49fcb28c279467a521765ce64e97507b3fed09c081e1bf:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMwNWI5N2NkNjMwMjRhNmIzYWQ0YzFjMTc4MTVlZGJkZjYzMmFjMmRmMDRlYWY3NzY2MjUyZjdhMmI1MGExZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDNiNzA2OGVlNjAxZGFlNmM2NjllNjEyZmY4YzE1ZjhlOWI3NGJlNjg4YTFiYmYwMTcyYzVmZTU3ZjQ1ZjdkMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2EwNTdjNzViZmI5ZWUxY2M0N2VmNmEwNDNmOGY0ZDlhZGEwYTNjNzU0ODMyYjE4M2MxMzUxNjU5NmUyM2FkNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmFlMmQyMWJkY2IxY2U0ZWViMmZhYzBmOTMyOTRkNTdhZjE3N2FiMjkwNTRkYTk5OTUyYWE1ZDYyZjI2YTNkNSJ9" + } + ] + }, + { + "id": "claim_5fe8b7a544a24b43aae7015fddf687fc", + "statement": "Pump fallback_to_single_entities_on_batch_fail defaults true and makes a failed batch eligible for single-entity-at-a-time processing, which can be disabled when that cost is prohibitive.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L278-L283", + "version": "repo-lines-v1:sha256:c002bba064ebcd9c9722011af0826a54fb2216303fc7fb3f01c8896ab3ac4325:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmEzNzE1YjQ4ZjE0NGM4ZjQwMjNhZWZiM2ExYWI1ZDEwYzAxNzRlMjFiNmYxYWJlY2U4MmQyODQxZmM2OTNiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmQ5OTlhYjkyY2MyM2RmMDY2YzdiZjQ0N2RjY2I1YTVmZTRkZmM5YjIxYzM3YjQ1MmEwZWFiYWQ3NGI1ZWZmMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjU4MDJkMDFiOTVlYmE0MDkzNWUxMzg4Mjg1MTE4MjY4NzNhNGRhNDY3ZDQ3MzQ0N2VmNjc1MjJlZWQ3MjQ5NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTk2OWQ1MWQ0YzljOGZhZmNlOWY0Nzk4ZjNlZDc4YzQ5OGU1MmViYWRjMWNmMTNmZDQwMDA5MzQwYThiN2YwNCJ9" + } + ] + }, + { + "id": "claim_45104639de8a4546ab353970c317d4b5", + "statement": "The retry dataset is pump execution history, documented as system:pump_execution:, where write errors embed failed entities and can be retried in later runs; successful newer source versions can resolve older failures and make them non-retryable.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L24-L25", + "version": "repo-lines-v1:sha256:5367bf2aae36d7ca8b3b6b3324f8da4def00392cae9900a49955b8d2aa4e92d7:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTI5MWE5ZGFiMDYxOGQxNGUwMmNjNmE4ZTk4ZWYzYTUzMzdjZWEyODllYjFhNGYyYzdiZjkxZDhiODUzY2I5MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYmEzYWU4NTFmY2I0ZGMxMjI0NjhlMTYxMThhNzM0NDkzZDZiYmU0NWI4Njg1NzgwZTA0MDVjNGQyZDhiNzNlOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTM0YmJjOTU1NDIxZjFiZGZlYjI3NThjNzQyZTAxYWUyZWQzMGI5YzMxOWY5ODU4MWRhZGVkMjhmMzhlOWQ4NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODNmOTEzZTAyNTgzMTIyMjI2NDUxYjhiMDU5ODA5YWNhNzIyMmFlYjk5ODk1ODJmMmIzOWY4Y2Y2ZTcxNmI2MyJ9" + }, + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L395-L397", + "version": "repo-lines-v1:sha256:9c257d34959c7131db99cba1ac4f58bf0d111ee371e2a6ae0825aecafd106905:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWQ4YTYxODY1OWU1MWVhZjg2YzU5MzI2ZWYxNjYwYmU0YzVkNWFmY2FlMjZjZjk4MTJhOWU1ZWNiY2MxZTk0OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDhjNjRlYTk1YzRhZDg4MWY2MDdhYzdkMDhiOTQ1OTNlZjZlZDJjMTEzMTA3M2U4MDY0NDVlZWYzMTE3YzYzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmMxYmYzZjE3ZTkxODg2Mjk5YjNiZWU1MzA3ZDRlNjBjOTM4NGE1N2JkZjkzODljZDMxNjkyZDgxOTlkNmFmOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjdlM2NjOGZiMjE1ZDM0NTk4MDRlZDQxMzlmOGUyMjFmNGNlYWM3Yjg0M2Y4OTU4YjlmYjhiNDBkNzVlNGNhMyJ9" + }, + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L468-L480", + "version": "repo-lines-v1:sha256:e0ae083fa86e01d3fe64e1d8582b8412ebbf348ca7a93df9e18a2b3782463b86:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNjOTAyNDcxODQxZWVmZjdlYzUzODc0MjE3ODE4NjRjYmZkNWNiZTY1NDk5NTE0ZTlkYWM2MzVlYjBkMzNhN2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxZTY1N2RhMDBmYWEyYTk3Y2YyMDdiYWRhNGFjZmEyMTUyNDU3ODM4MGMyNDA2NTJiYTUyODFjOGMxZjBhYjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI0ZjQ2MTMxMDZlNjNiNTI2YTI2OGViOGNiNTgxNmQ1ODQ4NjZjNWI4NGIxMjkyNjJkM2RlNTIyMjRiMGI5MzAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmNzVlYmU3NTViNGJkMjNiYjlmNmMxYmZhODA3OTdlZGI0NzZkZjdmNjhjZTYwMTY5YTgyYTg1OTI4MGYxY2YifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L6-L11", + "version": "repo-lines-v1:sha256:e4438d6c78f02bb8733dc5f3386246a7f2cd3df0c70d20ba92f3218fe3360be2:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGExMTA0Mzc4ZmYzZjg2MzhlYTI1NzU2YmUyYjZiNmVjODM5ZjUyMWFjYjI0NzU2NDg3YzUyZDA3NzE3MmZlMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjYyNDVhYTRiZjg3ZTc0NWFiNzZlOTcyN2RhZGFkMTE4YTZmNGMyYzEyMjc3YjZiODU0YzAxMDNhNGI3ZmVmZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWEzYTVlODc3MDg1OGE4OWU1MjEzNzkyMDQwMzY5NzY2MjliNTM0ZTI2Y2E0MDI2ODYyNjBjMzdkOTI1MDdhNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWNjMGUxM2U5MzYzNmZjZmI5Njk0NTU1ZTY1OTllMjBjYjkwY2NmZTRkOWNiNmRjZjRmZDRhMTczNWIyMjVlYiJ9" + } + ] + }, + { + "id": "claim_5d49e29919f242e6bb76f1d36333c3f1", + "statement": "Execution-history failures marked dead are given up on, optionally copied to the configured dead-letter dataset, and never retried again until a new source version arrives.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L482-L487", + "version": "repo-lines-v1:sha256:09f03bac9685a2146d439193963ee17944bdb8026c603cd088b0225424df2b6f:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWNlNmNiZTE0OTY2MjA3NDBlN2YzOTg5NjVkYTQxNWFiYTE0ZjRiNjE4MGE5YWVhNTIyNDQ2MzNjNjZmMmQxMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM4ZTRjYTc1MmJjNzM5M2NlMjliOTFlYzkzNTkxZWEyMjQwOGVmZTZiOGM4NDk1NTVjYmZhMTc4ZTVmYmVlZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDQwODY2Mzg0MTdhMjRjMmE2ZTZiZmM0MWIwYjY2NWI1YzJiYjk0YjMwODExNTFiMWIzYzE4NTRiNzQ4Y2RlZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjk3ZDM4YThlMWEzMWJkODQ3NDk0MDkzNjM2OGQ5N2MxMGZiNzk1Njc3Y2JmMmZmN2UzNTU1MTY4NjBjMGYzNSJ9" + } + ] + }, + { + "id": "claim_3a89a31787204c04b32d8afcfb905a48", + "statement": "track_dead_letters defaults false and is documented to remove an earlier dead letter after a later successful write at the cost of execution-log lookups; its documented activation still requires deprecated use_dead_letter_dataset plus active retries even though dead_letter_dataset is the replacement destination setting, so modern-setting-only cleanup is not established by this documentation.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L179-L205", + "version": "repo-lines-v1:sha256:59d4f0313ee047a6f79e0b26f201e4fb80b2fe73918d85e7965073895a79fedd:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMyMWViMTI5NzkwNzg5NDg2ODM3ZTU4YWVjYzM2M2I4NmM5MWI4Yzg5NzEyYWY3NzI5ZWY2NzU0Y2E5ZDcyY2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwMTU2ODMxN2JjZTUzOGJiNDEzZTlkM2RlMzM3MDFjMmNjMGE2M2JjNWYzYWZlMjllMjFjOTMyZmM3MGE5NGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM2MmRkNTQ0Y2ZkODQzZTI1YmU0NzdjYzIwODI5YzllYmM2YzM5NzdiNTFiYmRiZjdjY2NkZTUyMmI4NGUwMmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmMGNjZGFiZTJmYzE3YWI3M2FjZmRmMTI3ZjE4OWZkZTExZjUzYmM2MTRmYmQ4MGM3MTEzYjkwMTI4ZTViMGQifQ" + } + ] + }, + { + "id": "claim_b316bcbc65b947b88055d6094c90f4f9", + "statement": "Execution history exposes full, partial, and incremental sync types, completion/failure records, retry existence, and entity success/failure counts, but its entity structure is explicitly not a stable public application API.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L188-L214", + "version": "repo-lines-v1:sha256:6483ec8b6b49153baa0e9206d375414056e2a76bfab6120e9a1c785553fbc6a8:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFhZTgxNDU3YWNkNDZlNTEwOWZiNDhiZWExYzBhNTg5ZTU3ZGU0NmJkNzdmOWQ5NjMxZDcwODk1YzU3MjY4NjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNjczYWJkNDU3YTk3ZWVhMTdhNjAwNjJlYjBmYWVhNmJkZjA5NDg2OGNjNmI4ZjhjMGViZGEyZjYxZWQ0MmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMzYzg3MGU0M2VmYmQ0MWU4ZDA2MjBkMjdlNjY4OWRmOTQ4MjgxYmU3OGE4YjhhOWZhYWI5MDI0NWUwOWFiNTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlmNjBlMTg5NzQ2MTgyZTVmOTAwNTM1MzUwZjg3YTA3OTJjMGFmYjE5M2FhMDEwNGE5ZmQ1ZWJiNWQ3MzhkNWMifQ" + }, + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L75-L78", + "version": "repo-lines-v1:sha256:69d31bd1502b143b957e17075d475e78705015b0cbcd7b68fcbd8d9f5a555066:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTFlYWI1ZmY1NjlmNWM0OGM4NmNlZGQ2NzlkM2UxNGFkMTFlMzVlMGQ2Y2VkOTU0MzI4MWZkZWU5NDA4Yzk4MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTU5NjkzY2NkNmRlZjYwNWQ1YWRhZmMyYjc5MDc1MTQwOGZhZDA5NzI0YTRjZmFjYjI3ZDdmYTQ4NWFkYTc4NiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDUwZTEwMWEwMzA2NTg1NDU4Y2VmZDY4MzExZDg0MzNlNWEwMDAwMzA5ODkxMDBhMDU0NTAxNWU4NTc2MWI2NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmYwOWQzNGEyM2EzMmM5MjE4M2JkN2I5NDBlNzM0ODQ5YTc4MjA2NTBlM2U5YjcwZTQ5ODk0MjYxMzk0NTk4ZiJ9" + }, + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L9-L13", + "version": "repo-lines-v1:sha256:7ee06b44f7bc0d1e9f39ea7edacde32ae4d65ae8b6b5bb6acab341816a298d83:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTAwNDAxMjJiMjNhMzk0YjI2ZGE3YTdjODBkYTZhNTE4ZmE3Yzk0MjI5ZDJmOTk0Y2E2NWRjYjg5NGY1OWIwZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzQyZWNmYjE1ZGJlOTFmNDFkNWIyYTM5OWNhODk0NWQ5ZWNmN2NiYTYxNzc4ODBiYTVkYzQ2Nzc3M2Q3OTNmMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjZhYTJjMWIwMTBhOTgxYmFhMjQwODZjZjZlMjBjNDFiZmFhZDE3ZjJiZDk5YmI0MDVmODc4ZDI2ZjdlN2ZkOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDllYjY3NDBiMmI5MDM3ODA2OWM5YTE0ZjlhZDEwNzUyMzY1OTViNDUyOTI2MTU2YjAxNDNhMTU2ZGYzNjhkMyJ9" + }, + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L96-L117", + "version": "repo-lines-v1:sha256:4417dee54ec443d84ea0ea679984b1f6ab1472263c2938fbbe01597ec5ea5788:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE1MzE0ODZlM2Q5YjAwZTA4NTNhNmQ0YjcxZjgyZjkzYzM3ZWVmYzg2ZDE1YWFmMTZkY2YwODZkYWQzY2NjZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFhYWE5NGEzMDE3MmM1ZjhlMzcyYjRhZTUxMmExMWJjYmUyMDIzMjkyYjlhMjQzNTc2M2IxY2Q5YmI4OGE0YWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2OGFmNDBiY2U0YWUzNTRmYmEwNDg2MmU4OWY5MGEzZWZiZTMxNjdiNjA5MjU4YjUyMzc4YmU1NTI1Mjc0Y2MifQ" + } + ] + }, + { + "id": "claim_6ad6946ab15c47aeabfc35006c505461", + "statement": "log_events_noop_runs defaults false and suppresses no-op history logging, while log_events_noop_runs_changes_only defaults true and classifies no-ops using sink changes rather than just source output; any errors or retries imply logging.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L301-L318", + "version": "repo-lines-v1:sha256:501374a3976ba19513aa8adb365a53490b36e930b183250965efc20ae7c6ad10:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI2NmRjNmFhMGI3Y2QzMDdkMTQwM2U1MGVkMTc2NmU3NDQ4MTdiNTA4YzNlNWY4MzMwNzRlMWE0YzYzZmI1YWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJkOTk5YWI5MmNjMjNkZjA2NmM3YmY0NDdkY2NiNWE1ZmU0ZGZjOWIyMWMzN2I0NTJhMGVhYmFkNzRiNWVmZjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM1ZjRkZTE2YmEwYWI2NTE4NmJlMmJmNjVlMDM2Yzg4ODAzYTBjNmZhOTAxYTAyYTU1NzJlY2FjNmQ1YjgwNTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFjMmE1MDlmN2Y2OTZhMWFhZmIwMjdhNzhkODI5NWJjMmFlNGRjNzk1ODZlMzYzMDZlYjU0ODk4NDdiZTFiODAifQ" + } + ] + }, + { + "id": "claim_62d9e729b6e84e368ab347280898a804", + "statement": "A dataset-sink circuit breaker trips when writes in a run exceed a configured limit, but activates only after sink population to avoid tripping on initial synchronization.", + "evidence": [ + { + "resource": "repo://hub/features/circuit-breakers.rst#L8-L16", + "version": "repo-lines-v1:sha256:7de4562bdb9889717bacdeb7b24e9a3ab0fae29c153050028e74d61b7268abb0:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTg5ZjAwNDVjMWMyNTNiZTM4MTQxOGE5ZTY1YjJiOWM4MDg4NWQ3ZTJhZmJkZjVjNDFjZTVhZmVlMGNhMDNlNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGQ1MDk3Yjk3M2Q3ZGEwYjk1N2U5OGMzZGFiZDRkZWYyYWI2ZTM1YjI3MWU3ODkxYzI3YzIxNGViNTQ1Yjg5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTMwYmI1NjJkYTY0NTdhZjY1MDljZDI1MGYzYTM0YThlOWRjNDEwOTA2MzlhNDk1ZWQ1ZWUwYjZiYzg1Njk5NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWQ2OTlmYzA5YTczMjQ3ZjFjNDc4ODViNzhlZjc1NTgwZWVkMDRhZWFhN2E3NWYxNTRmYzFhMGFmMzE5NjI4YiJ9" + } + ] + }, + { + "id": "claim_64a0236ef65540e89dfa43cf999f07ee", + "statement": "Dataset-sink circuit_breaker_threshold_factor and circuit_breaker_threshold_count default null; the factor uses unique latest entity ids including deleted entities, and if both thresholds are supplied their maximum defines the limit.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L112-L138", + "version": "repo-lines-v1:sha256:fbcfd58b76cb9f5b0df87db4c737107f7bc1136c7b3b831fea7aeba8eb3d038b:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg4ZTJjMjI2OTY1ZWQ1MjEwNWNmMWRhZTZiZTVjYmFkMjk2MTUwNDI4NWY2YWI0NGM1ODIwOWNjMDVmMjZmYzUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcwN2E3Nzg1NWU4YmVhODllOTRhZGEwYzY5YzA1YTEwNGM2NDdjMGNlNzc4YTc1YzViZTgyZDZjOWYwZTc0YWEifQ" + } + ] + }, + { + "id": "claim_28af56cdffb249e892b4c5270a83a0df", + "statement": "A tripped dataset circuit breaker prevents pipe runs, compaction, and reposting to that dataset until recovery.", + "evidence": [ + { + "resource": "repo://hub/features/circuit-breakers.rst#L18-L26", + "version": "repo-lines-v1:sha256:c03eb87fa9f99773dc8f2385536eaf373a5c1cbdd63f44acf1a02ade6f9cc373:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTY0YjA5YTdhOGI5NzQ0YzYxMGIwZjNmMjNmM2Q3OGVhMTBiNWI0ODcyZjA0ZGI5Y2M5Zjc5YzA3ZjRlMTNkNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYmI0YzE1OGUzNDVlMmFjYjAwMWQ3ZWZhYWU5NDFiMmRkNWFmYzJkMjBlZGRlNjUxZDJjYWJhZWE3NmRjNGY0OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmE4ZDU5ZjE5NDk2MjljYWJmN2VlMmU4MDk1MTI2ZGY4M2E1MjU4NDU5ODk2MzNjYTlmYTg3OWViYWU1YTAyNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGE3YTVkMzViN2RkOWIyOGQyNWU5NTJiNDhhNTA4MTg0M2Q0ODM0NGJlMjM0Y2YxZTMwN2Q1MDk3MTc0MDk4MSJ9" + } + ] + }, + { + "id": "claim_d3123abcb98846b496256d12b8920730", + "statement": "Circuit-breaker rollback deletes entities written during the tripped run, while commit exposes uncommitted entities; both reset the breaker and are available from Management Studio or form POST /api/datasets/{dataset_id} using rollback-circuit-breaker or commit-circuit-breaker.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L12-L17", + "version": "repo-lines-v1:sha256:797d461a977f65aed7dbf919251b5566beabfb7936ecf4c65855ae19b6cf035a:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTczZjIxZDUzMTFhOGM5YWU1ZDYwZTkwOGM2ZjYzZGZmOTAyZGRkMzM5Y2ZkZmY3MWQ2ZGNhZTU0NDMyNTI1YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZWFmZGQzN2UzMzJlZDIzNTk4NmNmMzhlZWM4OTEwYzlkZjQ5ZTkyYTYxMjE1YzBiZWYyMmE2NGRiNDc1YzYwYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWUyZmViZTZiM2E5NTdlZjNjNTNkN2VjOTA0NWRkODQ4OTI4YWMzNTJhZDI3ODUyMDMyZjljZmViMDkxYjMwMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjY2N2YzNTlhZDU1NDQ0MDExOWJmYTVhOTg0NGFmNWNlMmMwMjc4YzE1ZDJmN2Y3MjZmZDhmNzZhZTE3YzQ4YyJ9" + }, + { + "resource": "repo://hub/features/circuit-breakers.rst#L18-L30", + "version": "repo-lines-v1:sha256:8e15d59983bb8d0444a01a6b6664d5377235eb4d60b3aa869e4817833f3c4653:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2NGIwOWE3YThiOTc0NGM2MTBiMGYzZjIzZjNkNzhlYTEwYjViNDg3MmYwNGRiOWNjOWY3OWMwN2Y0ZTEzZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlYzczZGU2MGU1ZDBhZTY3YmYwNzAxOTg5MTc2YmRlODU3ZTE1MjM5NDdmMWY3YjY4ZTcyOThhNjJhM2I3ZmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhOGQ1OWYxOTQ5NjI5Y2FiZjdlZTJlODA5NTEyNmRmODNhNTI1ODQ1OTg5NjMzY2E5ZmE4NzllYmFlNWEwMjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEyYTQ4NTlhMDQ5YjAzYmQ3NzlhOGI1MjBkOTJlZTY1NzljZjNjNmQwMTgwYjFjN2ZkOTk1NDFiNWQ3NzlkYzIifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L786-L807", + "version": "repo-lines-v1:sha256:d11b4157022fdf0fa33f2d16cb3355670c8c1fda713ff1561d7e569303bbb040:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2ZWFhMjhhODgxZWFjYTE0ZDY5ZGYwZGZhNWVlOTBjNTliNjZmZDI0ODRkYzJmODY4MDgyZDliMzM1MTRjMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhYzE5MGNhOWM3N2U2YzQ4OTQyNTliYjkyMWI1NWU5MGU1ZGZmZTA0ZWViYzFmOTg4YWU0YTViYWRmN2I5MDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhkMDhmMmYwZTE3YmJkODc0OTlhNTlkNDc5YTI0ZGY0NTU5ZmIwY2U5MTcwMDExYzhlMTc0YzBkNDAzY2E0ZmIifQ" + } + ] + }, + { + "id": "claim_0c29c7d77b62448fafcf685b64738fc7", + "statement": "The dataset-write circuit breaker is distinct from global_defaults.use_config_circuit_breaker, which guards configuration uploads against deletion of more than 10 percent of existing components when the count is also greater than 10.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L199-L202", + "version": "repo-lines-v1:sha256:ba8bc6b48a37e5c97db2d328827a23034037997189636f05fdbc4094e5065fe1:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2RmNDFiOGE5MjcyNTQxMjA3OTJkODhmZDU0M2YwMzg4YTc3MDRkODkzOTczYWIwZjU0ODgyNjJlYmIyY2I4ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzY4ZDViZDk4ZGZhMWJlN2U0ZjQxNDE3YzFlNDFhNmY1NTZkMzgzY2E3ZDNjZjI2YzQ3NTZmYzYwZGQyZDNjOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDJjNDFiZmIwNWNmY2I4NDRjNDY0ZDc0YTAyNTZlM2E0NDhmNmVhZTY0ZWZlOGRhMTI3NjU3YzVkMGQ1NDNiOSJ9" + }, + { + "resource": "repo://hub/features/circuit-breakers.rst#L8-L11", + "version": "repo-lines-v1:sha256:c6c2ec1de321d872f2f913eeef02a7546a95daabc683a9bd1ba54a58ba7aa077:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTg5ZjAwNDVjMWMyNTNiZTM4MTQxOGE5ZTY1YjJiOWM4MDg4NWQ3ZTJhZmJkZjVjNDFjZTVhZmVlMGNhMDNlNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjNkYjFiMmI1ZDU3ZDdiNDFiOTZiYzcxYzliMTJmYWQwMzM3MWZlMDRjZmQwNWM2ZWMzYzlkOGQ4YjYwZmJlNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTMwYmI1NjJkYTY0NTdhZjY1MDljZDI1MGYzYTM0YThlOWRjNDEwOTA2MzlhNDk1ZWQ1ZWUwYjZiYzg1Njk5NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGUwZDY5NTRmNzQ1Y2M4NzA1MjM1NmFiN2YyNzY5NDQ5NTA2YTA0OTcxMzA5ZDAxZGNjNDA1YzUxNjU2ODQwOSJ9" + } + ] + }, + { + "id": "claim_18e832f785dc4c4a91c9cfd819bae3b0", + "statement": "Documented local configuration testing uses expected output and .test.json files per endpoint pipe, drains pipe queues with outgoing writes disabled or unable to reach real systems, and runs sesam -vv test to compare results.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L21", + "version": "repo-lines-v1:sha256:d728920650b733582762cd2916dd09f6f0f0af185fdda8c3774bd133cdd1ef38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + }, + { + "id": "claim_6a8d3a9498a046eda7ed338e2860e321", + "statement": "Configuration CI requires a dedicated test node, serial test execution because configuration uploads overwrite shared state, and isolation from real outbound systems including omission of their connection secrets.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L7-L22", + "version": "repo-lines-v1:sha256:81b97600d1a11a87e4d614dec70be22441d2ef3700e558ebea7fc43c37265492:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5NWQ0OTIyYjgzZGRlZTFkODI2ZWNhNWFlZGYyNTUyNTVhYjZhOTlmYjljZTBhNTcwYTE4MTFlNjZmZDQ4ZGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk2ZWExOWRlYWQ3YzQ2NzExMzJjY2Q3NDM5NmZmZjFiODg3NTQ4YTkyYzdlNzQzYWRkZjlmMmE0Y2M3MmQ0MGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU4MjMyOTcxYzUwMTJkZjU1ODc2MDZiOTRlMjVhOWI0Y2VlOTA4NDQ1MzUwODlkNTEyZjkzMTk5YjA0MDQwY2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQwOTE0NjAyZThjNGJmZDI0ZTVlODRiYjdjM2NmMDg1YjIxYzZhMTQ0NTk4MjAxMjIyMzRmZjhlMWEzMTk1ZjcifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/integrations/apis-and-repository-handoffs.json b/openwiki/.claims/integrations/apis-and-repository-handoffs.json new file mode 100644 index 00000000000..194f7f13577 --- /dev/null +++ b/openwiki/.claims/integrations/apis-and-repository-handoffs.json @@ -0,0 +1,1050 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:5278acea38c54b9af2f30eb0d1919ca9e41fabe32a87c8a00513b03ec8964537", + "claims": [ + { + "id": "claim_51763f263f18442b9dc8b47b18ece723", + "statement": "The Node API controls instance configuration, data and runtime resources; Portal manages accounts, subscriptions and JWTs; Management Studio is the selected subscription's configuration/administration UI, not an interchangeable backend API.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L10-L20", + "version": "repo-lines-v1:sha256:2b0dfaa70c6101b550419fcfa76cdb41f3f0d33fb46a65e8181904f073f16263:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2MGRhMTJiNTFlZDQwYmIxZGE5ZWY2NDUwMjFjMDY3Yzg2MmM2NDE5ODljOTY1NWY4Y2FmM2I4NjZjY2JiZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI0Y2VmMTRmZDIwNDllZWMzNjJiNTVmNWE3N2I5ZTNiMzdjYWI0YjA0NzUxZWQ1OWY2OGNlOTM5NDQyODA5M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdiZWY2NmU2N2FlNWFkNWY5MWRlMDc4MDQ5ZGY3ZGY4ZDhkMWIyMThlZjk1MzEyYjM4NTgzZDQ0YWY3NzdmZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ1MWU2YmExYzAzOTdkOGM3MzI5MDNhY2E0NWE4YmVhMjNiOWUxMjkwNDg1OGRkMzllM2MwZDBlZDI3MTRlOGIifQ" + }, + { + "resource": "repo://hub/management-studio.rst#L9-L16", + "version": "repo-lines-v1:sha256:f77cb8d92961bfac8b28b4876fbeea9590d99695c4fa837b99aaeb7aa33ae419:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2ZhNTNmYzBkYWI4ZWY5NmQwNWQ4ZmQ0YzdlNDFiNDkwMTgyODAzNzI1YzY3Yjg2YTUzMWUwOWVmZmM1ZmE3NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzg1ZGZkY2VkN2M1ZmRjM2FmOGVmNjQzNTA4MjVmNmNlZTUxYzQ4NzAwNjllMzg1MmY4NDFlNGQwZmNjYzQ3MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDUzYzQwYmIwMjBmOTQwODViMjg4MjZhNjFiMjM5ZjMxNTM2NmM4ODg3ZjkyOWY3NDE2MGMwYzQzMjliOTJkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzRjOGQwNzEyYjY0NGM0YjE3NDU5MDc3ZmFjYWFhNThmYjgxOTQ0MDk3ZWY4Y2YwZDY2OTUwOGNmMjVmMjVjOCJ9" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L145-L449", + "version": "repo-lines-v1:sha256:844d2585aa8678b232bd8339edf24383f94b8b0ecbea0d54f2948628845e6a16:eyJzZWxlY3RlZExpbmVDb3VudCI6MzA1LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJmMzU3MjM0MjQ5NzlkYWY2M2QxMGFkMTFiYWJjYmRhMjFmMzM1OGRkZmNlZWFkZGFhODAwYTY4ZjZjOGIzMTY0IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJiNjUyZmY1NmZkZjczMjQyZWEyZGQ0NDEwZWYyNGU2YTZmOWFiMDJlMmQzMTU1ODIxNDc1N2MzNjNjMTY1ZjA3IiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI5YjhmOTNjNmI2OWYxMzhlY2UxMGJkYTU2NjM0NWY4YjEwN2Q1MTI2NTFmOTFjZTEwNjdhMDNlNDI0NDVjOGIxIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiJkMjk5MjNkMTM5MzFhMGYyMDQ4YmE4Y2I2MTdhMDFhYTg4YWFmN2IxOWM0ZjYzMDc5NWFhZTE2ZTI3YTQ3MTJjIn0" + } + ] + }, + { + "id": "claim_7ae808d2ccf84a10ab3404517b0ba506", + "statement": "Node paths such as /pipes are relative to the instance API base ending in /api; Portal paths already include /api except explicit /.well-known/openid-configuration; DAP paths are relative to the DAP host. All three local Swagger files declare Swagger 2.0/version 0.0.0 without basePath.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L10-L20", + "version": "repo-lines-v1:sha256:2b0dfaa70c6101b550419fcfa76cdb41f3f0d33fb46a65e8181904f073f16263:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2MGRhMTJiNTFlZDQwYmIxZGE5ZWY2NDUwMjFjMDY3Yzg2MmM2NDE5ODljOTY1NWY4Y2FmM2I4NjZjY2JiZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI0Y2VmMTRmZDIwNDllZWMzNjJiNTVmNWE3N2I5ZTNiMzdjYWI0YjA0NzUxZWQ1OWY2OGNlOTM5NDQyODA5M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdiZWY2NmU2N2FlNWFkNWY5MWRlMDc4MDQ5ZGY3ZGY4ZDhkMWIyMThlZjk1MzEyYjM4NTgzZDQ0YWY3NzdmZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ1MWU2YmExYzAzOTdkOGM3MzI5MDNhY2E0NWE4YmVhMjNiOWUxMjkwNDg1OGRkMzllM2MwZDBlZDI3MTRlOGIifQ" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml", + "version": "repo-file-v1:sha256:98bb8937f96c2b5b73d1b0fa6bd4f43e02cb3377c52dc869c1a8f2d5090cbb71" + }, + { + "resource": "repo://hub/swagger_portal.yaml", + "version": "repo-file-v1:sha256:a5eacd8d653d58c81e0ff125e2f60c987eeffc9d7402694688eb340e1c3d9519" + }, + { + "resource": "repo://hub/swagger_public.yaml", + "version": "repo-file-v1:sha256:28f843da91545e5545adeab21dda35769d904904796495dfee6c676e696c2cc1" + } + ] + }, + { + "id": "claim_8cb7b627937f4dac9ba74ea2109b09d5", + "statement": "Service API renders checked-in Node and Portal Swagger copies and separately points to running references at the instance /api/reference and https://portal.sesam.io/api/reference; narrative examples are not additional Swagger operations.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L19-L58", + "version": "repo-lines-v1:sha256:d960ef4b471e685b2ae751871303870f1f6bcf93ef597252322b19747dff0e7c:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEzYWE5NzBlOTY1ZGQwOTFjYTUyNGIxNGE1ZjJjMmVkZjdiOTc1NDU2ZDJmM2U1ZGY5YzBiNDFhYTY3ZmZlNjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcwODAwNzllOTgwNDFhMzVhNmEwMDJlY2U0OWUxYjdjZDZjNzM4ZGVmMGJmMTU3NDY0MGU5OTM5YzgxYmFhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZjZDVhYzRhODE1ZWE3NDMzMzI0YTdkODRmNjU0ODQwOGU5YzZlMGI0MjNlMjZiZjc3ZTkwMGQ0NDJkMGQ3OWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM0ZDFjNDM4NDc0MmY2NjYwZDRiYjQ1NjhhY2M5MjE0NTM5NWUzNWFlZGNmY2FiMjMwODcxMTU3MDY2ODMxYjMifQ" + }, + { + "resource": "repo://hub/api.rst#L223-L244", + "version": "repo-lines-v1:sha256:c0af2843737b66421b0bb7625489f28ad075526062eec5316b67169e555f5b23:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ4ODg5ZDM4OWU4Y2FiOWFlMWZiOTdlYzRhOTE3ZDBhZTIyYmM2NDA2ZjhkMzg5Zjg0N2NkNmFiYzA3MWE4MWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZlMjg5Y2QzOWE4MDEwMTg0NTMwYTczNjdkZjAyOGIxOGEwMDk4NWM0YzBjNzFmMzUxMDYxMzg1OWNiZTI1MjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjExOWYwZjQ1YjcwNmJmMmE5NTE0MTBiMTE5M2UzODhlNTViOWIwZWNiZjk5OTY0ZjQ2ZmE2YTM2ZDM5YTdhNWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhlZWY0ZDA2ZWY2YWIwNzk0YzNkMzViNTAzZGQ4MzdlMGMwMGRiZWQ3OWMyY2Y3MGM3Yzk0MGQ4NzZiMWNjYjAifQ" + } + ] + }, + { + "id": "claim_0176f7d66fea44f6be2516dc862783e6", + "statement": "The narrative instance POST /api/jwt example has no /jwt operation in Node Swagger; email/password JWT issuance is specified in Portal POST /api/jwt, leaving deployment-specific instance routing unproven here.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L30-L58", + "version": "repo-lines-v1:sha256:3fe98ae58ad1a5fa3d8f12fa3d039d2ab33f146c0ca98569c0048b554fbcd0d8:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjNTFkOTMxNTc2ZjU5MmE0YzAyYjg0MWViN2M3YjEzN2U2ZWEyMWJkZWNhYTA4NzQ1Mjk1ZGIyMTMxZGFmZjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcwODAwNzllOTgwNDFhMzVhNmEwMDJlY2U0OWUxYjdjZDZjNzM4ZGVmMGJmMTU3NDY0MGU5OTM5YzgxYmFhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU2MGE2MDU0YTFhZjFmNGExNGU4MWI3YjMxMmJiMGIwMTYwZjAxYWQ2MDBlZDYxZmM2MmEwM2Y2MWFiOWU3MzciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM0ZDFjNDM4NDc0MmY2NjYwZDRiYjQ1NjhhY2M5MjE0NTM5NWUzNWFlZGNmY2FiMjMwODcxMTU3MDY2ODMxYjMifQ" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L256-L315", + "version": "repo-lines-v1:sha256:b9620504c6b135cb45ddefb3fcb7169e02331efd85c05a45a5cf5d6d132406d4:eyJzZWxlY3RlZExpbmVDb3VudCI6NjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE5YmZhYThlOTdlMGM3Nzk5NDE0ODMyYmNkN2RjNzhkYzM2YzQ0NjhlZWEzNjQ4OWE4MTM5NjVjNTIwYjUxNzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNjN2I1M2IwOTg0Y2RhM2ZjODI5ZGViNGE0NjJlNmI0MDNmNDVmZjQ5YzRkMGU4YjRjMjA3ZmUxMDc5NzQ1NTYifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml", + "version": "repo-file-v1:sha256:28f843da91545e5545adeab21dda35769d904904796495dfee6c676e696c2cc1" + } + ] + }, + { + "id": "claim_889744c85e5a4766b71f83cbb35ac432", + "statement": "Node Swagger includes routes with api.view_utils._not_in_use_ IDs and sparse schemas such as Pump; those identifiers and omitted media types/error tables do not establish route unavailability or complete runtime failure behavior.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L2401-L2500", + "version": "repo-lines-v1:sha256:21af650460197849c77e7f19db398493aaf0ff96590675aa73a06b9e4cfa9cd3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAwLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJjNWYwYjViMzFmMzVhZjdhMzYyZDdiOThjNDZmZDdkODFkYjljYmQwZjMwOTgxNWY2NmUxOGM4OGM3OTZjZDljIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI4ZTNlOTgwZGM3ODIxOTRhZmZlYzE5NTA3N2NiZmUxNzk3OGNiNGExZjEzZDQ2OTc3ZWRmZTk0NDNjZGM0NGYzIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI2NmNiMDk2NWFkZWJlMDk2ZDJiYzEwZTE1M2YwNGE3YTdlYzQ3ZDFhNWNiZTA3YzE0MzMyZDI3N2UyOWU3OTI4IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiJhMGM3YmMyYTgzNDZjYTMzZmQzNWFkMWU2NDg0MzhiMDRiMjdlMWQwYjk4NWE4ODFkNTY3NTdjNzUwNmY3ZjJmIn0" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2820-L2822", + "version": "repo-lines-v1:sha256:fbe3b15537412df2ad51be180d6c500f875b03014e36688d40193dab4804e2aa:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTE3MjUwZDI2MDRjYTQ4NDI1N2ExMTg0ZTkyODRkMjg4YWVkY2JlZjdhNDA5ZjM5MjZlMWUxZGZlMDY4ODRlZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjAwYTAxZjE0OTcyMjM3ZDU1ZGQ3NWVjMTVhZmJmNTVlOGYzZTE1ZDg4YmYzZmFmNjI5ODU4YTRkNDhkMjZiMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjI4ODlmMmRlZjBjOTkyOWIwMGQwMDJlZThjMTQyYzNkMTk0NDIxNzUxZGE5MDA4NDYzMTBkZTFjZGMyZGVhYiJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L305-L350", + "version": "repo-lines-v1:sha256:d8e504d0cbae681e1590228a8e528185de3c751afea1126f85f494b14988ce07:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxNmY1M2VjNGNlYmI0Yzk3MzcyNDJjNjkwNjdkZDcwNGFmOTc5NGFlZGExNWE5ZjA0NTUyMWJiMzA2ZGZlZmEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNmNTZlYmE1YzhmMzY4YjI2OWFhYjU5MmEwM2MwNDA0MTVhN2UyOTg2NzNiYzMwY2Y3NjU3YWQwMWViZWNlMDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNiYTU4NDA4MjRiNjUyODI0ZjkyMGVmNWI0OTAzZDRiZmU2MTJhMTJjNzE3YmI0MmYyMTYzMjU5ZThjOGVlZTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhlZTFjMjU2NWQ2OWE2YWI4NWU4NmFkM2UwNmY5MDNiNjdjNzQ3MTY5OTgzNTVmZmViOWE0MDY4MGUwMmVmM2QifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L981-L1008", + "version": "repo-lines-v1:sha256:0658a370b5b3de3d2bba2875bbe39ea5c6b08da9daefae518f92b01dc132b0e5:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2ZWFhMjhhODgxZWFjYTE0ZDY5ZGYwZGZhNWVlOTBjNTliNjZmZDI0ODRkYzJmODY4MDgyZDliMzM1MTRjMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyZWM4YmY0ZThiNTJiYzNlMGRiYWM4YTdhMjU4NTA0Yjg2MDIxN2M1NmZkMDRmMzRiOTVlNGI4ZWU4MWVjNWIifQ" + } + ] + }, + { + "id": "claim_7db3471a3e984a3a815476dcf95397f9", + "statement": "Portal roles are subscription-scoped; Portal signs JWTs carrying those roles, Node verifies with the Portal public key and checks resource ACL permissions, and denied dataset reads return 403 Forbidden.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L48-L58", + "version": "repo-lines-v1:sha256:5e4d36add28170c4a923232a297801f45e16cf3b6d291ea8e3cb0da49901fa6d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg4MDc5ODdkZmZiZDMzYzAyYzI4YWE2OTA3M2U5Njg1N2MyNGQyZGU2NmI5ZWNjOTc3MTQwY2NhMTM2NWU1ZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcwODAwNzllOTgwNDFhMzVhNmEwMDJlY2U0OWUxYjdjZDZjNzM4ZGVmMGJmMTU3NDY0MGU5OTM5YzgxYmFhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkzODI2MjQyMjMyMWU4YzhiYmRiZjhhMDMxYTgxMjhmOTdhNWJjNDcxZTAwZmEwODdkZjUxOTc0M2YyY2JlOWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM0ZDFjNDM4NDc0MmY2NjYwZDRiYjQ1NjhhY2M5MjE0NTM5NWUzNWFlZGNmY2FiMjMwODcxMTU3MDY2ODMxYjMifQ" + }, + { + "resource": "repo://hub/documentation/operations/security.rst#L23-L63", + "version": "repo-lines-v1:sha256:9796cfc071c9a087634c903a980006f36674e3f244db68b939763fdfad9b99d9:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhYzJmMDhlMjFiMTZmMDIyODFkMjU1ZDk2YjIxOTJjZDgxZGViMmI1NGExMTUxYWRhMzIwOGY1M2EzY2UzN2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU2ZDg2YjdjNGIyNmE1MGU1YjVjY2Q3ZjRiZTIxNzdkZGNkY2I1OTU0MjY1ZGYyYzQwZmY2Zjk1MGRiYzk3NDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImMxY2NjODliZjQ0Mzk1M2ZmZGIyYjdhMGQyNjQ2NTYwNzdjYTk3MWQxYjczMzZhN2M2NWFlNjI5ZjAxNDc1YTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhiOTc1Y2Y3OTBiNGMwNTRhNjQxMTFhODgwM2UwNWExYTk2ZjU0NWNlZWRhNzUzNjAzYTU3ZDA1OWEwNzIwMWIifQ" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L300-L326", + "version": "repo-lines-v1:sha256:bd51f01d4a5f1729891066dbdc178765b7ec23bba6018e3222d705aaabf87f5c:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxODEwNTg1MWQ0YTFkZGU0NzFiYWIyNTlmZjZjMzg0MGZhNzhkYmUyOTMwOGZlYWZmNTM1MmNkOGUwMGM4MmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE5Y2M5YmVjY2U1YWViYzBlZDU0YmJjYjVhYjQ5MjQzYTNiMzBmMTIyNzA0YjA5YzY3Mzk1OWEyOWI0NTI2ZTEifQ" + } + ] + }, + { + "id": "claim_ce7a0e3b1fb842229d11f4d6e56514b9", + "statement": "New pipes inherit creator roles in configuration; runtime source-read/target-write permission checks can fail the run and display an error on its UI page.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L115-L123", + "version": "repo-lines-v1:sha256:ac711af17804cc1a25fb908dac0d27641c4fd8d0c5194b3a1ee3612766398873:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDRhZmI2ZmM0ZmU1N2YwNjVlZjMzZDliNjdiZjQ0MDNiYzlhY2UxYjgzMTAxMzNiZGI2ZWFlNmFjNzNkYjQzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWE5N2E2MGYyNmRhMmYzOWE1ZTE1NDQ0YjgzNTU1Yzg4ZDYwZjZmYzM3YjlkOTk0ODM3OTNmMTU1YTcwYjkwZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2VmYjAzMTcyYzJjN2QzYWI4NjVkY2JjNzg2YTI2N2QxYTcwOWIxMDY3ZGIwODA3OTZiN2JhNDg3M2ZhODdjZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWFjMmRlYjMwZGJmNDQ4NTQ5NDkzNDY3ZGQyYTI4NzQ0Njc3ZWQ4MjYxMzQ4ZjNlODAyMjlhNmExZjdmNzNjZSJ9" + } + ] + }, + { + "id": "claim_6a93477e626641bc999bdaaa9c60b79e", + "statement": "GET/PUT /config select the default group, /config/{config-group} one tagged group, and /config-all all groups; PUT replaces the entire scope. GET returns ConfigEntity arrays or ZIP; uploads consume JSON, ZIP or multipart/form-data, with 200 responses.", + "evidence": [ + { + "resource": "repo://hub/features/api-config-groups.rst#L19-L46", + "version": "repo-lines-v1:sha256:c999d0781c13571aa17b156074089875ac8550317a0ee234bbe9044a87639670:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzMDE5NDY2ZjdmZTc0ODQ5M2I2YTQ1YTE0NzNiMjg3ZjQ4MWY3ZTIwY2FhZTQ3N2FlYTA3Mjk1ZDU1ZWE4Y2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhhNTM0YTY2Y2FhZGIwODhlZDY5MGM5YTAzOTM0NmI1YjM5MGNiYjNkMmIxOTM4N2ViZWE0YzRiZjQ0NTg2MzUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUyOTM3YzA1MzY4NmRiODM5OWY1ZWEwMTE1NGJiNjZjNzljNDcyMjBmNTk0OTY2ODg5NDQ1NzBiZWQ2ZTYwN2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L1226-L1348", + "version": "repo-lines-v1:sha256:f892acc1bec8eb1a8d9a186fe4014047f65ad0d045514e229a39e3ab001e5046:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIzLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiIyYzk4MDc4YTM2YjgzNDY2YWU5MThiM2UwZDUzMDg5OWY3NmQ2ZjNmM2JiZWFjNWEwZGI1MTU2ZGVhNmI2ZjM2IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJmMzlkYmJiNDBjNDc0ZjU4OTBlM2IzMzUyZGM5YmYyZTdmNDI5OThkMjM5ODE2NGFkMTNkOWYzZTZiZmY0MDEyIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI3NDgwNjhmNzE4Y2JjZmVjZTllYzNhNWEzMjUzOWIwNzBiYmYxMzE2NTJjMjEzODJkYTdmZDgxMjFlOTM2OGU0IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI0NjA5NjkwYzg3NjlhMDE4ZjJhYjg3OWU3NDk2NjIyNjE3MTM3MWQ3MTJjMzdlNjIzMThiODA3ZjRjNjE1ZGRkIn0" + } + ] + }, + { + "id": "claim_fcb33683c39e4a6c95a808acd4b828e7", + "statement": "Individual pipe/system grouping uses metadata.$config-group and defaults to default, while bulk grouping selects the group in the URL; Swagger calls the default group 'default (i.e empty)' and the narrative names it default.", + "evidence": [ + { + "resource": "repo://hub/features/api-config-groups.rst#L29-L46", + "version": "repo-lines-v1:sha256:4f2734fae0d1257520157afff36c3279249b4eb9394a75d856beeeac2b419b9b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdjMTQ4ZWM4ODlkNzgwZGZhNGQ4YzYyODY1MTJmNWU4MTlhNWUzMWM2NjE4NWNlNzY0MzZhOWQ4YTVjZDY1ZDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhhNTM0YTY2Y2FhZGIwODhlZDY5MGM5YTAzOTM0NmI1YjM5MGNiYjNkMmIxOTM4N2ViZWE0YzRiZjQ0NTg2MzUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY1MWEzYjVmYTE1MTYyOTIyNmViYTUxMTFhNThmNTVmMjgxMmQwYTVkMGJmNWQ2MGM3ODJiMjUyYzkyNWEyYmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L1226-L1245", + "version": "repo-lines-v1:sha256:d8fdbedd4215b159ac3657afd59df256e0de8fc0417310e26315958160c330cc:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjOTgwNzhhMzZiODM0NjZhZTkxOGIzZTBkNTMwODk5Zjc2ZDZmM2YzYmJlYWM1YTBkYjUxNTZkZWE2YjZmMzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYwMzRmMjY5MDEyMGVkOWViMDI0MGUwZWQ5OTJmNGYyM2YyNjQzMTZiNzFjMjFiMjhiNGM3MjFkYzM5ODUwNTkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVkNzA3MDAwMWViOGE2YTkxMjllNDhiOGJkYjc1NzY0M2IwNjQ0MWZlYzcxZjZhNmUwY2NmYTlmZDM1NjE0NjIifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2772-L2792", + "version": "repo-lines-v1:sha256:262f4a7ad1cdf2e344cd4f620aa162bdddbbc021ee528d08b916daf34e6d3b9e:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM3OTliMmVhMWIzNTVlOWI4OTE5ZmUxMjZhOGE0NGIwYzk3NGYyZmZjZTA4ODhmMzU3NDE2NzE1Y2ZjNzZkOWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5MjMzNGYzZmZiNzI3NzE5ZDJhNDQ5MTFmZTdiOTIwMDc1MjhkZGQ2OGQ5NTY4MWUzZmQzMzM2ZTQ1YTQzNGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdjZjFkMzE5MTY3YzU0YzFiYzY5ZTg0YjQ2YmIyODI3NTMzMjA1MTNhYzViODRhMzU3YWJkNjEyN2Q3M2I5ZTciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFmNzkwMWJiNTBiNDM0MjA0NzJmZTI3NmM4ZDE0YjAxZmRiYTM4MGVmZGM2ZjY1OWQxNzE1OTFjMzFjMjFlOGEifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2856-L2871", + "version": "repo-lines-v1:sha256:5e78fdcdac17c6b5081a557717e423c204aaea750e9381e3bab3ddb4a8fcefb8:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ5ODkzZDhjYTE5NThlMjlkNmMyMGZiYWJlYzFlNTRmMzdiMzRlZWRhYjliZDMxNmEzMmVjODg1ZTI3ZmEwYjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5MjMzNGYzZmZiNzI3NzE5ZDJhNDQ5MTFmZTdiOTIwMDc1MjhkZGQ2OGQ5NTY4MWUzZmQzMzM2ZTQ1YTQzNGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdjZjFkMzE5MTY3YzU0YzFiYzY5ZTg0YjQ2YmIyODI3NTMzMjA1MTNhYzViODRhMzU3YWJkNjEyN2Q3M2I5ZTciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdlMjNiYTE0ZmNkNGU4YzUwYWVkMzY4ZGE0ZTkwNDhkY2ZkYTMwN2Q3OTRiZDFkNzkxZmI1NjJlZTZhYmQ1ZTIifQ" + } + ] + }, + { + "id": "claim_813eb580d7f74a34a2b1640de6312484", + "statement": "Configuration force defaults false where declared and true accepts errors for best-effort application; group GET declares force but group PUT does not, and /config and /config-all descriptions spell header selection 'Accepts'.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L1226-L1348", + "version": "repo-lines-v1:sha256:f892acc1bec8eb1a8d9a186fe4014047f65ad0d045514e229a39e3ab001e5046:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIzLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiIyYzk4MDc4YTM2YjgzNDY2YWU5MThiM2UwZDUzMDg5OWY3NmQ2ZjNmM2JiZWFjNWEwZGI1MTU2ZGVhNmI2ZjM2IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJmMzlkYmJiNDBjNDc0ZjU4OTBlM2IzMzUyZGM5YmYyZTdmNDI5OThkMjM5ODE2NGFkMTNkOWYzZTZiZmY0MDEyIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI3NDgwNjhmNzE4Y2JjZmVjZTllYzNhNWEzMjUzOWIwNzBiYmYxMzE2NTJjMjEzODJkYTdmZDgxMjFlOTM2OGU0IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI0NjA5NjkwYzg3NjlhMDE4ZjJhYjg3OWU3NDk2NjIyNjE3MTM3MWQ3MTJjMzdlNjIzMThiODA3ZjRjNjE1ZGRkIn0" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2534-L2541", + "version": "repo-lines-v1:sha256:d2462ab9a091f961f03f5dbffae736478a22e753c3b76159f37575621ac0f7b0:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmIyZTg0ZmY3ZTJmOWI4Y2ExZDllZjg3ZTNjN2ZiMGU1YzVhMDdkNjUyZDVjMGQwMjhlZGI2Nzc0YTBmZGI3OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjBjYTg3MTIwNDcxYTdjMWM4M2RiOTRlZWMzOTE3ZDRhMTcxMWRhMTNkOWQ0MTJhZGUzOGI1Yjg5Njk5OGMyYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmJmNTc2NzFhNzdjMDIyODhkNmRkODFjNWFjMzRjNjVjYTEyMzU5MzFkNTVjOWZlMDk2OTE4MTQzZDM0YjAyZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMmE1NWM3NThlNzk5NTFiZWEwOTU4ZjU2MWFiZTg4MGUxMzUxZDdmZTY4Njc2NDdjZGZhYjkwNGFjODRiZTNkOCJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L283-L290", + "version": "repo-lines-v1:sha256:d2462ab9a091f961f03f5dbffae736478a22e753c3b76159f37575621ac0f7b0:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmIyZTg0ZmY3ZTJmOWI4Y2ExZDllZjg3ZTNjN2ZiMGU1YzVhMDdkNjUyZDVjMGQwMjhlZGI2Nzc0YTBmZGI3OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjBjYTg3MTIwNDcxYTdjMWM4M2RiOTRlZWMzOTE3ZDRhMTcxMWRhMTNkOWQ0MTJhZGUzOGI1Yjg5Njk5OGMyYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTA3Zjk5OTM2OTQ4ZGMwY2E2OGM2NzlkZDIyNDI1MTMwMWY4YThiZWRkNmE2MmYxZTk5MGNhNDUzZWNiNTg4OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjlkMjM1ZjNjYjg3ZjEwYTFlMzFjNDZlOTgzMDA2ZmMzZjQ0OTlkMmM3NzE2OThmZGNlZjM5ODE4ODBjMThlOSJ9" + } + ] + }, + { + "id": "claim_12fe8243a86b4115bcb736da6b8b7d92", + "statement": "GET /config-history/entity requires entity_id and returns JSON ConfigEntity history with optional limit (unset means all), opaque integer since, and reverse=false.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L1350-L1392", + "version": "repo-lines-v1:sha256:33a8c5669b1743cb09e9c4c710076a336796ae2acc5e653526f086b8b584dbe3:eyJzZWxlY3RlZExpbmVDb3VudCI6NDMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJhNGJkN2JlMzZkZDg1ODQyZGU0Njg5OTI3NzNlZTY5MDUwNDYzYzI1YTFjNTYyZTc2NzBjYWQzNjc3MjM5NmEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4YzM3M2ZmNmMzMTg4MzAxY2Q4MWIzNGRkNWQ3MjM5MzlhODQ3OGM4MWM3MWM2OWJjMzA0OGJhODE2NTQ4OGYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcwMDNlNTg2NzU1MTM2MjE2YmFlMWI5YThmN2M5MGU1MTg1OGJhYjYyYWNiNDg1NDY5N2U4OTU0NDMxODA1OGYifQ" + } + ] + }, + { + "id": "claim_0f2ff48fd87e4aaa9a12be713af3105a", + "statement": "GET/PUT/DELETE /metadata return JSON ServiceMetadata arrays at 200; DELETE removes all service metadata and PUT has no declared body schema.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L1608-L1645", + "version": "repo-lines-v1:sha256:7bf0a5cc1227de13a0e980ebc8c754ff1e917b25e3ae564e7352850349b5b559:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliMjkwNzljZWJhMTFmNjc4ODZlYjY2NDdhYzQ2ZDc2MGQwMGU0NGRiYTZlMTJhMTI5OWZlNTI5ODBjZDBiZDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkYjUxNjkzZTc0OWYxMjMwZDlmMDhhMzZhODJlZTI1N2IzNzc0NzIxNTU3YjBlZGFjYTcwMzAzMjMzMjdiYzAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk0MDVkZjQ2ZmY5NDE2MGFkYzY3NjIxNTAxNmRiYzUzN2FiNzNmM2MzZjA4NGNhZjZkMzE2OWY2MGJiYjZkNGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU0ODljM2MxMzQ4NzNkZTM5OGNkMzk1MGY2NzEyMTVjM2Q5ZDY3OWZkYjE0ODBiZTg1YzMzOWU0N2E4MjhlMTkifQ" + } + ] + }, + { + "id": "claim_fe784eb92f0f4b1997cf34964d311315", + "statement": "GET /pipes returns JSON Pipe arrays with verbose=false and optional fields config/runtime/storage/graph; POST takes required PipeConfig arrays with force=false and returns new Pipe arrays; GET/DELETE /pipes/{pipe_id} read/delete individual pipes with 200.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L145-L249", + "version": "repo-lines-v1:sha256:95bd3703fc0fcc3316d614c3cafb8befff6cb9abed4da3f0244210209a4141e5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTA1LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJlNjUzODkyMjNhZmNhMTRhMzZiMGY5NDcyMDIzMmViZDVjNDlhNzc5MzEyOWZjYmMyZDFjNjZmYTg2Njk4YTJiIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJmMzlkYmJiNDBjNDc0ZjU4OTBlM2IzMzUyZGM5YmYyZTdmNDI5OThkMjM5ODE2NGFkMTNkOWYzZTZiZmY0MDEyIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiIwMmZlMGQ0ZjcwNzgzMmNiN2RhZjgzYjBkOTFhMTJlMGM0NzMwNTFlZDg5N2I1MDM1OWI3OWZlZjVhZDVjNDE2IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI2Njk4OGM4MjExODIwNjE4ODg5ZGQ5MTViYjYyZjAzOWMyYzQ1YTA3NTgzNTk3MmVjNDliMDg2NzlhNWMzMGVjIn0" + } + ] + }, + { + "id": "claim_43c1a36c32894225a3b521a0b4a9ecbd", + "statement": "GET /pipes/{pipe_id}/config returns JSON PipeConfig; PUT requires PipeConfig with force=false and returns JSON Pipe at 200, without a declared request media type.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L252-L302", + "version": "repo-lines-v1:sha256:b8d88fb5715625f9ce24cf4a73db0bc463a7a4e9a0b10cb46a3ddbed42a56f88:eyJzZWxlY3RlZExpbmVDb3VudCI6NTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1ZjdjOTUxMmQ2MTQ1ZTM2MDYyMzM5MTVkMWJhOTg3NWFmODNkMTlhZmQ1NTE0YmU3ZGVhYzRiYjI0MTEwY2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVlZGQ0Yzc4YTBiYTgzZDIwYzc5YmM3ZmM5MTA4YjI4YmM3NzBlZmNmN2ViMmYwYjkyNTJmYzc2MmE3NzFmZTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcxM2MyMGVkZDAyNjcxZjg2OTEwY2QxNDYyZjQzNzExZjJlNTIwOTFiMjBiYTEwMzhmNjkyZjg4YWVjYmY1YTEifQ" + } + ] + }, + { + "id": "claim_996d4c31b0464ab3b36628398d6d5530", + "statement": "Pipe responses distinguish original config from effective config after environment-variable/shorthand expansion and expose runtime validity/errors; PipeConfigError supplies elements JSON path, level error/warning, and msg.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L2675-L2818", + "version": "repo-lines-v1:sha256:dadf2f7039481b7bb1912daffeecef625798602e5ea8d87e6564222d5839d950:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQ0LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJhMWYxMzJkMzNiYmI2NjYwNGUzZTkwZmQyNjQ1M2FiNDU1YmQwNGUyNmU0ZDkwNTdiNGUwN2ZhNDFiOWI3Nzg4IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI0NDYxNGRiZmM1MjAxMzAyY2Q2NzIxYTcyYWY3YmY2NjdlYmU5M2I2NTA1OTZjZDM1MTM3MDA2OGViMDlkYWZiIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI0YTU4YTVhMWFhYTE4YjUyNzI0ZWNjMmMxMzdjY2E1NDg0YTY0MDJlZjBjMTU2ZGQwYjAyM2I1YjNjYzQ2NmZiIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI4NTRiODVmOGEzMTU5ZDIzNjU5NGVjMjkyMGJmMzNhNDNkMDQ5OTdjOGY2YjdhNDQ5NGZmNWU5Y2Q3MTE3ZTRjIn0" + } + ] + }, + { + "id": "claim_c1a6ec6198a74d1da54150ed842b275c", + "statement": "Multinode aggregators can return cached subnode information when a subnode is unresponsive, marking items with cached_response_info containing timestamp and age in seconds.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L2643-L2664", + "version": "repo-lines-v1:sha256:e8498e4f72a100b83d0a01d55e5ac2217af6d83d5484ab4c143a1ecb8f7e68fa:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjZGE0ZWU4ZGM2YmIyMmNiN2EwMTgxZjNhNTE5YjAxOTlhMGViZmQwYjlhY2MzMmI0YzVmZGRkZDk4ZTgyMjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU0YWViODYwYjQ1NzAyMzVkODhjNGRlNTUzMWFkYzU2MzhiMmIyMDM3MzBlZjk2NjA3YmMxY2JjODE0OWI3MWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA1NDk0OTA3NjYzYjg2YzhiMDliN2MzNzc3MDljMTg0NGNlYjRlYzMzNjczZGZmZWMxMzFiNzYxY2M3MWM5MTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVlYjU3MTE5NDIwNTE5Nzk1NDMxZjQ4YThiYTFhNGIwNmQ0NTRhMzJjYmIwZGE4Y2RjNDgxYzMxYWYwYmFkNmEifQ" + } + ] + }, + { + "id": "claim_36c86a89d5be4cd4baabd2b3ced43dcf", + "statement": "GET /pipes/{pipe_id}/pump returns JSON Pump; POST consumes form-urlencoded or multipart with required operation and returns JSON Pump at 200. Operations are capability-dependent; the narrative advises consulting runtime.supported-operations.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L104-L123", + "version": "repo-lines-v1:sha256:463c3c4322c33b097ec8c60a47b0e8b5bf9c83342ff1866ad7d1b92849ca9285:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY5NGU1NDk2NGRhN2Y4NjZkYzdlY2VmNjZkNDRiZjAzZjU4NzU5NGE2NmY1ZWUyZDQ0Zjg1YmZlY2I5OWI4MDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ3ZWRlOGViNjQ5NGM4NTkwZDNkYTIyOWYwNWVkNWE1MTEzZTQyNTM3Y2M4MDcxZmUxYjQ2YmJmN2Y5YmM4MjUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjcifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L519-L669", + "version": "repo-lines-v1:sha256:875464f9c682cfc6667a60f3c35d15dfde201bbe9b3217e44f24c66282901972:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUxLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJhYzdmNjVjNDAzYmRjNTM0YmZkODRlOWEzZmIxMjc4YmExZTk1MWI0MGU1MDhmYzhjNDZlNDlkNzk3ODA4YTRiIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJlYjZmZTMxMWFiM2EzNGFiNGQ1ZTM3ZjRhYzdjZWY3NzkzYWFiYzIxYWU4MDQyYThhOWNlN2ViODk2OTkyZWJhIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiJmMmIwZjczNmI5Mjc2NTM5MzZkNmE4ZDIzMjk4YmNhN2U5ZTMwMjlhNGUwYTY5ZWUxNzJmYjhhNDJmY2UxN2U5IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI2Mjk0ZWQyMzlkYTA2MjQ2Mjg3NmUwYjE5Y2FhNzIxMGQ0ZTUzMWY2NWU0YTk3MTRhNTA1NGQwZjM3NWU3Y2MxIn0" + } + ] + }, + { + "id": "claim_34dd779cc7914ed8b2ccae61606d2175", + "statement": "Pump start manually starts a run; enable permits automatic runs; disable prevents automatic scheduling but permits manual starts and lets current runs finish; stop stops normal/rescan runs or does nothing when idle.", + "evidence": [ + { + "resource": "repo://hub/management-studio.rst#L204-L217", + "version": "repo-lines-v1:sha256:e4b55d8a0c0d33d383ae2be8ee280af52975a12fd6632e729f07635f2d900a6d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk2YTJmY2YwYWY3MmZhNDVkNjg0MDEyZDhhZWM2YmM3MDlmMzMyNmE4ZDdkZWRmNjNjMDYzYzI3OTlmYzZjZTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUwMmVjOTRlMTI0OTdlY2UwNjkzYjlhMmY4ZmYzODRjNjAwMjgzODY4YmZmMjg5OGQyNjlhMDk2ZWZjYTljNmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY3ZTIxYjYxNDI1OTBmMjI5YTQ4NzcyMmZmNzQxYzZhMjY5NGI3NzA4MWVlNmQ0M2M0MGNlM2E0N2VjZTZiMDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBiOTUxMjg4NDFiMDIwNTJlMGZmNmMzM2Y2MjNjNDJlOTE0MTI2NjQ1ZWZhMjU3MDAyNTFiYTMyNjYxOWFlNDYifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L548-L573", + "version": "repo-lines-v1:sha256:6745b0cf2c2046108d25e13fe54cf674b72d0356ba50811d2df6fc7515a8d19e:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2ODc2YjY2NTkwYjliOTNmYTNjMGU4NjY2YzQxYmJmNzU2YmUwNmVhNzNmNTM4ZTNhODkxYjgxOTE0OTVkMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJlOWMwMjZiOTM1Yzg4ZDRlZTdjNTVkOGUxZGIzYTM1N2JmNDM1YTM0OWM5ZGFlYWQ4ZmU3OGVjMWZjMjcwYWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFmNDc2MDU5NGVlYTI5OGIzNTEzMjcyNTUxNWMwNzM2YWJmMThlMmNiZDQxODVmOTM1YjBkOTZhZDhjZTUwYTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAwNmJjNTA2NGFmNTQzZjcxN2Q2Y2E4M2RkMzQ5NDU3NjBhNGFhMTQ0N2FjZjg1MzE5YmZkMzNmZTIwMmViZDEifQ" + } + ] + }, + { + "id": "claim_e1f4c5b0f09f472b8d38378e8917911d", + "statement": "update-last-seen accepts source-specific string last-seen and empty string clears continuation; set-last-seen-to-end is source-dependent and can lose data by skipping unread entities.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L575-L593", + "version": "repo-lines-v1:sha256:ecba71a8491420054496095034bfb72340a391bf0317cc69b037bb3e58ca6a5e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ3ZjdlNzQxOTEyYWQ4YWIyZGY0YWYyMDE1ZmVhNmVkOTJmMGY3NjVlY2MwYmEwYzRhY2FmNDJhYzhjMjc2MjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFmYmUxZTBlZjAzYmM0OTdkNTYxNzk1NWJkYjcxYmNkZGU1NjQyYTY2ZWQxMDBmNTEyMWRhNWFiYWU3OGZhY2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM1ODI0ZTg5NGE3MmJjYjIyM2FhNzQzMWIyYzA3MjBlZjM5NmNhMzFkMzQ0NTJjYmFjNmI4ZDUwNzc4NWI4MzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZmNjM3YmE4ZGQ0MzBjY2IwYjlmNmQ4YjRmNWNmNDE3Yzk4YTc3M2EyNGExOGQ1Y2QzM2I4YmJmM2YwMmNmNjEifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L646-L650", + "version": "repo-lines-v1:sha256:d8d106387b8a4e07a9efb5a64ccf5e73cfdd9b144a6c843f3d85c8441e788ac3:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjhiYmJkZDZiMzE4MDI0MmNmZGJjNDJkNWUyYzA5ZWE4YzNlYzk3MWMwOWE4YzkxMWZmYTAzMTA1NTE2NmE4MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTc0MDQxYTgzZWQ0MzIxMmNlOGNiNjNjNzI4MzcyN2FmNTRkN2JlNDFmY2QzN2E4OTM1Yzk3NDg5NTQ4YmZmOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjYzZDRmNGU1ZjdjNzBiYmE1YzI4MjQyNTdmNTI5NDNmMWYxYzZmMTA3ZDE3NDZhZDVkNDBhODZmNzU2MDRmNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWMyZGU1NWQwOTRkMWFjZTExNzNiOGY5OTE3MzVhNTYxYWZlYzlmZTJkOWVlZmJmOTg1YTAxNTNkNTMyMjJmYyJ9" + } + ] + }, + { + "id": "claim_20785f7fc65341548224caf7c9070415", + "statement": "start-rescan starts unless already running; reset-rescan makes the next scan start at the beginning rather than resume an interrupted scan.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L553-L555", + "version": "repo-lines-v1:sha256:a171343c8293c02f752fbe2e4157b8b8c0942ca90f00d903e354a1cd2deb0edb:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjE2NDAyMjY0YjlmZDhkZjJiODUyMzZmZTYxZTI3YTg3MGZhNTIwMmFlMzVhNzViMzFiMTgxOGZmMzRhMmMwNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzUyZDFmMzkzNjJlYjJkZTZiMmNmMzhiYzk0MjA2NWViZjk3N2I1NjYwY2RlZTU2ZDJjM2Q3MGUxOGVmNGVjMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2VjNWNlNjU1ZDkwOWZmNTE4OWY0NTg3YjllNjE2OWNhZDQzN2ZiMDU4MjY3Mjk3NTcwNDYzNWE4NTkyYmM1YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzdlM2FiZjVkZWQ3MGFkYzUzNGRkYTUxM2M0NjgyYjhiZjNmZmExMTY1M2Q0ZWMwZjZmYWZiNzI1ZDdjM2Q2YiJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L607-L611", + "version": "repo-lines-v1:sha256:ff499046dfe5b11221599b3d5d151d7a446f9cce10cc54ee11c09d159a4381d6:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGNkYmZiODA5NTE0NThhZDhmNmNlMzNmNGYzNzY3YWUzNDAwNGYwOWY1NmJmYmEwYWVlOWVlNzRiNjMyNGU0YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGE4YWQ5NjU4MWUwNDU4MDUwYWEzYzc4NWE3N2E3NTQ0M2ZhOGY5NDkxZGRlYWM5N2EzMGQ2ZjhlYTZiMmI5MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTQyNzE2NDJkNjA1YTQ2NmUzMjUwMDcwZDVjZWY2Y2UxYTBlZTZkOTFmYzMzY2FiMzFjZDg0ZDU2NWRjYjBmOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTNkNDE4OTgxOTU1ODI1M2EwMDkyNDNlZGNiZGIyODRmZWFjYTY0OTE2Njg2OGJhMjkwNjE2YzlkYTJmMjA2NSJ9" + } + ] + }, + { + "id": "claim_10940dbdf3fb4b67a0305b68abe5e25d", + "statement": "Experimental reset-tracking is unsafe while running and resumes tracking at dependent dataset ends when the next pump runs, skipping offsets and potentially producing incorrect output; intended for development or followed by full sync.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L595-L605", + "version": "repo-lines-v1:sha256:2cbbabc20e2aca019bf31f82780d9062a3f4ba12ba74ca4c4a586394a023eccc:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxZTU0MjM1ZThlOWNlZTc5NWJlYjRjZjY0MDJlNTVkMmM0ZWU2NzRhMTAyNTMwMzk2M2Q5ZWMwMmFjMjRjNTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgwNDQxNWIyOTgzNzIyNDk0ZWFjZGYzN2FjZTU0MjlkNWVkZTY2ZWZkYWE3NTdkYzFlOTliYzU5MzY1MmJmZGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJjZmJiOTFjZmZlOTlmMTAyM2ZhNDRlMGRlZTE5MDAyMWExN2QwNTE3Y2Y3MDM1OTEwNjRlYThkN2RlZTgwYjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJlZWQxMmVmMTFlYjU2YzFjNzliZDRhMWNiZGI3ZTVlNmE2Zjg2NGEwOWU0NjY0MjgzZGU2YWZmNGQzOTE4ODcifQ" + } + ] + }, + { + "id": "claim_cd2c0118d39c40b7b76e7d812bbc505b", + "statement": "discard-retries records pump-discard-retries so pending write-error retries are ignored on the next run; discarded entities are not written to dead-letter storage.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L613-L617", + "version": "repo-lines-v1:sha256:527e4340071c0f73f529f50ff966912eaf540f5b5dfa606f0be27998315f270c:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzM2ZGM2NjBjNWU0YzM1MzAxNDg1MzQxOGVhNWVmMzFkNzFjZGMyZWM2OGNmMjUzNjk0MTViOWE5NDcyYWIwYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTQ4MDBjZWI1MTUwMWJmMTEzOGQ0NGMwY2M2ZTY5MDJhN2U5YTEwMzhmODRkYmVjZWNlNDMzY2Q3NzI4ZGNhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmNhMGE1MGMzZTQzODIxYWVjYTNiYmU5Y2E0YmQyYmI2NTE1MzFkODQzMzY5YWJlZDA1OGE3ZjFhZDNhNDlkMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWQyOWNhNTNiODc0ZDZlY2VhYmQ1M2MwZDU5OWQxNzUzZjhiMWM5ZDdhMDhjNzhhNjhlZGZmNTY5M2RlZmY2YiJ9" + } + ] + }, + { + "id": "claim_c50aa3a681684d09a873da7e99f7ee08", + "statement": "discard-inferred-schema removes accumulated schema and normally should be followed by reset, particularly for pipes without continuation that do not automatically delete schema on reset.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L619-L623", + "version": "repo-lines-v1:sha256:960693d0bd7d06fdac188f31112404b2fedc16b7f112eb0d116fb70827c52b4c:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWZmOTk1YzYxMGM1MjM2NGI5Mjk3MTI0YWRiNjZjZTYxODdiODViZGU2ZWNhZGM0OTE5YTBjZDE4NmQ0ZTgyYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWZiZDM1ODc3MzE2ZDcyOGIxZDI4MTEwZWU5MzIyZWQ2MzQ5MDhmY2NiN2E5NjIxNWQyMTk2ZjVjY2EwNzcyYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNGE0OTkzODA5NzUzODQxNmYyYTU3NWJkMDdhY2JiYzhmMDMzYTk1ODU4ZDY0NTZjOTJjMDhkODA2NzE2MTRmOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTg3YTQ1NWViN2Y3MDhmZWYyOTE5NmJkYjY3NzM3OGUxODVmNzBlYWE4NmQzMzRjZTk3ZTgwZGMwNTk4NTNmOCJ9" + } + ] + }, + { + "id": "claim_03360fb9e61248fe9a7aa1f3fbd5afc8", + "statement": "Disable can persist a comment in the pump-disabled execution-log entity; dont-wait-for-pump-to-start and relation are deprecated form parameters for older versions/operations.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L572-L573", + "version": "repo-lines-v1:sha256:d7867a6fc08bf33bceafff2ffd269fed18ed6f06eb4aee75d047a788b103e51b:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGUyYzA4YTQ4OWIyNzVhOWI4ZDlkYmQ0Nzc5NTJiYWRkNjkxOTAzZGQ1ZDRjYjI5NzRhZWYwMWIyOGYwNmViMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmU5YzAyNmI5MzVjODhkNGVlN2M1NWQ4ZTFkYjNhMzU3YmY0MzVhMzQ5YzlkYWVhZDhmZTc4ZWMxZmMyNzBhZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDAzZGE4ODJmODIzZjUzOTliNjQ4MmVmMDc4NzNhYjZjNzk5MWRiZjI0YzJmNWNmNTczZjEyNWY0MTdmNmE3NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDA2YmM1MDY0YWY1NDNmNzE3ZDZjYTgzZGQzNDk0NTc2MGE0YWExNDQ3YWNmODUzMTliZmQzM2ZlMjAyZWJkMSJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L634-L662", + "version": "repo-lines-v1:sha256:569aff72ca3b3faeb9b4d885ecc9b3f3d7dfd80206134936854be5f12b41ec4b:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmOWI5ZDcwZGZhMDMzNjc5MzFjYmRlM2JiYWExOGFiMWIwM2NmMzM1NzJlZDIxZTNjMDZlMmMwOGFhZjQ5NGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg4N2E0Zjg3NmJmMTM4NjJjNmVkN2QwOTk5NjJkZDAwYTJhZTViMzg2ODVlMmNjNTg3YTVhNWQ4Mjc2YTliZjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI5ZWU2MzI1NjM1NjE5YzczNjFjMzNjNjEzZjI3NTMwYzZhNjg1M2I0MmE5ZWQwMjIzZmUzZGZiYzdmZTIzODciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMzNjI4MjY0NzE4YjM0ODk1MDhkZGNjNTEwNGE4YmFjN2ExNmY5YmM5MjNkOGJiODEyOTAwNjFjOWQ1YzEyZmUifQ" + } + ] + }, + { + "id": "claim_7980e2f18134492986be24e0a0ec262b", + "statement": "Management Studio Restart is reset plus start, Reset reprocesses from the beginning, and Delete sink dataset removes the sink dataset and resets since; these UI workflows do not introduce similarly named pump operation strings.", + "evidence": [ + { + "resource": "repo://hub/management-studio.rst#L210-L247", + "version": "repo-lines-v1:sha256:0578f99414cea60093cade776ccf3393f842af1879497cb83de71b3e8a544d21:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjViOTc2Y2ZkY2U2YTc0N2U2Mzc1NGMzZmI3ZjBjNzZjN2NmNWUwMTNjZDBhMzIwYWE4OWUxODg4NTIyZDBjODEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg1OWVmMTJjY2UwNGJhOWRiNjNiMGU5ZDI0OWUwN2U1Y2FiMmI1OTQ2MmIxYWFhMzRiZjBiYTM2YzQ5NWQyNmMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJlNzQwOWVkNjY0ZWU4NjJmZWRmZjY2YmM1Zjg2NDdjYjdlN2ZkNDM3NjBjYWIwZmFkMTYzYjI4MzIzNmM4MzQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkyYTFlYjhiMGJkODQ2OWY3MTQ2N2UyY2ZlZTJmZTRmZTgyYjQ1N2E0MGFhZjNmOWQ0ZWYyOGQ2ODVjODEyYzYifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L546-L623", + "version": "repo-lines-v1:sha256:b987964219c6ba3f315a4b3932a4ffc373a34fb1a5d0df74ce3f10982127a13d:eyJzZWxlY3RlZExpbmVDb3VudCI6NzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5ZmQ2NTZlY2YyNDRmZmMwY2I1ZmVjMzZjYzkzYjM4NmQ5OTFhNzY5OTFhODZmNzI5ZjJiYjcxZjAzMGI2MmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlmYmQzNTg3NzMxNmQ3MjhiMWQyODExMGVlOTMyMmVkNjM0OTA4ZmNjYjdhOTYyMTVkMjE5NmY1Y2NhMDc3MmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjEyMzk0YzY2NjhkNWQ4MzQ0NDE5ZmJkZDBlNGIyYjhjOTcwMGMxZjJlZjE4NDQwYjhjNTJiOGRlYjZhOWM1NjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk4N2E0NTVlYjdmNzA4ZmVmMjkxOTZiZGI2NzczNzhlMTg1ZjcwZWFhODZkMzM0Y2U5N2U4MGRjMDU5ODUzZjgifQ" + } + ] + }, + { + "id": "claim_4f340c450df944079819272cd2f63a38", + "statement": "GET /pipes/{pipe_id}/entities returns JSON PipeEntity arrays with optional unbounded limit, string since, and stage=sink or source/before-transforms/after-transforms; generate-schema-definition GET returns JSON with sample_size and keys_only=false.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L305-L350", + "version": "repo-lines-v1:sha256:d8e504d0cbae681e1590228a8e528185de3c751afea1126f85f494b14988ce07:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxNmY1M2VjNGNlYmI0Yzk3MzcyNDJjNjkwNjdkZDcwNGFmOTc5NGFlZGExNWE5ZjA0NTUyMWJiMzA2ZGZlZmEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNmNTZlYmE1YzhmMzY4YjI2OWFhYjU5MmEwM2MwNDA0MTVhN2UyOTg2NzNiYzMwY2Y3NjU3YWQwMWViZWNlMDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNiYTU4NDA4MjRiNjUyODI0ZjkyMGVmNWI0OTAzZDRiZmU2MTJhMTJjNzE3YmI0MmYyMTYzMjU5ZThjOGVlZTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhlZTFjMjU2NWQ2OWE2YWI4NWU4NmFkM2UwNmY5MDNiNjdjNzQ3MTY5OTgzNTVmZmViOWE0MDY4MGUwMmVmM2QifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L485-L516", + "version": "repo-lines-v1:sha256:67eb766860fdd87cc5c6215796c084be6f5615af0d8a50f6c92d7e18c44292c0:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE2ZTU5ZTg5Yjk2N2QwMWU0NzUyM2QxZWNlMGVhZjkzMDRlYTIxNzFlYWI4ZTYyMDgzMWZhN2QzOWJkYmVkOWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU3MTQwZTUxY2U1ODQ0YTNlNjZjN2NjMWU0NjkxNzllMWNmZjJkMmU0ZmY5NTRlM2M4MmQ0MDAzZjcxMTY0ZmUifQ" + } + ] + }, + { + "id": "claim_739c1eea84794ce9b40535f5f8a9e554", + "statement": "GET /pipes/{pipe_id}/log returns JSON DatasetEntity arrays with limit, opaque integer since, history=true, reverse=false, deleted=true and full-history deletes always included; OPTIONS returns text/plain and supports experimental webhook plus associated token or Badrequest.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L353-L482", + "version": "repo-lines-v1:sha256:90c723f799624e965b55db880afa3a9cc6ddc17adb777fb9a1ba0b6b703ad546:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMwLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiIzZDYyNDg3NGMyNGRmODllMDZkYmJiMjg3OGI1Zjk0ZDJiZjk1YmVkOTVlNzNkMzYyNmMzZjFmYmQ0N2QxNzNjIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJmMzlkYmJiNDBjNDc0ZjU4OTBlM2IzMzUyZGM5YmYyZTdmNDI5OThkMjM5ODE2NGFkMTNkOWYzZTZiZmY0MDEyIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI3ZjRmOGQ2NWIyYmM5ZmY4MzQzMmY5ODUyYjAyY2I2YzU1Yjc1ODY3MTJlMzhlYzg0ODdmOTIyZDYyOWYzNDkxIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiJhZGY0YzFlYzliNzEzOTAwNjYxYWQ1NWRiMGY4OGNjNjk4NjE4ZDZlOGUwZWQ1YTllMTEyNTI1MGZjNzdhNWQ5In0" + } + ] + }, + { + "id": "claim_5ed7bea265f94374b46a0d733ce255b8", + "statement": "POST /pipes/{pipe_id}/webhook consumes JSON with the registered token and schedules a pump; unknown/mismatched webhook or pipe returns 404, documented as unregistering the webhook on the sender side.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L671-L693", + "version": "repo-lines-v1:sha256:9910156bb8970a1088c499ff55493c0091de9ec0940eb95f3e7b74ec2d9c25ba:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzYTljZTk5MjdjNTVmN2ZkMDU5ZjkxM2JkNjc2YzM2ZDdkNzg1MGUwZjlmNTVjNmMzODUyNWJmMzg2NDI5ZTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRmMTdlZmZmM2IzNjNhN2VjZWNmNTc2NGJlYTgwNDIwMjY4YTk3OGVkMjRjN2JhYjI5ZGQyOWFmMTNkNzQyMDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNkZWI1YzdhMWYwZmI3MDQ2OWQyZWM5NTJhNDA1NWRmYzA3YTRlOWRmODM3MmZjMjMyYTk2NGMxZDJmMTA3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjllZTc3ZWFkZTE3Zjg1YzBiYWU0ZTNjZDQxYmFlYTY3ZTYxMzgxZTYwNTAzNTUyZTRiYTc4NDAyNjM5NTc2YzIifQ" + } + ] + }, + { + "id": "claim_8bb7e460d78442e6ae57b03458e24925", + "statement": "GET /datasets returns JSON Dataset arrays with verbose=false; individual GET/DELETE inspect/delete a dataset; POST /datasets/{dataset_id} is a form rollback-circuit-breaker or commit-circuit-breaker operation, not ingestion, with JSON/200 responses.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L729-L810", + "version": "repo-lines-v1:sha256:4b7bf5fe686ae0c259cde8ba93dac6b148db7ed297df4a077124b91addac1439:eyJzZWxlY3RlZExpbmVDb3VudCI6ODIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBkZWVkNWIxMDY0YTYyOTA4YTgxOTI2ZWYwZTViNmYyMWRiNDBhYWVjMTdhMmM3NmIwMzM2MWExMjQyOGU4OGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM2NjAwZDQ4ZmZhZTA4NjMzZDQ3NmM2ZmQ5MTUwZTBiMWVhZTY1ZjA5YWQyNzI0NjEyNjFhZTllZWVkODNlMTYifQ" + } + ] + }, + { + "id": "claim_302ff540dd164dbbac14da2a255fd0b6", + "statement": "GET /datasets/{dataset_id}/entities returns JSON DatasetEntity arrays with unbounded limit when absent, opaque integer since, history=true, reverse=false and deleted=true; history=false selects latest versions and full history always includes replaced versions/deletes.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L180-L192", + "version": "repo-lines-v1:sha256:49408eb8f6ecf6601e22cd128b29e744da64e27491496c85be54b6d90ed4a6be:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMwZGYxZjQ2N2FkYjA1ZDk2NDE3YWE2MTAzNTQxYjhhMWU4MDBjZmUwMGFjYWM3ZjUwMzRlZDQ0YjIxZDk1YWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE2OTczY2RkMmFhZTVhODQ1MTA1NWJmZTQyNjhjNjA2OWY1MDk2NDFkY2ZmMzkzNDZiNWZlN2RjNDdlOWNmNjQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjliZGZhNjAxNjFlMGY5NDFjMTk5NGMxMTY4NThhMmVlNjVjODlhNzFlNWFlNjRkYWJiMGM2MmM5MTRiNDQwMmQifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L813-L867", + "version": "repo-lines-v1:sha256:99d111a7e4ecd68531a8f3638f10b551c2e8e10f742c33ea8b3c636a06309e2e:eyJzZWxlY3RlZExpbmVDb3VudCI6NTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYwNTdkYjYwMjdiZTA1ODJlMDUzYjRlZTkyZGI3ODA5OTE1YzliY2EyMzhjYTg1ODAwMGYxYjc1ZDk3ZWUxMGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRhMzI5YmMwNGJlZjdhNWI5MTFmZTYyOWVkMzgzMTUzYWZmZjk0YzcxYTkyNmExNjE5M2ZjY2M1ZWYwZDkyY2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJiMTFkNDQxYjY0YjExYjg3NzE4NTEyNjQzYmYzNDU1Nzg0ZDM3NzVjM2YyMDIzZjVlMDQ5ZTk1MzYzMjAxNTcifQ" + } + ] + }, + { + "id": "claim_7a00bb1b0d204d2faad00753f324886f", + "statement": "Dataset-list populated=true adds 404 until a complete populated source view exists; unknown JSON-encoded subset gives 404; uncommitted=true can expose circuit-breaker-uncommitted data for debugging. Boolean controls default false.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L869-L896", + "version": "repo-lines-v1:sha256:d4910f0e9b0b515e49428eb5ab242cfe276ec5ecc366dd4b42801fe0d41833f2:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlOTJjZDUxYzkxODY2NTQ0Yzg5NzMwNjViOTY4ZDlkMWE1ZTYxNjgzZDUzYWY5MDZmNWNmY2NkMmNkMWVkZWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjExYTU2YzgyNTY3ZTBkNmU0ODUyYTBkOTg5YTE1ZjA0MzkwYTk0Y2VkMTRjMzE1ZmM1YWZmOWQxMTQ0ZDdiZmMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ1ZDNiN2QxODBiZDRhNGQzZjkyYzcxZjcyNTZjZjUxN2Y5ZGMyZTcyZDQwYTgyZmM5NDRjY2YwYmE0NGVkNTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNiYjJiNjIzNDE5YjhiN2UyYWU5OGRlM2RmYTk4ZjMwNGJlOWFlMjcxZTkwNDEyNTRkZDEyNTA5MzdiYzM1MDkifQ" + } + ] + }, + { + "id": "claim_d27d95bd11644697b24a9038c4e4030b", + "statement": "GET /datasets/{dataset_id}/entity requires entity_id and supports subset, offset, uncommitted=false; unknown subset or absent/mismatched entity at offset gives 404. /entities/{rest_of_path} is deprecated in favor of /entity; DatasetEntity._updated is the integer offset.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L1011-L1092", + "version": "repo-lines-v1:sha256:3e01cfabe3810cbce5fd9b21b4851d70fcb9df17436cd7aa156bac98434daf73:eyJzZWxlY3RlZExpbmVDb3VudCI6ODIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVlZTE5NjYxYjZmMjU3YmRlYjAwMGNlYzFjNTYxZTUyNmU4ZWExYWI5N2FmZjBhMTZmZGYwMjQ2YjgyMGU0NGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcxNDAwYTI2MDVlMmYyYTVlMGRlMDhmZDVjNWQxYzA3YzY2YTk1YTM1YzE0Zjg2Y2ExZGI0MTFiMGE4ZWU3YjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ2OWJiYjdhMmMyODUzMDdmNmUxZTkyODQzMGNkNTRhMjEwMGM3MjM2YzVkM2U2NzQ0OWIxYjE2ZmRkOGZhYTkifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2884-L2897", + "version": "repo-lines-v1:sha256:848dbb6687b80defdbc140a61c02e6b3108e88fcc68484df494c738019840acf:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkyZjgwNTM4ZjkzYzQ3OTQ2YmQxOWY3MDlkYzFkNTdlNjdmMjZhODQ1MGQ1NzBlMDQzMDI3ZWM5NGZlODJjZDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4YzA1YWU4ZTlmMjVmYjcxYzg1ZjkxNDJhZmE3NjY5ZDFkM2FhZTcxM2FiODNkOTFlNDE0ZmYyY2ZlMzJlYzgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdjZjFkMzE5MTY3YzU0YzFiYzY5ZTg0YjQ2YmIyODI3NTMzMjA1MTNhYzViODRhMzU3YWJkNjEyN2Q3M2I5ZTciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU5MTQ2MDMwYmU2ZDdlY2FjZDhkMGVkZjBiOWRmNDVkZjgxOTVlZWU0ZTM2ZGNmMjU1ZjFkMTRjMDFmMmIxMGYifQ" + } + ] + }, + { + "id": "claim_7f2471d3975b41eb803cc87d434f1945", + "statement": "OPTIONS /datasets/{dataset_id}/entities returns text/plain and supports since/history/reverse/deleted/subset plus experimental webhook and required token; missing token gives Badrequest and new data triggers a webhook POST after request processing.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L905-L979", + "version": "repo-lines-v1:sha256:4c71f8e51855c47f99ffeb97486bfaadf76fee7a6cf73b46e74efc82d68a3e9c:eyJzZWxlY3RlZExpbmVDb3VudCI6NzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRlY2Y1OTQ2NDE1NzlkZDU0ZjcwOGVlMGNmYzNhNjIyNTFlOTk1MzhmY2FmYzBhNDhjOGMzYTZjNTlhM2E2OWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY2ODMwYzQ0MmI5OWM5ZTkwMWMzYTQ0ODhhYWFmMWI5MGIzNDgyNjZiN2Y2OTlhMDllMDFlN2NkY2IxNzVmODAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRmYjcyMGMzZWQxMWM0MWNhZjFiZjFhMjgwZDA1NWU0NDYxN2Q2MTljNGUyYWUwZDRmZDQxNmE5YTVkM2EwMmUifQ" + } + ] + }, + { + "id": "claim_cca2cb91297b495da8ac969110b20393", + "statement": "Dataset inspection GET /datasets/{dataset_id}/indexes returns JSON DatasetIndex arrays; GET generate-schema-definition uses sample_size and keys_only=false and returns JSON, both 200.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L1150-L1169", + "version": "repo-lines-v1:sha256:cf3952ee420de97fb41f8f6f100fab39f5dd9a51c82877c9a81239aad7769541:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU3ZGVhZDM1NmFlYjljYWIwYzhkZjczMmEyODc3YzkxZTQ5ZmViZGJiZGZjYjQyZWM4MjljNDliMjZmZjlkZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE4MzdmYWNlNzg5ZjNhZWI5YjA2YjE2MzA3OWE1ODZhNGMzZTUxNWQ1Zjk2ZGE2MjE0NGZiNTc5OTc0Mjk2NjUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQyNzc1NjhlNTA1NDdjM2YwMWVkNmZiNmY2NTcyYjBlOGRhMjRjNTgzZjIzNjUyY2Q3OTZlMTg3ZmQyNjA4ZDEifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L1193-L1224", + "version": "repo-lines-v1:sha256:3598fa25e942e1b35e418be76fa3ad19a974e260bece5cf1aa64b4843455f574:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdlMjkwZWI5ODgzZDMzMzUwOGRlNjdhZWVkNmRiZWJmMTJiYWExNTY3NTAzMDQ4NTM5NzJmYWE1ZDUyNWNmZjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlmYjI4M2NkMDQxNTE1MGFlM2RhYmUwN2E4YjYwNjc5YjRiNGU4YjRmOTVjYzU3MzVjY2YyOTJiMGQ3ZGM1MDEifQ" + } + ] + }, + { + "id": "claim_a836e57189f047199705f5d9c25c9a74", + "statement": "Dataset SDShare collection/feed GETs return application/atom+xml; GET /datasets/{dataset_id}/sdshare-fragments/{rest_of_path} returns application/n-triples for an entity, all 200.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L1094-L1148", + "version": "repo-lines-v1:sha256:55a0e66e3c97143372c5370784c2c6f9f8adc60507a7b87c2fbf77450de4ce1b:eyJzZWxlY3RlZExpbmVDb3VudCI6NTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEwODYxMzk5ZWQ0NzZkNWVkODBhM2MwZjkyYTFhOTYzOGE3ZmMzZWE4NGViN2QwNzk5Yzg5OTM2MzRjOTY0MDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkzYTFmZmY3YzBkMWQ1ODFhODI1MzM5MTYxYzY0YTQ2NDQzMmY5Njg3NzczMWJmNDFkOTA0MDM2ZWJlNDVmZDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVhZDE2NGJiNWFlOWJkZWI2ZjI4MGJjZjllMWYxMzRlYTYwOTYxMjZkYjc5MGMzMDc5MGU5NWMwODhhYmY5ZWUifQ" + } + ] + }, + { + "id": "claim_2b3afc5a1a2541cb89e1fb37a8c21253", + "statement": "Service API explicitly prohibits production dataset-API writes and directs ingestion to an HTTP endpoint source or JSON Push, despite Swagger including POST /datasets/{dataset_id}/entities.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L150-L156", + "version": "repo-lines-v1:sha256:a71abf3960cce1e76b5f76e1b1d9317fa9b0b19ada7b37a8d31856731c7ab81a:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTQ4MWM0NjIyOTA3MGNmZjdlYWQyMzBlOGI4ZGZhNDlkMjMyZjQyZTkwNDMyYmJiMDE0ZmMzZDQ1OWVjNTMwYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGZhYmI3NDE3MTllMzNjNWNjOWNhZGJjZGUzNjMyMDczYzg0NGE0NWQxZDYyMDU2NjA1ZDg2MWEwMDgzYjJiYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmEzY2Y1MTkyMzU0ZjcxNjE1YWM1MTAzNGIzZTk3YzIwZWRhOTk2NDNmY2FmNWJiZTZkNDFhZDU5YmQxMjE2NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWY5YmQyZGI1MmRhNmM1MzQ2NDIxMTc4M2E1YTg4ZTk3ODY2YWNlNmUyZTk4YzE5OTdlNTZhZWEwN2EyZGEwNiJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L981-L1008", + "version": "repo-lines-v1:sha256:0658a370b5b3de3d2bba2875bbe39ea5c6b08da9daefae518f92b01dc132b0e5:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2ZWFhMjhhODgxZWFjYTE0ZDY5ZGYwZGZhNWVlOTBjNTliNjZmZDI0ODRkYzJmODY4MDgyZDliMzM1MTRjMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyZWM4YmY0ZThiNTJiYzNlMGRiYWM4YTdhMjU4NTA0Yjg2MDIxN2M1NmZkMDRmMzRiOTVlNGI4ZWU4MWVjNWIifQ" + } + ] + }, + { + "id": "claim_66624d5019b644d18a426f4ffac44d67", + "statement": "Dataset entity POST consumes/produces JSON with 200; force=false suppresses equal-hash writes while force=true always writes, unlike configuration force accepting errors.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L1251-L1258", + "version": "repo-lines-v1:sha256:d2462ab9a091f961f03f5dbffae736478a22e753c3b76159f37575621ac0f7b0:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmIyZTg0ZmY3ZTJmOWI4Y2ExZDllZjg3ZTNjN2ZiMGU1YzVhMDdkNjUyZDVjMGQwMjhlZGI2Nzc0YTBmZGI3OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjBjYTg3MTIwNDcxYTdjMWM4M2RiOTRlZWMzOTE3ZDRhMTcxMWRhMTNkOWQ0MTJhZGUzOGI1Yjg5Njk5OGMyYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGIzNDc1NTRiYWNhMWE4M2M5ZWExNmRkNmM1MDU2OTE4MzA3MTMyNDgzNTI5ZDIzYTNmYjZlZjM1ZTk0MGU0ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGQwOGYyZjBlMTdiYmQ4NzQ5OWE1OWQ0NzlhMjRkZjQ1NTlmYjBjZTkxNzAwMTFjOGUxNzRjMGQ0MDNjYTRmYiJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L981-L1008", + "version": "repo-lines-v1:sha256:0658a370b5b3de3d2bba2875bbe39ea5c6b08da9daefae518f92b01dc132b0e5:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2ZWFhMjhhODgxZWFjYTE0ZDY5ZGYwZGZhNWVlOTBjNTliNjZmZDI0ODRkYzJmODY4MDgyZDliMzM1MTRjMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyZWM4YmY0ZThiNTJiYzNlMGRiYWM4YTdhMjU4NTA0Yjg2MDIxN2M1NmZkMDRmMzRiOTVlNGI4ZWU4MWVjNWIifQ" + } + ] + }, + { + "id": "claim_68518a11cdc643e48cb64212ff6ad4e7", + "statement": "http_endpoint sources register receiver URLs without a pump; entities flow through their pipe to the sink only when posted.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L6-L27", + "version": "repo-lines-v1:sha256:7a633424ffc6abef8a15b60cae8996cf6a08e1bb6803d3239b552187e65cac6d:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1ZmYwNTZhOTkwNDM0ZDcxNjc4YTE3NjQ2YWZmYTM1ZjNmNTBhMGI1MDNkM2Q4NzViYWJiMzBiYzcyMWJhMDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc0YWM0MzE0YzM2NzFhYjJlYzg3ODBjNGE4YTM0NDY0NjY1MTAyOTk3MTZjNjczMmNhMmNiOTg3YTg4YzgxZTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUyNTQ5MGVhMWVhZDA0YmVjZGRiYjUyNmY2Mzc1MjM4YzJiNDhjYzUwNzY0ODlhYjBkYTA5YzZiODA4N2E1YTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMxZjI1OGE3M2RlZjkyMTI4ZDJiZTg3MmMzNDI1ZWI4ZDFhZjBkMmJjMzA3YzJhOWIyODkyMDY0OWVjYzY4ZTIifQ" + } + ] + }, + { + "id": "claim_7c97775167634f4792a1df74dfbfe18c", + "statement": "POST /receivers/{pipe_id}/entities is JSON Push for an http_endpoint pipe, consuming/producing JSON with a 200 object and optional Swagger query controls sequence_id, request_id, previous_request_id, is_full (described default false), is_first and is_last.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L2154-L2218", + "version": "repo-lines-v1:sha256:211a669a57498643d467cc3344b2911cf977214ddf353c3a2a844a31c1f3750e:eyJzZWxlY3RlZExpbmVDb3VudCI6NjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyYjAzYzg4ZjMxMWE1MmFiZDVlODM5ODQ2YTA3NGI1Y2ZlMjhkODYxZjQ0ZDk4MTFkNDYzMTMxMWVjMTk3OGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmNmEzOWM0YTlkNTE1YTRkZmQ3MzI3NjJjNjM3ODc1NjE1YTg0ZjA1MTg4ZDA1N2M3OTU2NTliZjljNTI4ZDgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI2MTg2OTM0NGFiYjcyNjcyYzVjZWE1N2RiNGEyN2E5ZDgxYmExOGExZDk5NDY2ZmRkMWU4YTJmNGZjNDkzOWUifQ" + } + ] + }, + { + "id": "claim_203037701c1e4e15bf8a8eb7051ed0de", + "statement": "JSON Push specifies an array even for one entity while the HTTP endpoint narrative permits single objects; full sync has one active sequence, a new full sequence replaces it and is_last closes it, whereas incremental requests do not affect it.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L29-L41", + "version": "repo-lines-v1:sha256:f9b72aa0f1c7378c3b0bcf27ff88d2c03ac84be95d1440673d05264306ea5e35:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU5MGYyNWRjY2NlYzNhZTlmZTAwNzM0MzlkZDU4NTA5YTFmOWMyMWI5MDAzNjYxOTM2N2IxYzBlNDRjYzU4MWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJhOGE1YmNlZTcxMDMxZDJlYTYxNjY2MWJmOTkzZDgzNTkyNmI4YjhmMGJlY2I0ZTQwZGExMGIxNzRlZGNkZjUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUxNzIxNTc0M2RmNzM1YzM1MmU2OTlmYWZiMzY0NjMwMjIzZTJkZWYwOWQxMzMxNGE0ZTc1MWYwY2U5ZjI0MTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVjNDgwMWVlYzY2NTYxNDVkNzIyYWJiYTZjNDk5NGY2MWRhNGMyY2M0YTMzZjExYmRlY2I1MjliMWM3ZGE3ZTQifQ" + }, + { + "resource": "repo://hub/json-push.rst#L22-L65", + "version": "repo-lines-v1:sha256:560c6f5fd4ed9f4f9d05e63ae029137336b06838e7cb9918de7e497497fdbec8:eyJzZWxlY3RlZExpbmVDb3VudCI6NDQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVkYWU5ZjVjODgxOWE3NGU3M2NhOTgwYTNhMDNhMDRjMDU5MDNmNDM1NWZiYWZiZTQwZDViMTU0OGE3NWMxYjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZjM2E1MTViM2Q2Zjc0NzI1YTFkZmFhZGMxMjYzYzE4YjBmN2U1YzM4ZWRlNzkzYjhmN2Q1NjI3Yzc0MDA5ZDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjljYjM0NDRlOTU1MDdlOWQ2OWE3YmRiYTU0OGM1NGY3YWZmY2E4M2E5ZWY5NWM5OWJkZTc4YmNkNmUzZGU0MmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI1MzViNzc0MWVhNjI4ZDM1ZWVmNGFhM2VmMGQ4NWU0YmNjNmZlMzI1YTE4ZWMxNmUxZWQ2M2NlMWQ1M2E0ZWIifQ" + } + ] + }, + { + "id": "claim_79a5292ec9b94db6a4cbf3e02bb2413a", + "statement": "Full-sync previous-request mismatch, inconsistent is_full, or invalid repeated is_first require 409 Conflict; the sink stops/retries later, restarting full sync with a new sequence from the beginning. Incremental controls may be ignored; these are narrative failure rules beyond Swagger's 200 table.", + "evidence": [ + { + "resource": "repo://hub/json-push.rst#L68-L88", + "version": "repo-lines-v1:sha256:9773217ec895d4608d1ff7f7c446e6b35b4560f618a772331733358425261ca4:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlmODQyYzNlNzQ3YTc1MDg1ODc0M2ViMGY4YWUyZmRhNzEyN2FiNDZlNzU3M2ZjNGM1NWJmMzhkYzJjZmUxZGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlOTY1ZjJkMDk5NzNlZjNiNzk2MDk4NDYyODhlMWQxOTUxMWU4MWE3YmM0MThhMTQzMzlmYjI0MjM1YzI2M2MiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFkYzE3NmYzYzI1NjU1N2YxNjc4YjUzYTYwNTU0NGIxYzg4YmM3NThmZDlkZDFjNThhNmVkMTE3NDVlZjU0MWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY3M2M4MmI2MmVlOTMxYTBkNjJiYTg2ZWY5Y2Q2ZmIzMWJjMDAxYTc0M2VlMGZmNDA5YzRkZTdkM2I4MmFiY2QifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2213-L2255", + "version": "repo-lines-v1:sha256:f6c6110ca9b859f97c3484ed7249e03cf4e76edf4e4448e16d0ba60d86ceaa55:eyJzZWxlY3RlZExpbmVDb3VudCI6NDMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxY2M0OGNjYmYxZWY4NWNjY2NlNDFjYzQ1NDc0YWI2OTg5NzI1YTViYjZkM2MxMmY2ZWQyODE2ZjI3MjU4YzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFmODE4YzdjZjIzY2I5OGNmY2I0OWZmNzRkN2NiMDBlNzU5ZGY5ZWFiNzg4MjlmMWM4YWVjZGViMzczYTBjMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc3MzlhNzI1MTBjZjgxNmM5ZWIzOGNjYjkxMzY1MzJlZTFlYTk5YTQ2NjI3ZTYxZDU5NmI5NzAyODBjYjc3MTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcxZGMxYzNkYjY0ZTNhYWQxMGFhZWI2M2YzOTQ0YzBhMTU4MmY1YTA1OWUxMDAwMDc3NWMxOTJiZjMyN2Q1YTUifQ" + } + ] + }, + { + "id": "claim_fb68a63143af4499b72b47974fe12e1d", + "statement": "With dataset enable_optimistic_locking, the receiver may return updated_entity for a one-entity post or input_entity/existing_entity/common_ancestor_entity for stale _updated input and three-way merge, as fields in its 200 schema rather than a distinct status table.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L2213-L2255", + "version": "repo-lines-v1:sha256:f6c6110ca9b859f97c3484ed7249e03cf4e76edf4e4448e16d0ba60d86ceaa55:eyJzZWxlY3RlZExpbmVDb3VudCI6NDMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxY2M0OGNjYmYxZWY4NWNjY2NlNDFjYzQ1NDc0YWI2OTg5NzI1YTViYjZkM2MxMmY2ZWQyODE2ZjI3MjU4YzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFmODE4YzdjZjIzY2I5OGNmY2I0OWZmNzRkN2NiMDBlNzU5ZGY5ZWFiNzg4MjlmMWM4YWVjZGViMzczYTBjMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc3MzlhNzI1MTBjZjgxNmM5ZWIzOGNjYjkxMzY1MzJlZTFlYTk5YTQ2NjI3ZTYxZDU5NmI5NzAyODBjYjc3MTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcxZGMxYzNkYjY0ZTNhYWQxMGFhZWI2M2YzOTQ0YzBhMTU4MmY1YTA1OWUxMDAwMDc3NWMxOTJiZjMyN2Q1YTUifQ" + } + ] + }, + { + "id": "claim_32057809a0ae4b06a6381325ce3c226f", + "statement": "SDShare receiver POST requires an http_endpoint source and N-Triples body, consumes application/n-triples or text/plain and returns text/plain/200. resource is optional in Swagger but required in source narrative; no statements for a resource yields _deleted=true, graph is ignored and sink determines destination.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L43-L57", + "version": "repo-lines-v1:sha256:b3c5c71239d00895b34b7c7675b5631e3d165d4f6c9c4a97673bb6242be1c8a0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiMGVjNWJlODgwZDFiZTIwMjQzMTFhN2Q4MGZiYzFiNWNkMWJkMWI1Y2IyN2YzODc1NGI2ZTk2YmUwNWUzYzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlhODJlMjA0ODg3YWVlMGM5YjRiZThkNjA3MjQ4MTZiOTI3ZTYxZGEyNmIyZWNjY2JhMDk5NWRjYWI2NDZjMDQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc5ODQ2OTYyZmViN2ZjYzIxMjg2MDFmNTVmYmRhNzA0YmNmMTBmNjY5MmJmNmY4YjE2MDMxNTNkYTM4MDhkZjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ5YjI5M2ZkMjc2OTg5ZTE1YzMwMGM5ZTdlOGYzMzhkZDI5MGI2YWFmYTNjNjk1ZjUzMmZjZmQ1MGYyODY3YTYifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2116-L2152", + "version": "repo-lines-v1:sha256:2e6d547f1789eee316a01a1de67955d2dcfc7339f50ced2c4fd39c830e4a9197:eyJzZWxlY3RlZExpbmVDb3VudCI6MzcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ5NThhMTQ3NWNlY2I3NWJjYWZkMDNmYmQ5YjkzYTIzNDAyMmFlMjEwMWI0Nzk1ZTQwYzI2NjllNzRjYjdhM2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVlZjQ4OGViZmE5NzA4MzVhZDcyYTczOWFhYzI3OWI4ZTM3MzhjMDgwMzU3YWEyYzU5ODkwM2RlOTI1ZGY5MGIifQ" + } + ] + }, + { + "id": "claim_9c712da61e3e412b8869f809e4c95570", + "statement": "Publisher GETs expose entities JSON, CSV text/csv, Excel application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, XML application/xml, and SDShare feeds application/atom+xml; since/unbounded limit apply except SDShare collection, filename variants set attachment names, and CSV linked_excel_file returns an Excel connection file instead of CSV.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L146-L163", + "version": "repo-lines-v1:sha256:2abedd188a1ae1cfb90a9f42d05e9994fb898099d67748032e1f5f180fee7811:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM3ODJkMjFkZTM0NDMyZTFhZDBlOGU4MjhkZmE2MDA5ZGZjMzY0Mzc1M2NiYmViZWQ5NzVjNmZhZTJiYjgxMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4ODMyNjYxYzYzYjkzMmI2N2FmMjc2MTkzNDZiNmUwNzAxZTVjNTEwMGU3ODM2ZDQ4NWVjYjM3YzNmYTU3YmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJkMzYxMjc3ODcyZDQ4YjNmMTdjNzNiNjM5OTM5OGI3MzI3OWE0NjYwMDg3YmY5ZGRhNmZjNzcyYTk4YjY0OGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4YjkzNDE2ZGQzNWQ0Zjg0MGQxMjk4YzZhYTYyNzZiMDNmNjcxMWY0OThhN2UyYTViY2MyMDdlYmE1ZTNkZTAifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L1647-L1805", + "version": "repo-lines-v1:sha256:a498c989bd1b3d7403bb43f68cdcd6d507ce9f3f8f8e625a83bb46bcb733826b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTU5LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJmZTM3MTUxNWNmZDNlMTk5OWRhNzkzNzZmNjg0NzE5NDg2MzM5MTQ1NDhkZGFjNjYwMGUyMWRmMTM1ZTQ5MGM2IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJmMzlkYmJiNDBjNDc0ZjU4OTBlM2IzMzUyZGM5YmYyZTdmNDI5OThkMjM5ODE2NGFkMTNkOWYzZTZiZmY0MDEyIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI1ZGQ3MDVkNmI2NzBlNjJmOWY0Y2ZlZGE3MjdhZDZjZWEyOTU4Y2YwYTk4YWZmZGMwNDVhNmJmNTk3MTg3ZmM5IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI0NTA1ZjlmMWQ0OGQxM2VjNTE5Yjc1N2VmOWIwOTM2Mjg5YzdjMDliNzRlOGNmOWRmNjM1ODEwNDQyNTZmYzBmIn0" + }, + { + "resource": "repo://hub/swagger_public.yaml#L1826-L2031", + "version": "repo-lines-v1:sha256:871f57a78f9f92f48e9f3f06827fca16bb1aba2c1e4c2e990decb28b0aef64eb:eyJzZWxlY3RlZExpbmVDb3VudCI6MjA2LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiI4ZmViZmNhNDUyZTYxMjVlODNiYjJjZjFmOWM5OTkzZTBkZmQ5MGFhNzRjZTJkNmNlMWZjMzExOWNiODM1OGNmIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJmMzlkYmJiNDBjNDc0ZjU4OTBlM2IzMzUyZGM5YmYyZTdmNDI5OThkMjM5ODE2NGFkMTNkOWYzZTZiZmY0MDEyIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiJmMmIwZjczNmI5Mjc2NTM5MzZkNmE4ZDIzMjk4YmNhN2U5ZTMwMjlhNGUwYTY5ZWUxNzJmYjhhNDJmY2UxN2U5IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiIyOTFmYTQ1MjdiNzkwNjg1ZjE0NTk4Y2JlODJjMDc3ZGMzY2JhNTg0MTAzNTkzOTA0M2ZlNDQ5ZjdhMzQwOGIwIn0" + } + ] + }, + { + "id": "claim_f6a7bbe819d3479da2052c135c900c94", + "statement": "Office publisher OPTIONS paths preserve trailing slashes at /publishers/{pipe_id}/csv/, /excel/, /xml/, with text/plain/200 responses.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L1808-L1823", + "version": "repo-lines-v1:sha256:76d9759993b008c429e5274edfa214293cffc39c0b9c1530b7be9b8f929e75b9:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ5ZDJiYmQyNDVjNTM3MzU1NGMwMTVhY2Y3NWZlOGNmYzdjYWM1NzZjNzNjM2RmNTkwOTQyZDExZGNhMmU0YzgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImViMzVhY2IxNGFjYmNiZDQwZDY2MWRiM2U1M2ZlYzRiNWEyZDllMGNjY2ViOGJhNzAzM2NiOTQ0ZDQ0MGNhODkifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L1905-L1920", + "version": "repo-lines-v1:sha256:b888d46babd7a6214d61f18575de135a741ce9a8b33d7989ba4a06a85db12ba9:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY3YTVlMWFiNGM5OWMzZDhlMDI1MjM4M2JkMzgxOWY3ZDY3YTVkNDdlMDU5MjE3ZTM0M2UyYjIzODIzOTQyMzkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE1MDYyZWM1ZWM4MDg4MzI5ZDgwYWRiZWNlMjBhMmE3M2EyOWRjYzFiZDU3NzViMDA2NWRlNDc2OWRhZDRjN2YifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2033-L2048", + "version": "repo-lines-v1:sha256:d42b40c68a0e03adaed188670ec5f378687b4e8ad8ac85b7824fda5d690e301b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4NjU0ZTZmY2ZkNTdhNTNkYWE1ZjI5OTFiNjA1ZjVmYTQxNTk0ZTdjZjNkMDhjYTljZWRmM2I1ZWE3MDhjZjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdlOWU1NjkzOTFlMGQyYWYwODM1OTY5Mjc4NThlNjdhODMyZGE2ODdlODNkYzdiYTU3OTc5ZjUwN2Q5NjZhMjYifQ" + } + ] + }, + { + "id": "claim_98cf634d88654ec9821b9d7d13b1bd6a", + "statement": "Shareable links use GET/POST /publishers/{pipe_id}/shareable-links returning JSON ShareableLink arrays/record and individual DELETE; POST requires NewShareableLink and all declare 200.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L2050-L2114", + "version": "repo-lines-v1:sha256:bac648120fe01d20e045b0147050f96925864ee2e01b0bc88fb8f8c6a68330b3:eyJzZWxlY3RlZExpbmVDb3VudCI6NjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ3ZGVhNDdmMzYyNDJkOTMzNDI3MjI3M2Q3YzkxNzE1ODIwNzdlY2RiNTVmZDczODliNjY5NjFhODA5YTFiMTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQwNzhhZDQ4YTk1ZGVmYWE1MTg5NDUzNTIxYTM3Mjc4ZjFkNGJkMjU2NTcyODA4Yjk2OWQ3ODcwNTNkZWZkYjEifQ" + } + ] + }, + { + "id": "claim_9ab55e77e68944f4b5331652ea027668", + "statement": "Systems provide list GET verbose=false with verbose disk-usage storage breakdown, POST required SystemConfig arrays and force=false, individual GET/DELETE and config GET/PUT; config PUT requires and returns SystemConfig rather than pipe PUT's Pipe, at 200.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L2258-L2341", + "version": "repo-lines-v1:sha256:d83f16ce2bc7c0499f63085b27255c3a4dd1aba7d3e5baf96d3444d8ae58261f:eyJzZWxlY3RlZExpbmVDb3VudCI6ODQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxOGU2YzVjNDQ1MmYyOWFiMmVmY2FmNzdkNjRiNmQ4YmFiN2Y4ODFhZDAwZWNhZmI5ZDdiYjBjYjU5OGQ2YjciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI4OTM0ODcwYzlmNDdjNGNhY2I3Y2IxNTU4NTQwOTI1MGIxMWQ2MzY3ZGQ0ZGRlNmIzZGI2MTY3OWE0ODBhNzMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA4ZmJkNmIwZWQ5NmVlMTIyNDhlODRmMDUxMDNkN2ZhMDNmNTNmOWRhZjc3YzM4YjU3OWRkYzE3MDhkYjIwMmIifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2502-L2553", + "version": "repo-lines-v1:sha256:3c23186cdb8727e051112e5fc4081f4bed334ce7fe90f3f95583a85ae3f512e2:eyJzZWxlY3RlZExpbmVDb3VudCI6NTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNlYmVlY2NmZmIyMjIwNTFiY2E2N2JiNDcwZDliNWUzNjg4ODZmYWQxMmQ2MGUyODQxNzUzZDhlNmU5MjU3ZWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMxMjg4ZjIzZGViN2U1MjQ3MjA0NjRjODI0ODM2YWJkN2E1ODg2NThiOWQ2OGI2MTIwZjY4YTAxNDAyOTQ0N2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMwNGYwOWNkYzQ2OTk2NTE2MDIwOWNkYTdmMDkyNzU4NmRmYWQ0Mjk4N2M5MWIwMTBkNmEzN2IzNTk2ZDNiNTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNlZDkzMmU2ZjFiZTg5ZTFkOWU5OTU2MjVmZjBmYzc5MDljNGEwZjM2NDgzMmU3ZWMxMDcyYTFhZjNhMzg0YzQifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L298-L302", + "version": "repo-lines-v1:sha256:afa771acddcda68e05dae19f81aca996578f56aebdbd47216ad59c83e913f83d:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjFjYzQ4Y2NiZjFlZjg1Y2NjY2U0MWNjNDU0NzRhYjY5ODk3MjVhNWJiNmQzYzEyZjZlZDI4MTZmMjcyNThjNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWVkZDRjNzhhMGJhODNkMjBjNzliYzdmYzkxMDhiMjhiYzc3MGVmY2Y3ZWIyZjBiOTI1MmZjNzYyYTc3MWZlNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmIwZTI1MWIyNTRlYWJkMmI5ZDY0MGVhN2E1MWQzYzk2MTQ3ODBkZTc3OGU5MjBhMGIzMDc1MGVlZmI2NzUzYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzEzYzIwZWRkMDI2NzFmODY5MTBjZDE0NjJmNDM3MTFmMmU1MjA5MWIyMGJhMTAzOGY2OTJmODhhZWNiZjVhMSJ9" + } + ] + }, + { + "id": "claim_452522b85027417d9d318c500972840e", + "statement": "GET /systems/{system_id}/logs defaults to 1000 lines and ISO datetime since selects all later lines; status GET returns system status/Docker inspect subset for microservices, both 200 without declared media type/schema.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L2344-L2384", + "version": "repo-lines-v1:sha256:c0b557cef2efd3b959d5aac5047cae43310dc6df45bfad5d2505b7b231bcac63:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM5NTdmOWZiNDA2MDRhYTY5NzNhOTVjODc5YjE2MmZiNDdiZjEzODg2OTliOGM4Y2I1ZTRjZjRiOWVhMzgzZmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU3YmRlYjc5OTU5M2Q4NzVhOTU0MDJlZjg0ZjdjMWM0N2YzNDRjNDRmYzJlMDgxNjEyM2NhOTVkNDMxYjk1ZmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVlMGUwMjUyYzkxMTc0ODc4N2ZiZTc2NDdhZTgyMDcyYTE3ZGRjNjgxYmYyMzNjMmNmNzM5NDhhMDIyNzZjODAifQ" + } + ] + }, + { + "id": "claim_2a9c85863e3c40a39aa8354f060cf302", + "statement": "POST /systems/{system_id}/reload asynchronously queues image pull and microservice recreation and returns 202 rather than completed reload confirmation.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L2386-L2399", + "version": "repo-lines-v1:sha256:52824728a9447486d941d5e9e5636e9dd3d8a4772fa399e0870814f92f7cd6b4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkyMGI4NDQyZTk5MGI4OWU4ZmI3ZjEzOWE4ODdiNjlmYmVjOTI5NDQ5MzY0ZDQ0N2FlYjQyMmNhODg3ZTBhZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNmYWJjMTA2ZjQzY2Y2OTg0NmIxZmY5ZGI5NDI2NDlmYzVlNGM0NDg0YjkwY2M2ZTQzNTAwYzEwMjViYTc2OTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVhZThkZWY1Mzg5ZTRjNjhlN2M0OTM4YjcyMzJlZjFjN2I2MWJkNTMxZDQ3YmM5MWFkZWUzMDliMGY2ODk3MGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkxZDg3YzA3NDQyMzZhYzYyMzFmYWMzMWVmMTZmYzJmNTQ5ZTZjYjNhNGU3YzMwY2IwMjY3MzRjOTliNWEyNTcifQ" + } + ] + }, + { + "id": "claim_a0b4e978e4bf4843a26742c1f7eaecf2", + "statement": "GET/POST/PUT/PATCH/DELETE system proxy operations pass requests to required microservice-relative rest_of_path and return proxied responses with 200 but no fixed media types/body schema.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L2401-L2500", + "version": "repo-lines-v1:sha256:21af650460197849c77e7f19db398493aaf0ff96590675aa73a06b9e4cfa9cd3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAwLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJjNWYwYjViMzFmMzVhZjdhMzYyZDdiOThjNDZmZDdkODFkYjljYmQwZjMwOTgxNWY2NmUxOGM4OGM3OTZjZDljIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI4ZTNlOTgwZGM3ODIxOTRhZmZlYzE5NTA3N2NiZmUxNzk3OGNiNGExZjEzZDQ2OTc3ZWRmZTk0NDNjZGM0NGYzIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI2NmNiMDk2NWFkZWJlMDk2ZDJiYzEwZTE1M2YwNGE3YTdlYzQ3ZDFhNWNiZTA3YzE0MzMyZDI3N2UyOWU3OTI4IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiJhMGM3YmMyYTgzNDZjYTMzZmQzNWFkMWU2NDg0MzhiMDRiMjdlMWQwYjk4NWE4ODFkNTY3NTdjNzUwNmY3ZjJmIn0" + } + ] + }, + { + "id": "claim_f808dbc900d547d2a8a5eeae9883666a", + "statement": "Global GET /secrets lists names; PUT/POST use JSON name-to-value payloads overwriting matching values and POST retains others; DELETE removes named secret. Responses declare JSON/200 without consumes declarations.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L1504-L1551", + "version": "repo-lines-v1:sha256:28c8455799f20d9f89773a936389bfc100a7df01e2312618aeadcde39982acc1:eyJzZWxlY3RlZExpbmVDb3VudCI6NDgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgyODg5N2U1NzMxMmQ1OTg2NGI3MTkwZjczZmQ0YWU5M2I2NWQzYWYyNzc1ZTEzZTg0YTQwMTc0OGNiNWFkODMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk3M2MzMDhmNzA0YzdiOTQ2ZDg1YzgzNTJjOWM2MjYzMzA4Zjg5NmI2NjlhZGYwOGIwOWQ5YTUwOTFmNjVjNWQifQ" + } + ] + }, + { + "id": "claim_24cadda31f2d4fee85b619a98af588ff", + "statement": "System secret GET lists SecretKeys, PUT overwrites secrets, POST adds/overwrites supplied values while retaining others, and individual DELETE removes one; bodies use SecretValues mapping and responses JSON/200.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L2556-L2640", + "version": "repo-lines-v1:sha256:0d11b5ffd400d283494e252684ec6b11ba845a5a9a71673d7c3989deeabbfe1f:eyJzZWxlY3RlZExpbmVDb3VudCI6ODUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVjZTZkOGQ0MzE1NjQ2NjAzZThhNDJlNGRlMjNhZjQzNGYyYjVmNjRjOGJjMzdhYzMzNWZhMTNmMDRhMjZiNGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNjYTA4NDJjZWEyODJjODQyMTdiYzIxNDNkMjRkMjllOWUxNDRjYTk2NmE5YTExMDUxNDVlMjk2MjFhMzNkNzUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyNGQwODZmMTI0NDVhMTVlZGViMDcyZWU3YmY0YTdlOGUwMzBlYjNjYTQwZDdhMGEzMmZhN2QxNTc4YjlhMjQifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2918-L2930", + "version": "repo-lines-v1:sha256:67ac23b5f76fc175fb134b9bbaed3bf11c15b7829e3e64ccac7560d26b373602:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI4ODA1NWQ3MDg5MDI1MjFiNzM1ZjI5ZDVhNDJlMjViYzA0YjM1NjY0NWIzNjE1ZGY5NzEwOWE2NjY3ZGVhOWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhMGJlZjA4NDNjYTAyNzVlYTNmYTY0MmVjY2JjNjEwOGM3ZTQ3OGQ2OWUwODhjZGE5YmMzMTUwOGJmZDJlYzMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZlNGI2MjViNWFjZTQyYmRhMzkxM2Y3MjA2MTJjYTEzMGE0NWM3YzNjMWY5YzcyNzg3NzQxNzBjNDBlYThkYTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFkN2RkNzk2NzE2MTE5NzhiYTljOTgyOWVmNmVmZGViYWU5ZTg0Mzc0NmZjNTk0YzdjNjNjMDhhMzQ4YmE5NWQifQ" + } + ] + }, + { + "id": "claim_9097e50798964d3ea7baa90b70a1ea44", + "statement": "Secrets are strongly encrypted with an instance-unique key and unrecoverable in original form after upload, requiring secure off-site storage.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L162-L178", + "version": "repo-lines-v1:sha256:bfaf509d512395f2c155eb5a63d8e74f172058f667fb105eaa4a542c0656b37a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdlMmJjZjg0ZmM3ZDdhYjdmOWQzYmNkZGQ1YzM1NTBkNzhmY2ZlYzRlMTYwZDc0NTc5MTk2NDY4NGIwYTE2NGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwMjU5ZmY3MDNiYTUwMmI5NDYyNjVkYWM1ZDJmOGE1NDY3MWMwZmFkM2NkMDUyZWY5ODM2NzEzYmMwNmRlZmMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgzZGIzMjZhYWMwMjAxZGE4NjIxYmVmODFlZDc3MjJmOWQ0MTBmOTU4ZGRhOGY0MmJmNTk0Y2JhYTRhODljZTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMyM2RjZjBlOWIxMjhhMzU5YTI3NTc1YWY3Yjc4ZDAyYTBmMzA0ZjgxNzVlMTQ0YzNmNmQ3ZDJkMzU1NDMwYzYifQ" + } + ] + }, + { + "id": "claim_5dd0d87f13354ad0a021ebdba671dcca", + "statement": "Global secrets last until explicit deletion; system secrets also disappear with system removal, requiring re-upload after deleting/re-adding a system.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L181-L187", + "version": "repo-lines-v1:sha256:ae0d79656aa9b5d00a553ed3cedec708e427f0e479000ff793544ef49c3f8eb5:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTAyOWExMDBhZjA3YzcxOTFjYjAyYzFiMTFkODY5ZGIyNGRhMWJmYWU4NWM3YzU0NDlhODhmMjM2MWVhYjY0OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGQ0MTQ5NzM4YTdmMmZhODE1NTZkZjNhY2Y4MTZiMjA5NGY1NWMwYmIwNjNmODMzZjk0YTgzNTZmMjczMDk4MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzc1ZjVhMDE3MmNkMWY2ZGZkN2U1NjI0YjgzZmI1ODJlZjE4ZjczMmM3NDU3MGIyNWIxYTUxYThjZWU0Zjg4YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDBmZDQ4M2Q4ZDFjNWQ5NWQxYTc2Y2Q0ZjlkMzllZGE5NmY4NzBiM2JlYmNjZjJjNmQ5M2NiYjdkZWJlNTEwOCJ9" + } + ] + }, + { + "id": "claim_440ca08afecb4663a426d31f89a3b4e9", + "statement": "$SECRET(key) substitution applies only to System configuration and resolves as needed at runtime without exposing values in API/logs.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L193-L235", + "version": "repo-lines-v1:sha256:171256ac6a33da2a69e9ddbd2c63d0aac76cb0710013532949303c9df8515d68:eyJzZWxlY3RlZExpbmVDb3VudCI6NDMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU1ZmY1YzY3ZGJjNjVkZWRmMTQ4NTM4NDdhM2FiMTE3NTI0ODdkMmY1ZjkwMmRlM2EzNzFlZWJmZTBlZGZmZDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI5ZDdmMDA1MzI5Y2QyNjNkN2I5Mzc1ZTE0ZWJkMTJmOTY0NGEwNjgzZTM1ZDA5OGZhNTk4MDRlOTg0MjhhOTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5ZWYyMDJiNTc1ZGRhNmVlYTU0Nzg4ODVkMWU0MDg5NGZkYzE0ZWM1OTEyMGJiZWQ1N2FmODU4ZDRlOWNmZjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAyNjVmMzQ4NGVhOTM1YWU2MDdhMmYyZTc1NWQxYWQ2OTJlZDgzNjc1NTdhNzY3ZmUzYmE5Nzk0YzJjNmY3NDIifQ" + }, + { + "resource": "repo://hub/documentation/operations/security.rst#L248-L253", + "version": "repo-lines-v1:sha256:431b75854766fcdf927e43a33d6e15ff47e3451c1ead05c2d1b0ebe6c14c94f7:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTM3OTA2MDY1ODdiMzNjN2JjZWQ5Yjc3ZTFiZTg5NzAwMTY3NzEyOGMxMjZiODBjOWU2YzJhNDg0NzUyMWJmMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDI1ZGEwZjdlYTFlNGNiMDhmZDcyYjZlMGQ5Y2Y5YzU1OTQyMGE4Y2UyMTE4NjlhMDAyMWQ5NGY0Mjc3NGQ4YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDE3ZDU3OTg5ZTBmNzk2ZWQyOTI1ZDYxMWNkMzRkZTYxNTlhZmNiOTgzMDExMDJjOTY1ZjJmNDhiN2Q4NzIyNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_85ddc92e0dbf458cbc30dd646bd57b2b", + "statement": "Node health GET returns JSON 200 or unhealthy 503, ping GET returns JSON 200, and root GET returns JSON status with aggregated=true unless false is requested.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L1394-L1425", + "version": "repo-lines-v1:sha256:10f02c3398e0d7cb1c6ccbf22444afc4be91b4efcb1fb74c79c8fe8b2db934fa:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJiYjUxMmUxZDFiOTAwMGZiMGMxYTRmZWQzYmNhMWVjMjAzZDQ5Nzg3NjA5MmViYWNmOTE2NWMzN2ZiOGJhYTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg1ZmM2OWUzYWNmNWNhNDg3NDZiMDZkMzliMGVhYmU4NzE4YzdkZjczOTBmNzMxMmM0N2IzMDQyYzdjYjczNmMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhhYWRmNDk5NmM3MDI0ODFmOTc5YjNlMTYwNDY1OWY4YTM4ZTJjMzJkYWU5YmFkOWE0ODk2YWRjZWJhOWFmOTciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY0MDYzNjliOTU5YWE1Y2Y1NDhhZjc3M2IyNWU1MGExMDkzYWRhZWYxMjJmYzY4Y2M2ODVlOTFjYWNiNDNmMzUifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L1554-L1572", + "version": "repo-lines-v1:sha256:6ba1966f3a8755575234439c74f78e776460288894237debb1b2150b83903247:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc3ZTViOTdiZWUzZTIyNjExZjllZmE1ZjQ4MWIwNjliY2NmZjYxMTYwNzY0OGMzZmZkZTQ5MDZiODliZmZlNjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYyNzMzZjE0ZDM2YTcxODdmNjdlMDg0MGRmNGQyODUxMjVjZWY2MTJhMDcwNmI5MzkwY2UxNDNlN2M4OWYyNTEifQ" + } + ] + }, + { + "id": "claim_8993b57548ca4f5ab3af4767eee86db1", + "statement": "Narrative /api/metrics is a Prometheus-compatible scrape requiring Metrics and monitoring enabled on a clustered subscription and an Admin JWT; Node Swagger has no /metrics operation. Pump metrics are absent for disabled/manual/off pipes.", + "evidence": [ + { + "resource": "repo://hub/features/metrics-api.rst#L10-L48", + "version": "repo-lines-v1:sha256:11cbc3dbb46655a104354485bc723ddba428b4a7a6a34b745ba1f8e4b2a0ef9b:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzODJlNzc1Y2E2YjE4MjIzNDY2MjdhYTEzYmFhNjQ0Zjg1MjlhZDYxMzYxZGQ2ZTAzZDBlYmIyYjZkMWRlMDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNhNWUwZDBhNDlkZWQzMTYzN2M4Y2UxNTY2NjZiODI2MTU0MzFhODA4NzdkZmZkYmE2N2IzNzhiMzE3ZmVkYTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc5OTlkMjJmN2UxYTJiYWEzNzMyYjdjMmM5YTVlY2Q5OTI3ZWUyNzUxYjIzNDkxNmIwMzk4ZjE2MzQyODM2NzYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ1YWFhYTA5MTg5YjZkY2ZjOWYxZjIwODE1NGUxMjFiNmNkMzJiZGE1NWVkMmI3NDQyNDhlYjkxMTcyNzM3M2UifQ" + }, + { + "resource": "repo://hub/features/metrics-api.rst#L148-L151", + "version": "repo-lines-v1:sha256:9d882137a4e84a7db80165e672094c79e3ee54618328a47d21942be598d44bf6:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODM5MTgxYzJiNTc1MmJhZGIxMTdjMjc5ZWM3NmFkYjU5NWUwMmVhNTIyMzZkNTI2MGZmYjlhNDA1NWVhNmUzNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2ViNmNkNmFhNzVkMzdmMGU1ZDYwNTc2ZGUxMGJhY2E0ODMwNTg3Y2RmY2I1ZTBjY2Y4NTQ2NGQwYTcyNTE1MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTU2MWYxM2U2NTE4MTM2NDM2NTc4N2Q1MWJiNGUzYWYyOTc1YjY0NzM0M2M0YTE5ZjVhZTM2ZDA5OTJhYjc0NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2ExNzAwYmYwM2JmZDc4MjRkZTNlYTg4MmNhYTI2YWQyMzkxODA3ZTFhYmFiZGM5NmI0ZjRlM2QzODE3MzdmOSJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml", + "version": "repo-file-v1:sha256:28f843da91545e5545adeab21dda35769d904904796495dfee6c676e696c2cc1" + } + ] + }, + { + "id": "claim_3af6871b6bf64ccd9ba6b755bf3ae6bd", + "statement": "Portal standard subscription/pipe monitoring GETs return JSON standard monitoring information at 200; /api/monitoring/invoicing/{subscription_id} returns invoicing information rather than Prometheus metrics.", + "evidence": [ + { + "resource": "repo://hub/features/metrics-api.rst#L33-L42", + "version": "repo-lines-v1:sha256:8a06bd426dcf04c86707e658a2e89d2b0bbca1fc11b7afa4a39292526d1764b5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc0MzAxMGNiNGFiNzk2YzczMGIxYWMyMzc4YjVmN2FmODNhOTAxOTFjMDJhOTE4OWU0M2NhODAyYjMwNzdmNDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjViMzU4ZjAxYWRmM2NmYTJmYjYwMTYxMjAzNGNlZDgwZTgxZjBmNWE4M2EwM2NlNjZiZTVmMDFiYjZjNzUwYTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYwYzdhNGNjY2M4NmIzOWRhMmI0NDJjMzMwYmJkNGYwNTJiY2U1Y2FmZTc5MTg5MjkzMzk2MDUzYmNjMTNhZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4YjkzNDE2ZGQzNWQ0Zjg0MGQxMjk4YzZhYTYyNzZiMDNmNjcxMWY0OThhN2UyYTViY2MyMDdlYmE1ZTNkZTAifQ" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L1335-L1395", + "version": "repo-lines-v1:sha256:e0a9285a3198fac84738a9a6138626660cfeb0d920b65c9265685976d7b81a88:eyJzZWxlY3RlZExpbmVDb3VudCI6NjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg4NTk5Y2E3MzkzYWNlYmFiYTA1OGFjZmQzNWE3MTUxZDA4NGM4NjBiYjc1NmI5Zjc5NTgzOGJmODkzODc1MzAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRkZDE0MGNhZTE4MGFiMWJjY2UxYjZmZDE4YzU2Y2NmZjQ1ZDgxYzI2YjdjYzNmYjcxYTE3ZDFkM2IzOWU0ZjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhjMGU5ZGU0ZmEwMTNlZGZjNTA0MzMwYTE2ZTJlYzMwMDRkYmE4MTAzNjQyYjVjMDk5MzNhNTAwMDI4NGI4ODAifQ" + } + ] + }, + { + "id": "claim_99db628cd427440ea4864facf06f9da2", + "statement": "Portal root GET returns JSON status/feature-level and authentication providers; login POST consumes form email/password plus optional captcha and creates a session cookie; signup POST consumes required globally unique email/password/name plus optional captcha, returning JSON/200.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L1481-L1515", + "version": "repo-lines-v1:sha256:783ab69f1e33589aeaa0e1cc7c02f51f7cfb76378d0f821972217f805f47d521:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUzZjI1ZjY2OWFkZWIzYjQ3NjEzZjg5ZDRiNzI4YWVjNDM1NGQzMGUyZWEyMDExODlmNDFlYWZmOGZjMzJmNjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk4NDFlZmRlNTk0MDFiYzUzZTAxMmU3NDQyZDVmYThlNTFkMDI1ZmNkZTY1YTFkZjg2MzdiN2RjOWJiMjE3ZTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgwYjZjMDdiNzYxMTQ0YTU3YWI5NDk0YTU0NWIxMmEyZWQ5NThjMmM3MjVhYzVjNTc3YmFkZDQyM2Q2MjA0OTIifQ" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L1542-L1581", + "version": "repo-lines-v1:sha256:f1dbfc1bc9160e895744e791e0943f546afa21a22c378454d66b9a719bbda014:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM5YmU2ZWMxYTFlN2M3OTdiOTRkNDc2Y2I0N2Q4ZTRiMDRhN2YwY2M3ODM0MjM4ZjdhNjRmMzhmODNlMDQ4NWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiNWQzNGUyZjg2YzU3YTNhZGJmZWY2NzAyMjkzNDdiNzdmYjRlZTE4ZTdhMjViNDhkZTk0MjUwYmY5YzJhMmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE3YTY0Y2NhOGE2YzRmZjYwYjU4MTExNzUyNjQ2ZjgzMTBkNmUxZjZiYzI1ODY2ZWMxMDBkZWZlNTAxZTJmODkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ5ZmJmNDAxYTk2ZmEzYzhjODNmYzAyMjdhMjBkYThjNWQ0NzczNzY0ZTIxY2Y5ZDJiMDVkYTljYTlmM2FkM2UifQ" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L6-L128", + "version": "repo-lines-v1:sha256:a2c70a4e654c1ce6efcaf549e15aa141cb2497eeaa7d6286e2dc75b48ffdd04d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIzLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiI3NTc4NWQxYmQ3NzA0OWJiNWQwZWU4YTBjOTcwOWRkOGZiNjk5ZmU4M2ZkOGVjOTdmYzA2YTU1NDJhNWJiZTdhIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiIyYmNjMTYxYTRiOTVkNWUxNWFmYTg2MWJmZTIxM2JlYjQwMGY3YmJkOGU3MzA3MWQ4NDcwMzdhNzY2YTAxNzI3IiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiJlZjIwODZjNzViMDc5NGExZTc5N2RlMGQzNjAxOTg0MGJmNjY4YjUyNzNiYWYyNjJmMTE1MzJlYWM5YjAxNjU5IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiIwYzZmZjY5ZDE5MDcwMzIzYjViZWQ0Mjc5MDQ3OWFhMzZjZDA4ZTE5MWZmNjcwZDMyMmQ3MTdhMmRmZDU1ZjAzIn0" + } + ] + }, + { + "id": "claim_71044af80743435fa30e486b43965faf", + "statement": "Portal profile GET returns Profile; PUT accepts userInfo/profile sparse updates preserving missing fields and cannot change email; profile2 GET adds 401 when unauthenticated with replacement only a TODO; individual profile DELETE deletes the user.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L145-L254", + "version": "repo-lines-v1:sha256:0f883456d3bffcb158ad781c6ca32678e318db67f59553addeb1d09fdbdf18fe:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEwLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJmMzU3MjM0MjQ5NzlkYWY2M2QxMGFkMTFiYWJjYmRhMjFmMzM1OGRkZmNlZWFkZGFhODAwYTY4ZjZjOGIzMTY0IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJmMzlkYmJiNDBjNDc0ZjU4OTBlM2IzMzUyZGM5YmYyZTdmNDI5OThkMjM5ODE2NGFkMTNkOWYzZTZiZmY0MDEyIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI5YjhmOTNjNmI2OWYxMzhlY2UxMGJkYTU2NjM0NWY4YjEwN2Q1MTI2NTFmOTFjZTEwNjdhMDNlNDI0NDVjOGIxIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiJkMzdiNmQ3OGI5YjIwZDM0NGZkMmE2N2ZmYzg1NmY2YmVkMmQ2N2ZjY2Y4YjM1NTE0ODk4MWJlNjRmNWI2YTcxIn0" + } + ] + }, + { + "id": "claim_d436e909392d4bdab4c35e9b80df9d2d", + "statement": "Portal logout GET is deprecated legacy logout returning Profile at 200; logout2 clears session and redirects 302 to Portal or third-party logout.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L1517-L1540", + "version": "repo-lines-v1:sha256:662f0d4e0f5794f624f3e4d213e4b6dbf2fce70ace50c3848a67c12b5303f1e9:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2MjYwZjM2MmYwMWUyMDhhOWI0YmZiMGI2ZjY1NTllMDZlM2I1Y2E5NzY2Yzg2MmFjNGVjM2IyYzBjMjk2MWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUyMzM5OGExN2Y3Nzg5ZjI1NTQzYzY0MDRmODE0Mzc2MDMxYjM2NDg5M2RlNzViOWI1NzE2NzAxNjA4MjY3YTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhjNTZmMGRmMGU1YzAwMjFhNjIxOWEyYTA5MTU4NGQyNzBhNjI5MGM1YTZkZDkwZGI4NGRiY2Y0ZGU1NWMyMTUifQ" + } + ] + }, + { + "id": "claim_4d5452ce731948e6949a54189e00436b", + "statement": "Portal password PUT requires password/old_password; forgot-password POST emails a one-time link; reset-password POST requires password/token. Form operations return 200 objects requiring boolean success, with reset response media type undeclared.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L1771-L1877", + "version": "repo-lines-v1:sha256:cdc6aad34da8a4023fdff0abb2f9f6752a534cb167f6764ff1801d5cf47ae31c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTA3LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiIyZTlkYmVkYTg2Nzc4M2MxZTg4ZjM5NTMzMDY3ZmRiOTY4YzRmMzEwNDMxMGJiZmJlYWI0M2FlOTljZDNjYmFiIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiIzNGIzZDY1NTY4NWJjNjkxZDgzN2JlMTgyNWU4ODlmZGVlZmY3MTRiYjg3OGI1OTFkNDgwZmY2Y2NiOWY3MzZjIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI2YTNjZjUxOTIzNTRmNzE2MTVhYzUxMDM0YjNlOTdjMjBlZGE5OTY0M2ZjYWY1YmJlNmQ0MWFkNTliZDEyMTY3IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiIwMjQwNDYxMDYxMjVmNGJhYjdiZDhmN2EzNjI0YjFjMDRkOTczOGVhZmZjMWZmNzJhNWVjN2RlZTJkYzVjZGZkIn0" + } + ] + }, + { + "id": "claim_353992fc8013405f8f96ab0fd568a3bf", + "statement": "Portal verify-emailaddress POST requires token and returns 400 for invalid/used/expired tokens or 200 on success; request-email-verification POST returns 409 if mail is pending, otherwise 200.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L1879-L1914", + "version": "repo-lines-v1:sha256:ac4993f1738bc193dc84898830a418f694f6fc79ffb972fefe54a66a7c0cfe1c:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4ZDk1OThhNDM2NjZjMTk4ZDg5MDFkNTZiOTBmYTU3ZTA3ODcxMTk0ZTdhODM0YjRjOGMxNGUyOTE1NmFjZmEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE3MzZjNTU3ODU1NGJjN2UwYzRhYmM4YzQyZDhmYzZmNmI1ZDAyNzU4OGViZjhjY2E0Njg1ZTVhOGYwOTQxODIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY3OTIzNzJiYzk4MDMyMjM1ZGUwZGVhYWYzMjJkYzQ0NGQzYzVmMzlmYmNiM2I0ODhjMjI3OGMxOWIwNjY4YTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk2Y2RiYmMyMTc4YTc5OWIzNTQ4OWIyMzVkYTkyNWIyZTY3YzZjYmYwODI1NDEwZWY0ZmI5NWI0YWQxYzA0YzMifQ" + } + ] + }, + { + "id": "claim_f31bcff2a0d648a2814f025ed1ec998d", + "statement": "Portal provider login POST and login_callback GET use 302 redirects; implicit-flow GET serves HTML extracting fragment id_token and calling POST /api/jwt_login.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L1411-L1479", + "version": "repo-lines-v1:sha256:32cb6de14a558bd9da8631de165e2a52af3fcf49a7939bb7fd1ebf5df76941a5:eyJzZWxlY3RlZExpbmVDb3VudCI6NjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZjNDYzMjg3MzI2NTIwNmJkMWE1YzZkMjYzYThmM2U2NzY1NmRlNDYxZTU4MzdmNTU0ODFkYjRhY2UwY2I5NzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhYzE5MGNhOWM3N2U2YzQ4OTQyNTliYjkyMWI1NWU5MGU1ZGZmZTA0ZWViYzFmOTg4YWU0YTViYWRmN2I5MDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRiNjAyOWUyZTg5NzE0NDM4N2Y2ZDY3MTg0OTA1YjY4Yzk3ZTZmOGQxNzg4ZTFjYjQ1YjZmZWYxODZlOGYxNzUifQ" + } + ] + }, + { + "id": "claim_2db6c5a413564109bec5fd677a32ca8c", + "statement": "Portal subscription CRUD uses collection GET/POST and individual GET/PUT/DELETE, optional NewSubscriptionInfo creation body and required UpdatedSubscriptionInfo update body, with JSON Subscription arrays/records and 200 responses.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L353-L449", + "version": "repo-lines-v1:sha256:3d160143ebe47224a79cd56e31ebac020e9c846d178eab4c07d4651ada1360cb:eyJzZWxlY3RlZExpbmVDb3VudCI6OTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNkODJmM2E0MmY5Y2E4OWRjOGM3Y2JmZWYwOTlmODJmNjIwYzQ5ZTM4ZDQzNzkzYzQ0MDg5ZDI3NWE5MTMzNWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2NTJmZjU2ZmRmNzMyNDJlYTJkZDQ0MTBlZjI0ZTZhNmY5YWIwMmUyZDMxNTU4MjE0NzU3YzM2M2MxNjVmMDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhkM2VkMmMyYjc4MmRlYTVmNjdiYmMwMmRkOTgxZTA0MDk2YjIwNWQ0OWE1NTE5YTljMTQ4Njg4MGU1NGJkZWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQyOTkyM2QxMzkzMWEwZjIwNDhiYThjYjYxN2EwMWFhODhhYWY3YjE5YzRmNjMwNzk1YWFlMTZlMjdhNDcxMmMifQ" + } + ] + }, + { + "id": "claim_92a68b8370094edabf68c43eedcc141b", + "statement": "Portal available-roles GET/POST lists built-in/custom roles and creates custom RoleInfo; individual GET/PUT/DELETE reads/updates/deletes RoleInfo at JSON/200, managing subscription roles rather than Node ACLs.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L26-L39", + "version": "repo-lines-v1:sha256:25dabc76de25b06390bffc3296a31a5d7c1607f05f2f8e70f85a1eae6591abbe:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMwNTdhMTZhNjhjOWZiNGJiMThjYjQ2MjZiNDAwMTYyZTU0ODdiYzk5MjhhMTRiYTY1YTg4ZGMyMGUyOTIwODYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwMmJjZjQ5NmVjYzJmMjU1NTZkY2M4MjUyNDdmZjNkZDU2MTEwZGNlZTFkODE5YmUwOWVjZmY5YWZlYzU0MjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5YmUwZTVlMmZkZDkxYTZjMDY0MzVkY2JmZDZiNzhhYjE4NGY0YjliODU0NjYyZGEwNWY1N2QyYTk2YjM4YmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUxZDJkZGIwMWYyOTViMjEzNzE5MWNjNmI2NGQyNjJiYjVjNzJkNzgzM2JjMTQ2NWJjNTZlZDEyODc3MDZhNDgifQ" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L452-L499", + "version": "repo-lines-v1:sha256:90102fc118f323bc7321d1c736eff363bf13782549ee60d0e8de3b46c80bea11:eyJzZWxlY3RlZExpbmVDb3VudCI6NDgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY3ZjQwODIwNThmOWJlYjRmYjhmMmFkNjgwYTFjNWFhMzExMDY5Mzk5MzBmNmIxNTQ3MWRhOTE5NTJhMzhmYmEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4ZDQ4NTUxMzVhMmFjYjFmOWE5ZmZiMTcxNmVjZjQxMGM1MmY1NjU2ZGIxZTgzY2I1YWNjOWFkMmNlN2RhYzMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU4MzJlMjUzYjIxY2FlZjRhMDVkM2MzY2JlMmEyMTg3MzNlMGI4M2JmZTM4MjM1OGI3OTkwNzc1NzkxMjI4OWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjViMDM3MGU5MmRhNDU1ZWM1OGJiOGM5NTllNThlODg2OWM5NDMzZWQ5ZmE4MWJhZDg3MjdmMzE2YWFiNTQ4NTIifQ" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L695-L777", + "version": "repo-lines-v1:sha256:a0ffa66acd0870a3d600c5fd4b9e1b19e1bacf58d434021ece8e4197379395f9:eyJzZWxlY3RlZExpbmVDb3VudCI6ODMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdhYjk5ZTViNWUzY2FjODY4YzA4NGIzZjA0NjBkOGE5MzE1ZWNmYWY5NDc1NWJjNTBlYTA2NmJiNGYzNzVlZWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4ZDQ4NTUxMzVhMmFjYjFmOWE5ZmZiMTcxNmVjZjQxMGM1MmY1NjU2ZGIxZTgzY2I1YWNjOWFkMmNlN2RhYzMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU2NmQ4OGVhMWJjMDZkOGJjYjY2YjI5MjQ5YWQzZjcyMmRkMzdlMjVlMzU5MzY0ZjVmYzc3YmQ0NzdjOTA0ODgifQ" + } + ] + }, + { + "id": "claim_06b8d9ef38df4d7186536465a463ddaa", + "statement": "Portal members GET uses start=0 and optional unbounded limit returning SubscriptionMemberInfo arrays; POST invites with InvitedUser; individual GET/PUT reads/updates roles with UpdatedSubscriptionMemberInfo, all JSON/200.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L780-L903", + "version": "repo-lines-v1:sha256:2451f1ffef2f44a62a6f7deb3fdc841faceb9a8a3e64452d00527f7f39683061:eyJzZWxlY3RlZExpbmVDb3VudCI6MTI0LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiJlZDY1MTlhOTBhNWQ0ZDJhMDEwYWYyYTZmMDNlNDAyOGZmMDdhMGVmMjYzZDgyYTZkODAyZTMwZjZkZjRiNWQ0IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJjMDExYzJlZjI3MzRhNmVlMTAyOWJhNDQ4N2Y3NjE4ZWI3YTJlMThlODQ2NDhlOTRkYTkyOTAwY2RmYjEwZTRkIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI3MTIwZjhjNDNlNWM1MGQ5M2NiYzM4ODgxMjY1MDE3M2Q1MzEwMmU4ZjhmNTVlNGRmNDkzMDVmNjNiZDg4YmZmIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiJjMTJlYTM0MWJlMGQzMGU0MWE2ZTc4Mzk4YmM4MjFjYmNkMmVhMzY4MTYzMmQzMjRiNWIxNzBkZTM3MDJhODEwIn0" + } + ] + }, + { + "id": "claim_3ad52903586b47ccb43e4945bf9ba266", + "statement": "Portal JWT GETs return current-user tokens as text/plain; POST /api/jwt takes form email/password and optional subscription_id defaulting to all user subscriptions; publickey GET returns RSA verification key as text/plain, all 200.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L256-L326", + "version": "repo-lines-v1:sha256:f7e6ffc2d44505daef50208177d9a0afde5446aa81c67b0e0f96ad94469a562a:eyJzZWxlY3RlZExpbmVDb3VudCI6NzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE5YmZhYThlOTdlMGM3Nzk5NDE0ODMyYmNkN2RjNzhkYzM2YzQ0NjhlZWEzNjQ4OWE4MTM5NjVjNTIwYjUxNzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE5Y2M5YmVjY2U1YWViYzBlZDU0YmJjYjVhYjQ5MjQzYTNiMzBmMTIyNzA0YjA5YzY3Mzk1OWEyOWI0NTI2ZTEifQ" + } + ] + }, + { + "id": "claim_0cfdac1da52d4ad69641944f0e404858", + "statement": "Portal API JWT records use collection GET/POST/PUT and individual DELETE; creation requires jwt_settings exp/principals for script/cron tokens; update requires a body but no individual schema-required settings. Responses are JSON SubscriptionJWT arrays/records or OK at 200.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L521-L692", + "version": "repo-lines-v1:sha256:c1a24328090711682534573656fd4e90d642d2893af77de200ce387de5e0242c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcyLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiI4ZmQyODEzMjJmMTU1ZDdhMjM1NDdhMjEwZDA1ODA4NjEyZWEzNDM3ODU1NTUyNTM1ZThmMWNjMWY3MzhkMjk3IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJmMzlkYmJiNDBjNDc0ZjU4OTBlM2IzMzUyZGM5YmYyZTdmNDI5OThkMjM5ODE2NGFkMTNkOWYzZTZiZmY0MDEyIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiIyYWNhNzhjMzI5NzEzZjkwODYxYzkzYmY1ZDMzYjU3NWRjYzNmZTg1ODM4NTUxZjRmOGY0ZmI5Nzk5MmFlMTI1IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiIyODMxZGU3NGI3MGFlNDcwZTZkYjkzZjFjZWUzMjhlODIwODRiZmViNmM3MWQ5NGFjNzYwYWY1NjdkZDNjYjJjIn0" + } + ] + }, + { + "id": "claim_6f3e1d4908144576a13d31699e45a1c1", + "statement": "API JWT exp is seconds since Epoch; refresh_interval makes it the final refreshable time while signed expiry is current time plus interval. jwt_string/client_secret return only at creation; api_token_id supports Node invalidation checks and principals maps one subscription to its principals.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L4702-L4787", + "version": "repo-lines-v1:sha256:bf88a30888538fda2d13f85034cf17834f625a88ab8fbe5a16c45a52e8c41678:eyJzZWxlY3RlZExpbmVDb3VudCI6ODYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE4Njc5M2FmMzYzMDNmZWQxOTcxOTdmMzA5YjExNjRmNjA1M2VkNzMwN2YwMzk2N2NkYTE4NjhjMDEyZjQ3ZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU3ZWFiOTEyMWQ1ZjU3N2UwMjhlNzc4YTMwODA4YzFkZWFiOTNkNjhjNDUyNjNkOWUxMzYyZmZhYmQ0YzU2MDEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRjZGVkMDgxY2EyNzg1MWNmYjFhMzM3YmJiZGYxZWQ5NDgwNDJkYTJiOGYyMTQxZTVhMzlmYjBhYTJlNGFiYWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImIzNjIxNTliNTZmNzlkZWFiMTgzOWYxNjQzMjUxMjhmMGU1ODlmY2YxN2I2NWNiOWI1YzhlOGU0NTJkZWQzZTYifQ" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L579-L596", + "version": "repo-lines-v1:sha256:2e38350cad2b37e81ea53cfde7d097b69e9c25a7d274a2e8001253096a8dc8e1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzMTMyM2Q4YWQyMDhmNTRlNjIxYzM3YTg1YTUzNGIzYzZjYjI3ZTY4NDMxYWU3OTI5MmZlMzc1YzJkMDUxMDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVlYWYwM2FlMjgzNGJmZWNkYjk3Y2VkNWEzZWZmY2RhN2U2MGFhZDI4NGQ4YjM0ZDIwN2E5OTM2ZTc5ZWM3NjAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg1NzJhYmQ2ZDUwYjFhNzFmMjcwYzRjYTU3ZThhY2I1ZTlmMzQ1MGQyNDMzZWZmMjYyZTU1YjFhYWY3MGY2ZjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNiYjJiNjIzNDE5YjhiN2UyYWU5OGRlM2RmYTk4ZjMwNGJlOWFlMjcxZTkwNDEyNTRkZDEyNTA5MzdiYzM1MDkifQ" + } + ] + }, + { + "id": "claim_2535bc2cfe15461289ab18aa629a4236", + "statement": "Portal discovery GET returns JSON provider configuration; token POST consumes form grant_type client_credentials/refresh_token, client_id/client_secret and returns JSON/200 without detailed response/error fields.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L2782-L2821", + "version": "repo-lines-v1:sha256:b15a9ded05cec2056945fbc21197bb8fc8a8ceca62bcf97fb956db3d768625b3:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY4ZTM0MmNiNWE0ZmJhNGQyMDljMmI0MDg0N2JiY2FjMzE4NTY0NTExYjljNzUyODFmOGY5MTdhNzk4Y2ZjMmEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZlZWQ3YTExMjA0MTRlMTQ4NmNlMWJiZmRjZjMxYjBmY2JhMjEzYmJjYmIzMTEzOThiNWVmZmRlYjYwYTM2YWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY5MWYzMmVjYTIwMTY1NzlhYTMwOTQxYzgzZmZiNWFkNjMyMDRiNDBiODhhMzM5YzJkYzFhN2YyY2E5YTFhMzYifQ" + } + ] + }, + { + "id": "claim_332d4d3479144d30a9e2d914925e0c05", + "statement": "Databrowser end-of-life is documented as December 31, 2023 with Integrated Search its successor; DAP Swagger explicitly restricts endpoints to internal use subject to arbitrary change/removal.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L921-L927", + "version": "repo-lines-v1:sha256:179ddf71bf11d867092283f70d1e4dca826cf0d179b4650fcb3707888942c713:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTgxMDExYzExNWE0N2E3NTgzMWM5NmM0ODYzYjQyNTdhMmFmMzQ4ZjFkZDMwZWVjNDNkZDc4OWVlZGYyMWQ2MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjVhNDg3Y2YyOWQyOTZlN2UwYWY5Y2EyYzgzZjNkYTM2YWNmZjIzZTY5MWY2ZTY5MjcwNWEwNGFlOWNkYWE4MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNWZlOTE4YjkyYjI2Yzg2YjE4ODhmZWY0ZDM1ZWZkN2JhN2FmNmY3NTc3YjE1YTIyNWI1M2EyYWVhZmViNmY3NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGYzZTMxNDg3OTQwNTlmZjdlNmY4YjU1ZjQxZDQwYTUwNGE0ZTliYWYzYTQ3MjM3M2E5MmFhOTY3ZTEwZjcwNSJ9" + }, + { + "resource": "repo://hub/databrowser-api.rst#L1-L8", + "version": "repo-lines-v1:sha256:c39feb1e6de868447e2f8a4c39d4d2421812585cc09bc8a9e5bcb5813aa0efac:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDY3NGVhNDc2NjczYzBhYzg0NTUzYWMyMjEyYjc5MzVhOTY3ZGExNmEwMTM2Njg4ZjBmZmFmODdmZWI1YmJmZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzRkOGQzOTMyNDEwMjJlMTU5MWM2ODcxYTU0YWU0NGU3Y2E0ODc4MGM3MTUzOWUxMDUwOGJkOTM5N2FjYzZkMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjhlMDdmYjE2Y2M1MjVmN2Y1MTFkMTM0NTEyNzg4NDJjZmExNDQ0NGFjNzMxNWMzNjU1OTczODVhNGU5NTJkNiJ9" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L2-L14", + "version": "repo-lines-v1:sha256:f345e5e63f7c9203463e6701f7a54155301ef5fd69fab17d1f08f8d06173e9a2:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY5ZDAzZjBmY2UzMDM0ZTEyNWMxMzQ3OWY4MDQ2MTI1YTE4NzA3Mjk4ZDY0YzdhNTQ4MjI4ODI4MWZlY2ZkNmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI3ZTEwYTM0NDZhMzdmYzRmNmU5YzI3YmFiOTk2ZjVkOTNmNWZiMzBhYjQzNWM4NmM4YTQxNmE0YmNhY2RmN2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjoxLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc2OGM5ODc0YTkwZjI3MDgwM2M1ZDk3ZTY1YjEwYTU0NDM0MzIxZDc3YzE1MDE0MDY0NGE4ZTU0NmJmZDQwNzYifQ" + } + ] + }, + { + "id": "claim_6d64ecc8437a4571876f5b2b502319bf", + "statement": "Legacy DAP config uses higher-numbered layers over lower ones, with /sesam/data base applied last over numbered layers and /sesam/conf; Swagger and narrative curl use /configuration/conf/{config_layer}/{config_file_path} while the narrative introduction omits conf.", + "evidence": [ + { + "resource": "repo://hub/databrowser-api.rst#L13-L45", + "version": "repo-lines-v1:sha256:94f8e97636823afb53d853fb729d5a2645bbcfacc2d0d4ee7c9bc790d9b89e4d:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI0YzZlYzEyNzQ0MmU2Njg3YTZlNDIwMTRiZDE3ZDYxM2UzYTQ0YWZkYzFkOWEwMTAzZjY5MjQ0YmU2MGVmNjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ2NmEyZTA2Yjc5NDUzNjgxM2VmNDkzOGZhODg2YjFjNGU3ODA0MzRmOWVmZTkzOTczMTlkZjJhZjJhNjM2OTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ0NjA0Yjk2MTA2NDI2ZTNiZGU0M2MzY2JlMDEyYTQ4YjBmNGIwOTE4YWQ3YTM5ZjQxN2U4OTczZTJlOTMyYTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU2YTM5YzQzYjQ5MmNkOTFlMzY3OWY1NDczOTc4MzU1Y2FhYjA4Nzk3YTdmNWI1YjFmN2Q0NTRkYmEwNmUyYmEifQ" + }, + { + "resource": "repo://hub/databrowser-api.rst#L65-L69", + "version": "repo-lines-v1:sha256:1b0fb5614e6e9d62a907c9c3fd6f4695d79168e55c20f533bd8bc9b4c5260036:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjZjMjgyNmE5ZWE3MDA0NDBkNDI2MWYzMzdlYzkxMWM4MTE3MmY1OTgxMmNmZjMzYWNmYWI2NWIwNTZjYWMzNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzc1NzBmYmZkZTVjMTlkN2E1MDkxZDczOTk3M2NhZTlmNmJkYmUyZThjNTE5NGJjZGI1ZTMyNjkzZTNjNmE0OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTdhOGQ4Nzg0OWE4YTE5NTk0NDMxOWI2MTBjNjc0ZjljMzU0ZjMzMmNjNjc1Yzc5ZTdhYWE0Njk3MTZlNTczNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L1227-L1234", + "version": "repo-lines-v1:sha256:b084abacc13e7db13b8945339b34b2568719356bcaa1eaeb86e329cfa43f3a0d:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjExZjk5YWY2MzE5M2FkZGNiMGIzNzJmYWYwYzNkYmQ5OGJhMDQ0OThkM2Y1MTc3YjQ0OTFiOGQ0MDQyZTAyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjIxODE3NDA3M2ZiOGU4NjE4Njc3NmY5NzFmMmU5MWMwMjBhNDlkYmFlODJlZWQxNTZjM2Y4MGFjY2NkODIwOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzZkZTNmNDg1MjYzOWU0MGQzM2NhM2EyNzQ2NzYxZjA2YTA5NDhmYjY4Y2M5NWI2MDIwNjQ0MTNmMzVhNGY3NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWIxNzBlZTRhMmIzNTkxNWQ1N2IxY2M1MTcyNWQyZjA4OTljNDM3NmQxZjM3NDAyM2IyYjAxZDM5NWI0ZjhjMSJ9" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L430-L435", + "version": "repo-lines-v1:sha256:94d43d70a5fb5e19704207f469b53a10670231410919e3aeaa7c4243806ac7aa:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWU4YWEyYjQ0MDMyNTcxODI2MmJkZmVmYmUwZDkzODNmMDFjMDlhYzdiMmRmM2EyNTY0NmI3NjFiZWJjMTk3MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTA0YzBhMDQyNjg3MTI2OTJkZDllMjBmMDM1ODg0MGNiZjAyZmJjNWRlMjM4ZWY2Y2VlYWNjMDM5YjQxNDZiOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzQ4MDY4ZjcxOGNiY2ZlY2U5ZWMzYTVhMzI1MzliMDcwYmJmMTMxNjUyYzIxMzgyZGE3ZmQ4MTIxZTkzNjhlNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGRjNjA1YzM1ZDg0MGFmNzQ1NjA0NTg4ZTdlZWYyNDNkMDZkZjlkZTY0N2JlMjgzNTY4Y2FmMjA0MmQ5ZmI2YiJ9" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L495-L530", + "version": "repo-lines-v1:sha256:3ffe60b242e2460bcc2b15d8a7fccaaba928491b26b241df7bf31d54a58656be:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4YTg2MjE5MGRiMjg4MjY4MGI1YWRkMzU4MmRlYTA4YzYzZWRhNGMwYmJlNDcxNWNmMTQ0NDhiMjJiZmQwZWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYwYTYzY2Y0YTJmY2U2MmEzYTY4ZjU3YWE3MGI4NTk4YzdhZTk0YzAxN2RlMjBjMmJjODdiNGY3NWQyYjYzNjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNhYzJkZTliOWY0NjVhN2Y5NDA4ZmZlNTJjZjRhNjIxNjBkMDMzYjRjZGY5YWQxOGU3NjZhMzBiMjgzODgzMzMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFkY2FhY2IyNGI0MThmNTUxNjIyY2NiNDg0NTcyYTQwMWUwMmY0ZGRmNDliY2U0MzI2NzllZDk5NzY4YjU2YTEifQ" + } + ] + }, + { + "id": "claim_0e38dab44629490e9e7403bb14282eba", + "statement": "DAP file GET returns text/plain or octet-stream/200 with empty body for absent files; PUT/DELETE return JSON with errors possible at 200 and 403 to prevent lockout. validate_only defaults false and true validates without changes; errors cover the full config set and response requires validity/lockout/error fields.", + "evidence": [ + { + "resource": "repo://hub/swagger_databrowser.yaml#L1109-L1148", + "version": "repo-lines-v1:sha256:67efe42f281094c2f28a9dfef52e146011f75fa53f4cbeca4a266ed1d11ba836:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMyMWViMjE2ZDFhODgzODEyZjk5OTUwZjUxYTRhMjI2ZDdlOWY5N2YyNmEzM2ZkNzM1YzY5NDUyNTdiYWNjYTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNiYzQxYjkzYjYzMWZmNGQ0Mzg2MTVjZTAwNzUyYzc2MDIxY2RkYTIzMWEyNDJmN2ExOTNiMWVmYTNiYjNjMjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFmY2M4ZmFkYzlmYWMxZjE4MzZjMjgxN2Q5OTQ2OWJiMjE5Y2VmNWIxMDdmNzRjNjNmN2ExOTIzNTEyYjIyYTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc1MzY2NzViMDNjYTNhNjk3M2IxNzliNTRlMWNjZWU5OTJkNmQzNjNlM2FmNDk0YmIzNjQwZDRlYjMzODhhZGYifQ" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L1248-L1256", + "version": "repo-lines-v1:sha256:2908586b0debda8406d2d642d71f72922288b62b6d9150aa05dabe07efd55928:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTA4NDA3ZjQwZjkwMGYzYzJhMDIyYzhhNTM0ZDc4NDUyOTZhNjQ2N2E1MTRhNTU5MDBjODFjMjg3YzgxOWVhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGNjN2Q0ZjU5NDRmOWFlYmNhODlhYzk5NTU4ODJjYzMyN2E0MzM0ZTQ1NmFmOGZlMDAwNWJhNGI0YjBiZWYyMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2I1MDM5YmViYTI5Mzc5NjI2N2Y2MmY0ODJlMjJiYTRiZjNjMjcyYzBhZWZhNDAzYmUxMTA2YzE4YmVmZWE0ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDc1ZjdmNzEzNjIyMzU3YThmMjRjYmM3MTA4MTVmMGI4MTJiNzg2MWUxYzBkYzBiMTAxYzliZTE1MTdlZDM4MiJ9" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L430-L569", + "version": "repo-lines-v1:sha256:7bb3eb020c726dd5080800896cde2ed5347523a1e3b2157e97f4a19ed42cbe6d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQwLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiI1ZThhYTJiNDQwMzI1NzE4MjYyYmRmZWZiZTBkOTM4M2YwMWMwOWFjN2IyZGYzYTI1NjQ2Yjc2MWJlYmMxOTcyIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI5MWJhMzAyYTg5M2RiN2I2YTUzYmFjZTExMDlhNDljMGEyYWU3Y2EwODQyMWUxZmY1MjcxNmI3YWQ5ODM2NTllIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI3NDgwNjhmNzE4Y2JjZmVjZTllYzNhNWEzMjUzOWIwNzBiYmYxMzE2NTJjMjEzODJkYTdmZDgxMjFlOTM2OGU0IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI0MDJiZTY2NDBjNWJkZDQ1NmMwMjg0YjU2ZmEzNDM5NDhhZWMxN2YyMGVmNjRlMDc4ZTM2OTAxZTZhNTE1N2JhIn0" + } + ] + }, + { + "id": "claim_4a49a5c0114a456ea473121d8f47df15", + "statement": "Historical DAP file APIs require JWT-enabled configuration and Admin JWT; configuration GET serves embeddable HTML via content_only, and config_file_path is an explicitly imperfect Swagger rest-of-path representation not to be URL-escaped.", + "evidence": [ + { + "resource": "repo://hub/databrowser-api.rst#L48-L54", + "version": "repo-lines-v1:sha256:9e6cce12c6336943339c0a5ebe99c8759542517dddd7f60a70013af696c95a2f:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGQ0NTgxNjEwMjk2NTNlOWQzYzdlMGY2NTYxNmU3YmRmNDMyZTI2NGEwMmQ1MDlmNzBkMmIyZGRiOTM5ZjljZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTQwYjkwYTc2NDBiZTEzNjE0MjIxN2ZlZGNmMDRkMTYxZTYyZWIxOGM0MzJlNzFmNjBkOWE4YzZiYThmMDU0YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTYxZDM1YWQ5NDQ4ODU2NTRjMDg3Y2UzZTY3NWJlMTg5ZjAzZDhkMjgwOTJkNWY1NTFkZmQ5NTZlOWJkZDQ5YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjljZjVkMjYwNDRkZmU0N2I5MTU1M2YyZTBiNWM4YWQxMDcyZDY0NzFiODUzNzcwZDJlY2I0Y2YwZGVmMTUxZSJ9" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L1236-L1246", + "version": "repo-lines-v1:sha256:67715635061a45f8cde91af347b4b81652905a406d7d4377cdbc35290bcacb52:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU1Y2NmYmY4YjNiYmEzYWJlMThiNmMzZmRjYjNhMWI0MjViMzljMzhhZTExYWMxNmExM2Y3ZTg3NTgxMWUwN2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmNjZmOWFjZWRmMTM3ZmIwYzk3MGI2MDFmNmQxNGYwNjRmY2RmYjE2MGQ2OTE3MDI1YjkxZDkyZTVhMzFhNWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI0N2YwODAxYWZkOGE5MGM2YWRjZjI0ZTlhNjVjZTVjZDU1MThjOWM4NGM2MjI2NTY0ZjBiZGNiMTFlMmQ2YTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUxYjI4YjQ0MjYxMDM5NDU3NTI3YmYyNjI0ZjYyYTNjMzhmMTQ1ZTE2NTRmNTJhMGU3YzQ5NDEwZmE5NGM4MzkifQ" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L397-L428", + "version": "repo-lines-v1:sha256:5f76c6cdff5019ec5d55017adf20bd39f5c7406c86681d8c7e13ca4abc5a72f1:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg5ZGEwNTViMTU4ZDMyNTllYzdkMGNiMTgwZGQ2ZWI1ODc2ZmU4MTk1ZDg2MWNiMGQzZDIyZmRjOGMwMzA1MGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMzMjhmMjhkNjFlYmIwNzhjMDI3Y2ZmMDQ1NTg5MTAwN2M4MWNlODFiOWRkYmI4NTlhYTEwMjQ1Mzc1Yzk1MjkifQ" + } + ] + }, + { + "id": "claim_2fcef4a93b24425085408087beaa03e6", + "statement": "Connector tools document manifest-based system/pipe generation, expand on sesam upload, collapse after download, automatic OAuth 2.0 authorization or sesam authenticate, and link an external client README rather than define new Swagger operations.", + "evidence": [ + { + "resource": "repo://hub/connector-tools.rst#L10-L19", + "version": "repo-lines-v1:sha256:e73127428159bb8e2772a18d4f652cb38d4f300471131051d699e7a0632d7076:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUwNjg3ZTk4M2Q4ODM2YjM3OGFiNDlhMDQwYTVjYjgxMjRjY2IyNGU1NDk4YzA4ODhlMmNjZDkwNDIwZDJmYTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUyMjA4Mzg0ZmFmYjk1NGMyYzY4Y2QzYWE0OTFmYmFlOTdiNjMwMTkyYWFiOGVmYTYzMjEwMTU5NTQ4NzFhYmMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdiZWY2NmU2N2FlNWFkNWY5MWRlMDc4MDQ5ZGY3ZGY4ZDhkMWIyMThlZjk1MzEyYjM4NTgzZDQ0YWY3NzdmZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_7dca64e877864078bbc1fa2a9b855e22", + "statement": "Configuration tests use expected result/.test.json files per endpoint pipe, drain queues with outbound systems disabled/unreachable and compare using sesam -vv test; default reads use pipe entities at sink stage and publisher tests can use configured endpoints/bound parameters.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L108-L139", + "version": "repo-lines-v1:sha256:0fb86541b0234d1c51be8c1686785f19cfd1cc1bc63dbf5f3b5de8e1aaf4cdeb:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlYmUyOGI4NzIxYjVhZTMzMzM4MjZkYzBlZTQ3ZGU0OWQwY2VmZjdkYWQ1NjVmYzkzMTVjNDdjMTYyYTNjNTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUzNTBkYzY2Njg4M2Y2Yzc0YzRhY2U2Mzk1MjY0MWVkYTRmNWQ5ZDQ0MzI2Y2Y3YmU3ZDQzMDMxNTZkZTA2OTgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4ODA4Yjc3MjQyMmI5NTA4ZGQwYjU2ZWNjMzJjYjFhY2Q2ZGJiOGVjOGRjYzlmNDIzM2Q4ZTQ2Mjc2MDBlNDAifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L146-L186", + "version": "repo-lines-v1:sha256:7f56230d6849e646229686c2e9986c5a17bfd2f448c5137acc81bad5efab369b:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM3ODJkMjFkZTM0NDMyZTFhZDBlOGU4MjhkZmE2MDA5ZGZjMzY0Mzc1M2NiYmViZWQ5NzVjNmZhZTJiYjgxMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY3ZDRjMzA1ZDU5MjRjMjg5NTAwNjY2MzdlNzY4ZGNlMDMxNjdlYTQwYmQ2NGJhNjQ1YTc5OGJjZjAzNmU5NjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJkMzYxMjc3ODcyZDQ4YjNmMTdjNzNiNjM5OTM5OGI3MzI3OWE0NjYwMDg3YmY5ZGRhNmZjNzcyYTk4YjY0OGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L57-L91", + "version": "repo-lines-v1:sha256:064a456505efaa5d13d932d2fa37176bcba7503dbaf96d4d927d469fd986ae6a:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2ZTVmMDlmNGE0YTJkMTIyYjI5N2U3ZjQ1MzViMDg0OTY2ZTQzNDZlY2QxNjU5ZTM1OTFmNzFhNjAxZTJhZWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzMjExOTAwMjM3NTFhM2M5MWVlYTM2ZTUyN2UwMzRiZGRhZmNhMGY2NzFmMTE4NzY5NWViNDI3MmI4NTAxM2EiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY0MGY2YWU0OTAxY2Y1NWJmMTM2YjE1MzZkN2JmNjk3YjMyNzU4OGM3OWJmNTNhYmQzZGJhZWJkYTkxNzFhYTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4YjkzNDE2ZGQzNWQ0Zjg0MGQxMjk4YzZhYTYyNzZiMDNmNjcxMWY0OThhN2UyYTViY2MyMDdlYmE1ZTNkZTAifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L21", + "version": "repo-lines-v1:sha256:d728920650b733582762cd2916dd09f6f0f0af185fdda8c3774bd133cdd1ef38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + }, + { + "id": "claim_e5baf46e93d0425aabbe336eeef2ddd7", + "statement": "CI testing requires a designated node and serial tests because uploads overwrite config, with outbound access disabled and necessary outbound secrets/variables absent; Sesam Client forbids production use, simultaneous clients on a subscription, and concurrent manual edits.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L7-L24", + "version": "repo-lines-v1:sha256:2bca9d22996e089efc3c41270a559bc9639ef5c0894312477915e1887d36bdc1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5NWQ0OTIyYjgzZGRlZTFkODI2ZWNhNWFlZGYyNTUyNTVhYjZhOTlmYjljZTBhNTcwYTE4MTFlNjZmZDQ4ZGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzZjNhYTU3ZTRmM2M3OGRmZDVkZjRhNzQ5ODJiYjQyZTNlNmE3NDllYTlhMTgxNmU1MzkwMjgxZTgyOGNhZDQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU4MjMyOTcxYzUwMTJkZjU1ODc2MDZiOTRlMjVhOWI0Y2VlOTA4NDQ1MzUwODlkNTEyZjkzMTk5YjA0MDQwY2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFiZWYwNTRiMjAxMjEwNGZjNDE1ZThlMmNiNTcyYmRkMzZhYzBiYWQ4MGE4MjlmYjI5YjYzZGE2YTQ0ODZmYmIifQ" + }, + { + "resource": "repo://hub/sesam-client.rst#L21-L36", + "version": "repo-lines-v1:sha256:a50b2ae619290e67be7b102eaccddc74ba64dba970c76db18a24b5691f49cf3c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgyNjk1ZjU2YmU0YjlhNzczYjhjMjVhNDgyOGYxMjdiOWZjYTY4M2EwYjMzNWYzN2VlZTI0YzkwN2Y2N2MyZTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxMGQ0ZTdiNmYzMmYxMzMzMGM4ZTE0YmU4ZGI0MTcxMjMyZjI2ZGQ1MWZjYTU4MzNjOWFlZjhiNjBlZTdiMmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjljZjRlNGRiODMxY2M2ZmQ5MThmNmQzYjZkNmYwNjg2MThlMzQzYWE1MzhjOTRjZmU5MzIzMTdkNWE0Y2IyNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE3MDExNWIxZGU0OTU2YjM3NTA3NjE2NzkxZWRjMjA3OTBiY2M4ODc0M2Y4NWZmYzIxYWI5ZmRlOWJiYzk5ZmUifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/integrations/connectors-and-contracts.json b/openwiki/.claims/integrations/connectors-and-contracts.json new file mode 100644 index 00000000000..6fc22b3d91f --- /dev/null +++ b/openwiki/.claims/integrations/connectors-and-contracts.json @@ -0,0 +1,890 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:7f69a8b54b17239097b2711dfe502d249aeb61454a2d08d176f0bba0069885c0", + "claims": [ + { + "id": "claim_0cd00fe7f089459ab825a0fcff9b90df", + "statement": "The documented connector boundary collects system-shaped entities and consumes a desired-state dataset to make the target system reflect it; reusable connector configuration is divided into manifest, templates, and config.json.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-configuration.rst#L7-L13", + "version": "repo-lines-v1:sha256:d3f2256b18ee6df932455cab2ea255b921a09234cfc6f2f83b6e07e0b3e8a7ff:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzc4N2RhMjcyN2ZlMmYzODM3ZWZkMjMxNWZlOGRmMDc5MzE5YWI4ZjZlOWJiMWIyZmM4NzQzYmE0NDY4YjM1YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDI0YjgzMGFkNDM3ZmY2NTAxMjA0ZWNhMmM3OTNhMThhZWE0YzFlZGE0YTU5MzBhYzdkNzU3M2U2ZmEzYjNmOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjlmNmQ3NTIzNmE0MjQzN2JiMGQ3NGYzZThkZDBiYjc1YzU1M2YyMzVhMjhiY2Y2ZDllZGJhMGM1MDcwZDQxZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2VjYjdmYTJlZDIwZTIyOTRmYTMyMjQxNzU1YmNmZWEyYzJmNTZlN2Q1ZWViNWZhNzY4MGQxMmIyNWJiZDI3OCJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L5-L15", + "version": "repo-lines-v1:sha256:c5dcaa1e40b4682787a3eae1551154989523ee3e38dc3a9d78f6a7f326e31320:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU2YWM1ZDkxMDJlZjdhOWVkMDYxY2E3YmM0YzBkOWZiYzY4NDUzMTVlOWViMzU0YWZhMjhhYjhmMzQxZTJiM2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQzNjU0NjdlMzgwM2FiMDcxZjI3YjY3ZjliYTgxMjkwNWIwNmRjNTI4MWU1MTgzMjdmYTVlODJiNDY5YWUzMzUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ1YWJhZDRiMWFjZmIzNGE4YmU5YTBhMTIxMmQ0MGQzODBjYjA4YTgxNWU1YzA2YzRjNDhlNjVkMWQzNzVjNzAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhhZGQwZTY5MmUzOWFmMTZiMWU4MWIxZDAyNjE4YWYzNzBiYzY0ZmMxZjBjYTllNzM1NWE1ZTNlM2MyODE5OGEifQ" + }, + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L66-L76", + "version": "repo-lines-v1:sha256:188ccebb9c0646cf80470e42b11f56d1c2f2a13151856688dfc7e139b4b4196f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhNDgyZDRhMTY2NGM0MGRiYjBkMGYxNDA5ODlmYzhkMDgzNmZiZWU5ZDJmYzU3NGY0NGUyNjM3Yzk2ZjkzY2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRkOGY1OTJkNTYwODkwMmY2OWJmYzgzOWUyOTBmNzRlMTVlOWZiMDIzNTc1OWYwNzg3M2Y5NmU0N2U4Mjk5MDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRlY2I0N2QyMzcxNmJhYzEyOTIyNmI4OWFmOGU4NjQ4ZDMzYThiODYxZGZmYTljYTdhY2M5Yjg4MzViMWYzNjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhhZGQwZTY5MmUzOWFmMTZiMWU4MWIxZDAyNjE4YWYzNzBiYzY0ZmMxZjBjYTllNzM1NWE1ZTNlM2MyODE5OGEifQ" + } + ] + }, + { + "id": "claim_f511ffe06b5e498bb1531126eac564d3", + "statement": "Connector-specific discovery is provided by the authored Available connectors catalog and its FAQ/repository handoffs; the HubSpot entry points to sesam-io/hubspot-connector and calls playground typically the most complete branch, rather than providing its implementation locally in that entry.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/available-connectors.rst", + "version": "repo-file-v1:sha256:52730f99b23d49abbcd23746e83f5f325ade7434f42cfad5343be3f131869b4d" + }, + { + "resource": "repo://hub/documentation/connectors/available-connectors/hubspot-connector.rst#L7-L9", + "version": "repo-lines-v1:sha256:b6c3808abcbe5c5574709bd240acab19899c8e5b67fc3785b2c402aff83cf29f:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjljMmMyNTEwNzNhOGVhMzRiZmM0N2JhNTQyZWY2NTFjMTk0Mjk5ZjZmYjVjMzA5M2ZhZGYyNzNlNTdjYTczMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmE5MDVhOTY0MGFiZTM3MWMwZTY1MDdlYjAwMjQzYTM3YjI4MmFlZDkzNWRlYmFkOTk0YThiNTVkNzBkYzdjMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTIwZjRjMzM1MTNkMmM5Y2MzMjk4ODMzNmJmMWMzNjI1OWFlM2VjMjBkZGFmMDY5MDBlMzQ1NDJlYzMwZGRiYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_47e5a1dc513b48bcb672681b2f5eef96", + "statement": "The Sesam Client connector workflow documents expand during sesam upload, collapse after sesam download, automatic OAuth2 authorization participation, and sesam authenticate as the explicit authorization command; usage and implementation are handed off to external sesam-py documentation.", + "evidence": [ + { + "resource": "repo://hub/connector-tools.rst#L10-L19", + "version": "repo-lines-v1:sha256:e73127428159bb8e2772a18d4f652cb38d4f300471131051d699e7a0632d7076:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUwNjg3ZTk4M2Q4ODM2YjM3OGFiNDlhMDQwYTVjYjgxMjRjY2IyNGU1NDk4YzA4ODhlMmNjZDkwNDIwZDJmYTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUyMjA4Mzg0ZmFmYjk1NGMyYzY4Y2QzYWE0OTFmYmFlOTdiNjMwMTkyYWFiOGVmYTYzMjEwMTU5NTQ4NzFhYmMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdiZWY2NmU2N2FlNWFkNWY5MWRlMDc4MDQ5ZGY3ZGY4ZDhkMWIyMThlZjk1MzEyYjM4NTgzZDQ0YWY3NzdmZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_b645753da1b247bf80177c94687ccce3", + "statement": "A connector manifest selects templates per datatype through the required datatypes dictionary and each entry's required template; multiple datatypes can reuse the same template, with the datatype key substituted into {{@ datatype @}}.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-manifest.rst#L122-L125", + "version": "repo-lines-v1:sha256:f842cf567818ae02f8a734e490b05be75e91c809b8cdb26bb10ffd4bd502b690:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGYyYTk1MDIyZjhkYmU0NTI1ZGFjYTBhMzM5YjM4MDBiODBjYTQwZTUwY2E1NTEzYTcxNGE5NGQwN2IxOWQ4NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZWYyYzE1NWU3MzRhMzUyNDBkOWQxNzFjNWRiMGFiNzU4NTU2ZTYxYWJkZGEwZGExYjJiYzhjZGQ5ZmY3MTg3MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWNiMWFjOTBjNTc1YTZkZjM2Y2MwZjIxY2M2OWFjODJjOTE3YjBhNDExNTRlZmI0NDVlNDczMTA5ODVhYmQyMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGZlYzYzMDhiNzMzMWJhZTI3MDE3ZGE0NzdlYTM1YmI4NGUzZmQ4YzFhMTY0OTg2YWZiYTY1ZjM0NDVmMTk5MCJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-manifest.rst#L7-L34", + "version": "repo-lines-v1:sha256:b4b8289c268194da57cc78ef318ebaaf042c16381a4f8dcd4e58af903a018fa6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ0OWY2ZjUxYzRjNjdhMWQyN2Q1MzNlY2JkOGEyODNlYzI2Y2QwNDk2M2M4YTBhMDgzYjIyMzFmNzA3MGQzZDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ2NTQ1NDc5MmM4ZjhjZjY5MjM2NWRmNDJmZWYyZGZmYzdkNjBkZmQ5MDgwNDYyOWQ1YzgxNWZhNDFlNDZhNDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ2YTQyYjQwMjY0YTFiOGUzNzViY2EwMzAyM2QzNzQ2NGM5NTNjZDAyZmIxYzc1MGNlMDk0NzAzNTE5YjZiMjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2OGFmNDBiY2U0YWUzNTRmYmEwNDg2MmU4OWY5MGEzZWZiZTMxNjdiNjA5MjU4YjUyMzc4YmU1NTI1Mjc0Y2MifQ" + }, + { + "resource": "repo://hub/documentation/connectors/connector-manifest.rst#L73-L81", + "version": "repo-lines-v1:sha256:6c35c7342d1b294930d3785ca0f193a647cde3f600c8a0de5117e425560dfb5f:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODEzY2M1YjE5MGI5ZmU3NTA1NTU0YTMzZDMzMmU5YTM2YzBjMjJjZmVlYzZhODUyMjBmYzAzMDI5YzExN2QxNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjcwYTU3NjdkYmQzZGU1ODBmMWU3NTc2NmQzMTEyNWI3MGIxYzBjZjc3OWFmZmZhNzU5MjRkNzcyNmI3YmRkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTNjMTlmYmEwYTBiMmVjNWZmYzRmY2I0ZDdmZGVlYTNkYjBiNjM5MDA3YjBiNzZlYWVhMjc2ODY3MjVkN2I4ZSJ9" + } + ] + }, + { + "id": "claim_fafb4751d2bb410e97a8236a36701a90", + "statement": "The manifest reference is internally inconsistent about its required system-template selection key: the example uses system-template while the property table uses system_template, without documenting them as accepted aliases.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-manifest.rst#L15-L32", + "version": "repo-lines-v1:sha256:f8483e12582f1c2a425b364a7e216057743d48bc12cd46e862c1c4f1db715be1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxMTFmMjM5YWM2NWM5ZmVjZDRmNzk3NWQ0ZWUwYzY3N2I1OGE4ZWE2Nzg1MmVhMjVkMjc5MjM5MjUxOGQyZjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZhYjkwYjI1OGIwNGIyYTZkZWVmZTY2NWM4MjE3OTBmNjE4MmExZWRjN2ViMDE3MjRlYjY0MTRkNTJmODYzZmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMzODZmNzk1MDYzZWJlNDRiMDNlN2RiYTFlMTgwZWIwNjBmN2NhZGQwM2MxN2Y4Y2JkMmFjMzhhOGM1NWEwNzEifQ" + }, + { + "resource": "repo://hub/documentation/connectors/connector-manifest.rst#L78-L81", + "version": "repo-lines-v1:sha256:1745336d9c1433f0d07d95c9b67047d1e831cd1d01ccf4003404917ba332b079:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTRiYTlmNjUxMTE0ZmYwYWQ4N2I2ZDRiY2NjZTNhYmU3YmFiYmFkNDU3YjNkMGE0YTZiOWYxNjkxMzcxYmQ4NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTgwYWI1YjMwNWRjNzU2NDI4NGM1ZDA1OTk5MjU4YjY5MWZkZTA2NGQzZGZlNTI4YzhlZjkxNDg1YmY4ZmI3MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTNjMTlmYmEwYTBiMmVjNWZmYzRmY2I0ZDdmZGVlYTNkYjBiNjM5MDA3YjBiNzZlYWVhMjc2ODY3MjVkN2I4ZSJ9" + } + ] + }, + { + "id": "claim_c0e46a093614462c87250c73d0b3e88c", + "statement": "Datatype manifest configuration supports human-readable label, Jinja parameters, parent for parameterized child collection and the -all source datatype, sync_frequency, and webhook capability.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-manifest.rst#L90-L130", + "version": "repo-lines-v1:sha256:ff83db8b4ab188c3e2baa29634b4c2218a4c13c6c1f4aace7be7dcda22d81ae4:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwZjkxZWZmMWZmMWEwZmNlN2E1NTk1YTBhNWMzNjAwOTFmODU3NmE2YzMyNDFkYmE1NjY3ZDI5ZTE4OTI2ZTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhkYmI5MWIwMGEzYTRjOTczNDU5Mzg2ZTRlMDczMmZiN2FkMWY3ODgwZWE3OGY3ODA1NmQ3ZmYwNGI4MTFjODciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_fea55f1934f84462bb1081cc70c88f85", + "statement": "The connector template example defines -all REST collection, -collect reading -all with transform-collect-rest and timestamp DTL, and -share reading -transform with transform-share-rest and datatype-specific CRUD operation names, using system/datatype substitution rather than hard-coded names.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-templates.rst#L7-L101", + "version": "repo-lines-v1:sha256:3e3a4a5822b4d97fcd3ef72379d15918ddc25569a95f52e02a36cef4643f7260:eyJzZWxlY3RlZExpbmVDb3VudCI6OTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ1MzQ1MWQ0NjljNDBiM2I3OGUyMmZiNGEzZDQ2YzY3MWY3MDk1Nzg1OWZkMTIxMjA0NWFlMTRiMWUwNzY0YzQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU5YzZjNjgxNTU0ZTg2ZjYzNzI2NDExN2ZmMTAzZmMyODlhZTg0YzE5NmQyMDBjM2ZiZjRmYmJkNGExNWI2NDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY0OTI4NzcxYmQ3NGUyNzNjMTQ2MGU4OTNkYzg0OGM3MmY3OWU5NGUwMTlhZDZlNjdjNzBiZTRiMjdjZTQyNTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_d21b157dee564840b7b616be7d229f50", + "statement": "Runtime template transforms are distinct from manifest-selected connector template files: a type template transform receives properties and a named built-in template, or an inline template body overriding the built-in for development.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-templates.rst#L7-L11", + "version": "repo-lines-v1:sha256:3febfb0a660ebc65726e75a345c8ed7b092ed5cb0bc1d465c94a052a8a7bfed1:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDUzNDUxZDQ2OWM0MGIzYjc4ZTIyZmI0YTNkNDZjNjcxZjcwOTU3ODU5ZmQxMjEyMDQ1YWUxNGIxZTA3NjRjNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWI2MTY2OTYxNGRmNTQwNGQ0OTZiMDEyZjNhMjJhOWIyMmI0MmVmNTllZTAwYzVhZDhiZGE1NzcwMTNmNzA2ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjQ5Mjg3NzFiZDc0ZTI3M2MxNDYwZTg5M2RjODQ4YzcyZjc5ZTk0ZTAxOWFkNmU2N2M3MGJlNGIyN2NlNDI1NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWVkZTFjZTVkYWI0NWNhNjdkMmZlNTk4ZjYxNjE0Yzk1NzQ5NTExZThmMmNkYjZhZWZmZThjOWMwZjkxODRjYSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L6-L50", + "version": "repo-lines-v1:sha256:dd41bbd247e6f3348084a579872fe9748d7928aca88bee2dc14c4d39581689c2:eyJzZWxlY3RlZExpbmVDb3VudCI6NDUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhNTcxZWFjNmJlNzk2Y2JkMzc0MzFiMDY0Nzk3MTk4MjgyYTEyMjFmZTBiNDYxYjVmM2Q3MTc3NmM5MjBmMjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5ZjJiZDlhYTA1MGFkOTVjMzJiOGNjYjc0MzY3MWYwMTc3YTk4NjhiMTlmNDMxMGRlMWMwYzg4NzlhMDQyOTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFkYzNlYWZlNzllYjliNDI0Y2Y4MWZmOWY1ZDU0OTE2Mjg4NzVhZTViZWQ3ODg5ZWI2M2I1OWY3NDRiZGIxMTIifQ" + } + ] + }, + { + "id": "claim_c1d9ff267fb54e2a8c37ab06758e5e07", + "statement": "Connector expansion uses {{@ foo @}} injected variables; most supported variables require manifest declaration, while system is always available and datatype is available in datatype configurations, parent comes from the datatype parent setting, and datatype parameters replace matching occurrences including Boolean values.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L172-L179", + "version": "repo-lines-v1:sha256:8e8f3de1107e8c85520390c8e7e2b34a55c41752278b1954ffc99ff790cdc390:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmRkNTc4MjNjYTMxZDQ5OTU5ODc3M2U5YzVlNWUxMjZiMGVkOTE5YTIxYTVmMWI0MDIxMmRmZTRkNDczZDcxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzhmNWMxNmRjMGEwYzEwNzY3MGE1NDhkNWFhYjM5ZjE3MWRkYjhiOTVhOGU5NjQzZWRjYjFkNDM0OGVlYzFlNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzMyYzIyMmQyOGE5NWEwN2IyMGUwMmFhYTg0ZTcwNjViODM1MTRkMjczMTQ3NTI3N2QzMzhlNmI2YTI5YmIwYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDRlMDQwMzYwNmRmYTBlYWRiY2ZlNDY3M2MxNWQyNmY5OTJhNTVlOGZmYjEyMzRjNmVhN2E3OWRhMmMxYTJhNyJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L230-L245", + "version": "repo-lines-v1:sha256:95503a5e7a25b193966ad4de764149b15d92d3e50b76b669fb8353a6fa7e625a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1YTExNzU0MTFiNjhjNzdhMzA2YTM4ZDE4ODk1OWRlODA5N2ZjZGY3MTQ5YzNlODFiYmI0NDA2YmM3YTYyZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdhNjY3ZmIxYmQ1OTJiYmIxYTU1YmE2ZDZiYjhhNDAzZDYxMjliYTE1ZTBmYTRkZDAzMjFhMGJlYzVkODhhN2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM5ZWM1YWVhMWJiNjhkYjVlNWEyZGIzN2JlNTBjYzhjMTRjMjRhZGJmNWEyZjQ3MDYxMjkxZjcwZGEwZjY3YWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ5MDM4ZjRlMjFmZWFjYmQzYTg2MzAwNWVkYmZiMmI5Yzc4MDcyZWQ2MjNhMjExMTNhNzkwMjU3Mjg2MjJiOTIifQ" + }, + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L283-L304", + "version": "repo-lines-v1:sha256:a419954d271bc0095308c8c7cdcb8428bb3249b81e6cd947adfdaba9859ddc55:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE5ODBjZjViNmJiMzc5ZDQ4NzA3NDIzYzcyOGExMTE4NGM0Y2FlZmZhZDBmMTYwMmEyMmU4ZmI1NTM2YTBmNDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhmNGU1YjI5MmMwODNkN2JjODJkNTFkMDkxNWJmMGM4ZGNlMzk0MWI5MTZmZWExY2MzYzRjZTZmNjFhMWNhOWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM1YzIzZmJkYTYxZDNiNjU5N2M3YzRiOTBjYzNhYjUzMzNiOGYxYzRlODQxZWJiYjg1ZWYxY2RjZjFmZWZhMjMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY5Y2RjOTE4N2E5NGE2MGNlYzUwYzFhMjlmNjRlZWUxNzM3MzI4YWRlZDA2OWE0MDBkOGM0Y2I2NmNhZmE1MzgifQ" + } + ] + }, + { + "id": "claim_58454b0e1eb44025ba27dc224a8b7564", + "statement": "Connector configuration can inject base_url and token_url, and its parameter_values dictionary overrides values specified in the connector manifest.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L143-L146", + "version": "repo-lines-v1:sha256:9b1dd3338f4fd507e3a325c3e9828473a456c50ff2ffe650625f3ccaf036cf3b:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2Y2ZjUxNmZhNGViMTg3MDE5ZDYxNzcwY2Y2N2ZlMWQ3YmVhOTY4YTJhNzhiYTU1YmRjMzdiNzI5MmQwYmEwMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTg0MTY4ZDgzYmI0OTRlM2FmNGYzNWEwMzRmOWEzMDRkOWZiZmJiMzliNmRlNjQzNDVhNTA4NmNjZDhlYTU2ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2NiNDc4OWVhZDlhOGEwY2I4NTE1M2IwOGE4MmNiNTA5ZTY3YjBjNmFmYTEwMzVkZTllNmY2ODJkMGI3ZTc1NCJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L236-L239", + "version": "repo-lines-v1:sha256:e34491c7d15142579da072d5d2ba7e89081ae3e027d50e7d16771ae2cde05623:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjAxOWUyNjY2MDZjYmEwNTEzMjI0YzIwYjczOGYyMGU1NGE0NzdiMjgwYWEzZDZiZTA0YWFjNTEyOGUwYTRmMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGM3OTlkMTM2YmQ3YTJjNTVmNjczN2Y3YWJmM2ZkODk4MzQ2MTJjODk5YjdiNGQwZDA3MmFjOTI2NjRlOTUxYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDQ5YTBmOGNiMzRiZWU5NWVkMDQyYTUxN2NiZGNiMTVjZGJhY2YxYzNmZWM5ODM2YWU1ZTNkMGMzNjBiMjM0NCJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L249-L256", + "version": "repo-lines-v1:sha256:f9673cb745a475a42b9eba466755a374acf651775ae6ce8493b801621a51e2cd:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTY3OTNiNjllNWEyMjFhOTViMjEyZjliZjJkMzk4N2I0NDIyZjIwNTA1Mzc0MTAyMGFjYTkyYzE3Yjc2ZDlkNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjVmOGYxZjUzMDYwMzFiYjBhNTg2ODc1MWM2MzAyYWRhY2QxMjhkYTMwOTM5YWQyOGMzNWUzNDIzMWY4ZTk1ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDkwMzhmNGUyMWZlYWNiZDNhODYzMDA1ZWRiZmIyYjljNzgwNzJlZDYyM2EyMTExM2E3OTAyNTcyODYyMmI5MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjczZjIzMjhlNDU2ZDY4ZTQxYWM4OTc4MWU3NzQxNDI2NDc1OTU1NzUzZjhiNGMxZDA4ZTg0YmI0ODBmYWY4ZiJ9" + } + ] + }, + { + "id": "claim_9380a62dd84445a5a56072a958dd8100", + "statement": "The documented requires_service_api_access manifest signal replaces service_url variables with $ENV(service_url) and adds a service API JWT system secret referenced as $SECRET(service_jwt).", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L258-L265", + "version": "repo-lines-v1:sha256:21bf1ba3f24749027267ca2420439547d9193dc365a4a6a24c9b0879253fe449:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTcxYmM0MGFhZWJhZWI1ZWZmNmIzYmRiMTc5MGVkMDQxNmMzZjA2NWZiYjFmOWQwMDkzMjdiMjlmYWRmZjEzMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjFkNDExYjUxYzU0YjJhYzFjZmQ3MDk4MTEwMTRjZjdiY2IyYjgwN2QzM2Y0MmMyNTgzODBhYjU0YzY0NGU2NiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxM2IzZGVkNmQ3MDI2N2RlZDljYWRlNjIwMDQ2ZjdjMGZmMGIwZDJkYjkxNjRkMDg2YWQ1NjkzYjcwNTFjNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmRjMmRlMWNiNTgxMDZjMDVmYjc3NmE2MTExMWRhNjdjOWQwMjk3MzFhZWFkN2JkOTg4YTE1YjM0NjBmNGNhMyJ9" + } + ] + }, + { + "id": "claim_02afb62e2a1b4aefa238f3886ed13feb", + "statement": "Declaring _webhook_dataset under manifest additional_parameters signals replacement of that variable with $ENV(_webhook_dataset); this is distinct from connector_config additional-properties UI metadata.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L37-L50", + "version": "repo-lines-v1:sha256:1954e37d86211083601622868ad910ded57b61c628544ac320389fdaf4ad34bc:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkxZGRhZGM4MWNlMzFkNDhmNDBiZTU5ZjQzOGEwZTNiZTU0YjY5Yzk0NGE0MGNjYWY1N2VkMzIzODJhNzNlMzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQyMDM5OGY1ODNjZjY1ZTllNTVhYTgyYTM1M2NlOTAwMDE0ZjliODU4ZDc1YzAxNDkyOTNjMzU2NDEyYzdhMmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU2NzgwOGYyMDZjMzEwNDQ3ZGNmZDVhY2ZiNzlmMTM0MWVmODg4ZTZjZTFkYzliNjE0YzJmYWM5MTFmZmMxMzcifQ" + }, + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L277-L278", + "version": "repo-lines-v1:sha256:cfa330d54c818cc5fcb69858719d94f55b71e0853a0bb4eeda41210ca7c59f1a:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzI5ZDMwOWVlMTI0MjMxMjVhYTkwNTdkZWI4ZWMyY2M4OGM0ZDM1YmQ2YjIxMjcyODVmMTczYTg1OTI1OTUzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTAyZWMxOGJiODJlYjkwNTdmOTFhODlhNWEwMGM3MGM0YWViYTA2YjBmZjZlNGY1ZjFiZWVlYWU5ZDkxMDA0MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjg3NWJhZjI5OTUwMWMyMjk1OTU2ZmU2N2JmZjRkNTYwNWQzNzQ0YzIxZWVjYWUxZWNmODdjMjdjYjEwNDM4NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDVkOGNlYTY4OTFkYjQ5MTBkNDJjMGI4YWRiMzIyMWVkN2ZiNzBmYjkxZjJhMGU1ZTcxNzBlZDU2ZmFmMjJhMCJ9" + } + ] + }, + { + "id": "claim_386c48ce47564d5d904a6ae282021a04", + "statement": "The connector contract describes account_id, connected_ts, and experimental is_fullsync as Consumer portal onboarding-derived inputs; these descriptions are onboarding-dependent and should be read alongside the documented discontinuation of multitenancy and Management Console.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L151-L157", + "version": "repo-lines-v1:sha256:c16c9e9a5a8c4bd525a69e21ac67f7308f965efc9805f943d381c8110555452e:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGZjYjg5NGU1NmVkNmNjMzA0OGM3NWM2Y2RmNTA4ZTVkYjdlNDIwYmM1NzgzYmMyYWFkZGQ5ZjNiNTAwMjgwYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjM5OWJkYzFiNjg4MmQzZjJmMTA1MWNhNTBkMzg5ZWEyMjJjZDA1ZTEwZjU2Y2VjMjllNjE5ZDQ3MGFmM2Y0MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTczYzU1NzMxNzE3YWQyMTMyNWM0M2Y1ZTUxOTYzZmFkZWEyNDZkZWE2OWU4MDllMzZiMDljMDlmNTFlMGExZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmNiMDgyYTY5ZTUxYzcxODFjMGM3Yjg1MDM5ZjhjZjhkZDRhZjA4NmJkYThmNGM4ZjljODc2ZTlmOTE2MjViYSJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L215-L228", + "version": "repo-lines-v1:sha256:12799dae745771d5e78da3cedd8f32aa9fc49961ffeeb21eb92c76703244f365:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE1N2M4ZTA0M2EzN2Q2OThmZTJhMzY5MWQ3NWUwN2MwYjQ5ODg3OGQ3Yjc0MmRhZTAyZmQ1ODJmNjM4N2EyZTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI3ZDNiZDg1MGIzZjFlNTA2N2E5YTQ1OGMwYjVmYmM0ZWQyYjk0MGI5N2I4N2VmZTRhYWYyNWM0Y2ZiOGUxM2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjliNmY5MDhlNDQ0Mjk2ODNhMzIwYTI1ZjFjZWQzYzFjZDhmNjUzZjczM2MzYTQ5Y2ZhYWExOTc4YThiMDRiOTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ2OWExNjIxZWU0ODkyMzk1NWU1YjcwNmQ5ODczMWEzMGU1NTBmMTE4Y2Q4ZTFlOTA4YTE1YzIyYTEwNjBiMDEifQ" + }, + { + "resource": "repo://hub/index-management-console.rst#L3-L5", + "version": "repo-lines-v1:sha256:bc84e237448b2a4a348593401e3a84f849b13165e771de45f266e3414915b50b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDY3NGVhNDc2NjczYzBhYzg0NTUzYWMyMjEyYjc5MzVhOTY3ZGExNmEwMTM2Njg4ZjBmZmFmODdmZWI1YmJmZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZWY1YWQ0N2MwY2Y4YTJjMWY2MDQ2ZjM2NjlkYjc4OGMxNGEyM2FhZmU3MmFiYThiNjYyOWYzMGJlY2M1YTc1YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjIsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMThiYmU0MmM3ODcyMWViYWYzZjE1N2U4NjEwM2IwNjZjYjRlNDEyNDQyNDQ4NTY2ZDYzY2Q1MTNiM2U5Y2RkNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGQ0ODliYTg1N2YwNjlmZTJmNGZlYzI1ODAxNjI0OGNkMGMxMDBhZWZmNTgwYTg3NjBiYjRhN2JmMjNjZmZkYiJ9" + } + ] + }, + { + "id": "claim_78e27611cd1849bdbc3969182a79becd", + "statement": "Connector scheduling injection documents a 300-second collect default, 10 seconds for collect metadata.supports_since true, daily midnight for slow, Monday 00:00 for weekly, and hourly default polling for webhook datatypes; explicit datatype schedule_interval overrides all these settings, while the reference does not specify a complete precedence among the other options.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L334-L351", + "version": "repo-lines-v1:sha256:c072df5273d8b712a91ca7f741d3f0057485c3aa8b65cc9fcc8253122e5e11b3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE3YmE2NzJhZTY1YWRiMzExNmIxN2VkYjcxZTAwNDgxOGMyOTkwZTEwNDc4OGI4YzQzNWQ2Yzg5ZTI0NGM2MTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNjZGNiN2FlMDhhYmI3ZGNhNDEyZGUyMDcxODUyMmVhNzk2NzE1OTI0YzU4ZWYwZWJjMDBkM2IyMzkxZDg0NjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVmOTczOTI0ZTNlMzE4ODVlMTY5OWY1MWI4YWI5NWYxMzI3ZGM2N2ZjODkxYTQxYTNmYTMzZTFiY2YxMGY1ZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY2NWY3M2JlMmMxOTQ1MWNiY2I0MmM3ODQzZDIwYTZjNWMwZDRkMjBiODlkY2NlMDU2Yjg1ZTRhMmIwZTBhMmMifQ" + } + ] + }, + { + "id": "claim_b9f1b1a340b44b679da5ab5ae763800f", + "statement": "An http_endpoint source is a receiver whose data enters by HTTP posts and is written to the pipe sink; it does not configure a pump, unlike scheduled collection pipes.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L6-L12", + "version": "repo-lines-v1:sha256:b8e453ede8e9fb7fed1432ee34cd61528a2018bd73b0c3ba354000c40aa89043:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDVmZjA1NmE5OTA0MzRkNzE2NzhhMTc2NDZhZmZhMzVmM2Y1MGEwYjUwM2QzZDg3NWJhYmIzMGJjNzIxYmEwNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOThjYmRhMmM4ODYzM2FkYWRkZGUxY2VmOGQ5NTA1NDljNDEzZGJhZjdkN2Y2OTU3NTBkZmE4Y2NjMmM1MzJkYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTI1NDkwZWExZWFkMDRiZWNkZGJiNTI2ZjYzNzUyMzhjMmI0OGNjNTA3NjQ4OWFiMGRhMDljNmI4MDg3YTVhMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzA3ZjRkZTMxMThmYmE4ZWJlOWY0M2YzNDhiNGMzMGViOGM2MDA0NjBlNDgzN2NmYmU4MTlkYmE0ZjAzMWU5OSJ9" + } + ] + }, + { + "id": "claim_ad656b488aea4bc29bca1e7cb7aeb43b", + "statement": "Environment config.json contains connector_config as the configuration of an embedded pipe of that name, and its embedded-source connector entities require _id and type connector; auth is an object and url selects a raw connector repository URL including a branch or commit hash.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L138-L146", + "version": "repo-lines-v1:sha256:2577dc790b7ca69f89408753894ce96a15444228377d74d5681201c97b20a1ae:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmVhZmE2MzhiMjZhNzJiYjZiN2I1MTVmMjdmNWNhY2QyMjhjMjNiNzA4YzkyYTBjMTcxYjQ4ZTNjMTkxMjcyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGM4YmVmYjIyYjRhOTE4ZjkyMGZmYmY1MzY0ZDQ5NTVhMGYxNWJhNzdkYzU2ZDNiMjMyOWUwYWMwZTJkNmY4NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2NiNDc4OWVhZDlhOGEwY2I4NTE1M2IwOGE4MmNiNTA5ZTY3YjBjNmFmYTEwMzVkZTllNmY2ODJkMGI3ZTc1NCJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L7-L30", + "version": "repo-lines-v1:sha256:8765adea2b42789e02dfd5252ff8603beaa2f73939db8598e05f6dd3edc0f1be:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4NDIzNjhiNzllOTg0OWMyMmQyNWI5MGRmNzRhZDAxNjZkZWViNGE1MmUzODEzNTIxZjI4NTVlNjhjNDc5ZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5YzI3Y2IyMzIxOTE1YWJmNjBlOGU2NTgwZTRmMWM3ZjAwZjU2MDllZWFjMTJlY2JkMWU1YzNkNWQ5ZDllNDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA1Njc1ZmNiNmUzNjNmZTVmMWFkNjQ2YzI0NDQyYjM1ZTMzOTY0ODBjNDRjMWQyZWE5Y2UzMDg2NWVjYjZiZTgifQ" + }, + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L77-L80", + "version": "repo-lines-v1:sha256:f61dbb8b657989b372d33f040fb7c098c191d5fc3e356e00268aa6a3ef8be7b5:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWFkM2I5NjFjN2I0MDBjMWE2NWYyNzBhMDMxNjg2MWU2YTgyMzMxNTFiYTlkY2VhMmUzY2UwYmY1NDFhOTBjYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNGE5MDNkZjExYTA2ODY0NGYwZWNiMDdmZjE3YWYwNGU5NWQwMTg2ZmRmZjJiMzU1Y2NkNmFiZTJmMTZmY2RiYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWVmNzlmNjY3OWJlYmNjMmJkYzEzOWZjYzhhMDU4MjFkZWIzMmIzYjc4OWZiNTIyN2E4NTVkM2UxNzExMTMzNCJ9" + } + ] + }, + { + "id": "claim_47df34ef197c44799eef32e7e81733a6", + "statement": "Multitenancy and Management Console support were removed on 2025-04-11; the Management Console index explicitly warns it is discontinued, so older connector UI metadata descriptions are not evidence of a supported current onboarding UI.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L151-L157", + "version": "repo-lines-v1:sha256:c16c9e9a5a8c4bd525a69e21ac67f7308f965efc9805f943d381c8110555452e:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGZjYjg5NGU1NmVkNmNjMzA0OGM3NWM2Y2RmNTA4ZTVkYjdlNDIwYmM1NzgzYmMyYWFkZGQ5ZjNiNTAwMjgwYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjM5OWJkYzFiNjg4MmQzZjJmMTA1MWNhNTBkMzg5ZWEyMjJjZDA1ZTEwZjU2Y2VjMjllNjE5ZDQ3MGFmM2Y0MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTczYzU1NzMxNzE3YWQyMTMyNWM0M2Y1ZTUxOTYzZmFkZWEyNDZkZWE2OWU4MDllMzZiMDljMDlmNTFlMGExZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmNiMDgyYTY5ZTUxYzcxODFjMGM3Yjg1MDM5ZjhjZjhkZDRhZjA4NmJkYThmNGM4ZjljODc2ZTlmOTE2MjViYSJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L113-L126", + "version": "repo-lines-v1:sha256:4720702ea8fd2df3ead96aa6613c02454d92ea6129e8c9ac993e4f8156c0fe68:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYyOWJmYTMwYmRiMTM5M2YyODBiMzA0ODQ5MDY5ODYyMjdmY2U2MGU5ODA1YWM0OWZkMjc0M2EzZDM1OTdjNDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFkZTA3NmMwMDY1NzA4MzllYWQxNWVhZjA2NjYzNmUwNGQzOTY5MDliYzgwYTY0NjllOGZmOTJhYWYyMWY2MTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVmOTgxMzI5ZDNmZTkyNjEyNzgzZDQwODQ5ZWI2ZTY4MjI2ZjY4Nzg5M2JkOGQzNTQ3YTQ4YTFjZTFkNWE0MGYifQ" + }, + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L82-L85", + "version": "repo-lines-v1:sha256:43bdb5fff5a493fc89a010361a28b6ad1b9b1ae825db22c6e1fd58d65f950d5c:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDY0YTU0NWFiMzk2OWI5YmI4ODRmNTA5NTdkNzY0YmQzNWJhYzM5NTZmZDcyYzk0ZDE3NmFjMDg1NWM5NTYwNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTA2N2JjZWQ4ZjBmMWNjNGUzOTI3ZjM5YjVjZjQ2ZGQ2OTUzZTRjMWQzY2M5YzE5ZjJjOGEyYWE1Y2YyYzAzZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDE2ODQzZmY3ZDgyZGQwNmFjNWE2MmIwZTNmNTEyODhhYmQ5YmYzMTYwMGM2M2U0ZmYwNTZmZTg5NzU3NjNiMCJ9" + }, + { + "resource": "repo://hub/index-management-console.rst#L3-L5", + "version": "repo-lines-v1:sha256:bc84e237448b2a4a348593401e3a84f849b13165e771de45f266e3414915b50b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDY3NGVhNDc2NjczYzBhYzg0NTUzYWMyMjEyYjc5MzVhOTY3ZGExNmEwMTM2Njg4ZjBmZmFmODdmZWI1YmJmZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZWY1YWQ0N2MwY2Y4YTJjMWY2MDQ2ZjM2NjlkYjc4OGMxNGEyM2FhZmU3MmFiYThiNjYyOWYzMGJlY2M1YTc1YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjIsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMThiYmU0MmM3ODcyMWViYWYzZjE1N2U4NjEwM2IwNjZjYjRlNDEyNDQyNDQ4NTY2ZDYzY2Q1MTNiM2U5Y2RkNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGQ0ODliYTg1N2YwNjlmZTJmNGZlYzI1ODAxNjI0OGNkMGMxMDBhZWZmNTgwYTg3NjBiYjRhN2JmMjNjZmZkYiJ9" + } + ] + }, + { + "id": "claim_86fecf50f03a403ba9d86319e11ef93e", + "statement": "The older connector metadata reference describes card branding through title, description, docs_url, logo, logo_symbol and favicon, visible defaulting true, and additional-properties name/description for user input; category and stage are explicitly described as unused in that UI.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L118-L136", + "version": "repo-lines-v1:sha256:67c044d8ebfe2729c7e38bd946c2bb6a3d33ef26f04a6935e7e4aa236db1e6c4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM0MzI0NmI1MzlkNmIwMjYyYjE4Yzg4NWMxZGY0ZDk2ZDEzMGU2MDg2NjZjMmM5MDNkYTNiNTc0NGFhYTk1MjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhjY2RkMThmMDVkNDI5Mjg3MTljNTkyMzJlMGVhOGE3NzE3NzI0NjE2ZGM0MTEzYWIxZDc2NTdlNzYyNWYxNTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhiNjgzNmM5Y2JjNzBkNDk3MDdkYjY2MzAyYmM3M2NmMzdlMWRkOTAwMDc0ZWQ3ZDE1NzU5NGQ3MWI5Yjc4OWYifQ" + }, + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L32-L50", + "version": "repo-lines-v1:sha256:ec1bd574ebef5d7a2ec9ff6b0773a85f7ff399bb1f3313ba6ea9b8fc8814eb51:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYwNzhkNjkxZGMyYmM5ODdjMTFmNzA3NGUzOTI0NTMxOGIxYjEwMjkxNDk3MWRlYWU5NDJlZTlkODMwMDE1NGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYxYTdiNzljNjRjNDA1ZTk2YTJjMTA5ZjFiNmFmNThmOWI4MDdhN2ZjZGI2MGYzZDdjOGIxN2IzYmQ0YjhlM2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU2NzgwOGYyMDZjMzEwNDQ3ZGNmZDVhY2ZiNzlmMTM0MWVmODg4ZTZjZTFkYzliNjE0YzJmYWM5MTFmZmMxMzcifQ" + }, + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L82-L106", + "version": "repo-lines-v1:sha256:150bb87acb1b7394ad6021b061ab99190e2c0f8033b9836ecf494c30e42bc4ee:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ2NGE1NDVhYjM5NjliOWJiODg0ZjUwOTU3ZDc2NGJkMzViYWMzOTU2ZmQ3MmM5NGQxNzZhYzA4NTVjOTU2MDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUwNjdiY2VkOGYwZjFjYzRlMzkyN2YzOWI1Y2Y0NmRkNjk1M2U0YzFkM2NjOWMxOWYyYzhhMmFhNWNmMmMwM2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRhMmZkZjJhY2FkNjg5MjkyNjNlZjc0ZTE1NWU5MjExN2YzYTI5N2NjOTNiMTQ1ZTU5YmVlY2RjYTkzMTI5ZDYifQ" + } + ] + }, + { + "id": "claim_2dc38a0432014cbb91eab6b01b334acc", + "statement": "The historical account_selection metadata specifies a POST endpoint for listing accounts, optional payload traversal, and string-or-path-list id_property and label_property selectors for the account values.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L52-L75", + "version": "repo-lines-v1:sha256:a596cbafb872371c8737dd05810c6719b5b1031fee28dde2e0c1f13b734cf8f6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA3YThlZWVlYzUzNjJiN2IzZTg0NTFkNTI3MjNiMDhmZGRhZmMxNDVmNzdhNTUxMzBjODg5YTMyZTJkMDY4ZDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc3MWIyNzdiY2NiMjVlMDI5N2E4ZTZjMzdjMGUxYTk4YjlkZjExYWMzMDFjZjlmODVmZTY3MDRmNTQ4ODBjOTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBmOTgwNWViNDgyOTJiMWUzZjc1M2E1NzU3ZDhjZmFlNzFlNzE0MGU2Y2M5YmUzZjg2OThhNjBhODg4ODJmYzYifQ" + } + ] + }, + { + "id": "claim_02f6640c3c9b45318ad2c98aaccf181d", + "statement": "Historical connector metadata filters entity types with hidden_entity_types and describes per-tenant availability with multi-tenant; connect_flow custom_sections orders titled content, and vendor metadata controls dashboard branding, allowed connectors, hidden entity options and homepage links.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L108-L116", + "version": "repo-lines-v1:sha256:85e6aa05985fcd559ff94279c8076c22604b69b1eb57cabbb2369c3a0fd714f5:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjhjMDVjOTMzZDkwOTNlYzJiYTA1NzcxYmZjMjYxYzE5Y2FmMzNkNThkMzBhZGQ3YzI5NTZlM2FkYzEwNWZmOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDI2ZTgwZjBkOTFhYjVkOWMwYzE0ZTExN2Q4ZWE0NjlhMjhkNzdlMDYxNzc2NmMzMmQxM2E0ZjExZmM4MDYwOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTZjNzIxN2NkNDAxYTExZjI4N2MwNjk1M2NlN2UyZGI0NTZjNGIxNzAwZmU5MmNlNDQ5ZWUyYTkyMmM3ZmNjYyJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L148-L215", + "version": "repo-lines-v1:sha256:6c2e60a3fd2143b457178c535e13670b4756c2443fc7a5c9b4eeee573227b6a8:eyJzZWxlY3RlZExpbmVDb3VudCI6NjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcwYjllYWUzZTMxMWRmMDYxYjUzM2Q3M2Y2NGMyNmY4MjliMjM2ZWRkYmZjNWZlNDIyNDRjYzllMTM1ZjI4MWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg1N2RlNGQ5MDc5YWE2ODFkMmFmNTY1NGU3MDg4NzI2ODMxMzAxZTUyODUyN2RlOTg3MTA1ZjI4NTk0OWVhNGEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA2ZDFjM2ZlODM0ZmFkMGZhMWU5NWQ0ZGJiOGI3NjkwODJiODVlNDcyZDE1NDlmMzlmYzBiMjQ3N2U2ODc5MDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhmNWZkZWZkYTBiODQ2NjQ0YjAxNjIzYjdkODRkYWRhMjJkNWU3NmE3ODc3MmYyZWY3NWU2MzkzNDAyNzQ5NzgifQ" + } + ] + }, + { + "id": "claim_a555018986264692b30a2e77e3511d6c", + "statement": "Connector-config auth uses type and api_base_url plus API-key label or OAuth2 access_token_url, authorize_scopes, identity_url, login_url and tenant_id_expression; despite its name, tenant_id_expression selects account_id from the provider response using a name or path, not a Sesam tenant ID.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L219-L293", + "version": "repo-lines-v1:sha256:115cd4fb3a0b90803caa362464eedd682ace4e87c8ff902793054de96ccc2230:eyJzZWxlY3RlZExpbmVDb3VudCI6NzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUzOTRlMzZmMDM0OTEzZTY4OGU4NTdlNmJmYzdlOTUwZDJiODdmYTdjNjVhOWRlODcxMzFjMGVmOGUxYjFlNTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhmNWZkZWZkYTBiODQ2NjQ0YjAxNjIzYjdkODRkYWRhMjJkNWU3NmE3ODc3MmYyZWY3NWU2MzkzNDAyNzQ5NzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_daa1c133bd184cac9fb5b4db1f13f7ee", + "statement": "Manifest auth is required and selects oauth2 or api_key; supported auth_variant values are superoffice-ticket for oauth2 and jwt, tripletex, service_account for api_key, with optional oauth2.login_url, scopes and token_url fields.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-manifest.rst#L48-L71", + "version": "repo-lines-v1:sha256:93cf4d4739ff3d80c53bcbb00a071cccbf594219bd891655734b99f8e3e0b8f4:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhZDNiOTYxYzdiNDAwYzFhNjVmMjcwYTAzMTY4NjFlNmE4MjMzMTUxYmE5ZGNlYTJlM2NlMGJmNTQxYTkwY2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM5ZmU4MTkwYWZmZTdhNzlhZDQ5ZTNiNTgzMzBkOTQxODAxYmY0NjUzNzIyMmNmOWVjNmU2ZmNkNGY5ZTIzNjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5YTBiNzQ4NGUxOWIyZTVkZjc5M2M0ZmY4NDQwMjRmOWZmODg4MWNjNjNkOTlkZGUyZDA3YmE3Nzc5OWNlZTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImExYzMwNjk1YzhkZGViYjc4Mjg4N2IxMGQ2MjQwMThhYWY0OTM3NGJhYmY4MzU0NTgwYTYwZTEyZWM0ODNiMGIifQ" + } + ] + }, + { + "id": "claim_8392cc89bf294e70a3e59667b94fcc22", + "statement": "The documented API-key injection uses system secret api_key, while OAuth2 uses client_id/client_secret inputs and injects oauth_access_token, oauth_client_id, oauth_client_secret and oauth_refresh_token.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L358-L388", + "version": "repo-lines-v1:sha256:0018a3c0fcd316f956fd69d19236a52b72d080b47e71c1041e14294b4ccc4a14:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgwMTJiNGI1YjBmYmExODVlODQ5ZDA3ZWFiYzdhYWRjZjliMzNmNWM5MGY3MWIzMjBjMjk3ZWQ4MTQxZWJkMGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjYzBkOWFhYjk2OTgzNTllYzY0MGM4NTQ0YThiOTA4YTE2MmFlZTYxZDc2NDFiMGYxYmY2NjJjMjM1M2ZiYzgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI2YmJjZGM2ZGMzODVhZTkxMjYwNjU0MmZlMTM1ZjU4ZDBmYTQ0ZDNhYmI0NjFlNTk2YmQ4ZDllMTJjM2EyMTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY5ZDEzY2JiZGIzMWNlMjE1YzE0YjI3ZTYwZTRiOGJkOTlkYjI5YWI2M2U1OWI5YTA0MWM4ZDFiOWUxYmFmZjIifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/authentication-schemes-pattern.rst#L50-L72", + "version": "repo-lines-v1:sha256:196270123c86f377c0542edfb8fcd5cfa28a143b4b0cff0ef0345fc2c30634c0:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1MDY4MWQwZmIzZTk2ZTA4MjM5YTMwMmIwNTU3OGIzNmU3NzA0NDAzZTU3YTdhYzdiZDcxMjQ2YTIwNzhiNTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjYzBkOWFhYjk2OTgzNTllYzY0MGM4NTQ0YThiOTA4YTE2MmFlZTYxZDc2NDFiMGYxYmY2NjJjMjM1M2ZiYzgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ1MmMyMTZmZDViYWNjOWQwMDE5MWMwMTdlYjZhYzNiNGFlNjlkZDgyNWYyMjVmYWQxNmJkMTAwZGJjMzFjZjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA2MTU0OTJjN2YwNjM1ZjMxOThlMGY5YzQ1NWI0MzI4ZThiOTYwNzY2ZTI1MThhNjQxMGNmZDBlMDk5NDJkODUifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/authentication-schemes-pattern.rst#L9-L42", + "version": "repo-lines-v1:sha256:6285a24251693e4eae137682892efbfc7764f51f8099728fa71acb92ec57b76b:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjZGYyZGFhOTU4YmRjNTg5NGQyMjMzOTVmMGFkNDg4ODFjOGRlMDU5MDQxMDkxNDY1MDdjOGE5YmE1Zjc0YWUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjYzBkOWFhYjk2OTgzNTllYzY0MGM4NTQ0YThiOTA4YTE2MmFlZTYxZDc2NDFiMGYxYmY2NjJjMjM1M2ZiYzgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZhYzRmZTUwMTMyY2I3NmMzZTlkZThiYmZlYjYzNmE5YmQ2MWY0YzJiODcxNTA0NTJmZWIwMzY3YzFkMGMxMDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhmODlmNWZjOTg0MTY2NTE5ZjRkZTY4MmUzNGEwZDRkZWM1ZGYxYTQ3NGY3Zjk0NzdkZDAxYTNkNTFiNjJhMjgifQ" + } + ] + }, + { + "id": "claim_537a345dec5b44dabbdf7f26b692cf14", + "statement": "Tripletex authentication documents consumer_token and employee_token system secrets; the JWT variant takes an api_key application token to request access and injects jwt_access_token and jwt_refresh_token.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L390-L407", + "version": "repo-lines-v1:sha256:9691487be165f8ec945d80a09480e4e28c8c08c1700eaeca5c6fc428e8ce9d2a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE3YmNlNGQ2MzU4NjVhMTQ5YzY0YTY1N2YyMjNlNjRjMmVlNWM4ZWQ3OWM5MzlkNTM5ZDljYjk1ODVlZGRmN2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjYzBkOWFhYjk2OTgzNTllYzY0MGM4NTQ0YThiOTA4YTE2MmFlZTYxZDc2NDFiMGYxYmY2NjJjMjM1M2ZiYzgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImEyNDU3YTQyOWU3NDk3ZGI2MTVhZGJhMGIxZTMwY2UyMGJiMTNhNjJmZjJmNWIwN2NmODU0Y2UyNjc1Yzc3NzMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ5ZmFlYTUyZGM0Y2I2OTdlZWZmMWExZDA3N2FhZWEzNTI1ZDE0Yjk1NTJhMTI0YTY2NWI0ZjY1MzQ4MGU2YWIifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/authentication-schemes-pattern.rst#L147-L175", + "version": "repo-lines-v1:sha256:1a1e4185d7ade84f19551f4a38dc6933b864739cb8e7750c3e6b2257fc02b191:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5YjgxNTBmMzJiNGM5OTlkY2I3ZDU0ODNhNGU2MDA2ZGVlNDU1OTI3OTMxZDE2MDE1YjNmYzc2NTI3OTBlZTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjYzBkOWFhYjk2OTgzNTllYzY0MGM4NTQ0YThiOTA4YTE2MmFlZTYxZDc2NDFiMGYxYmY2NjJjMjM1M2ZiYzgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJhODAwYjJlMzQ5MmM2Y2JlMzk1OWVhZDU4YjlkMzc2YTMyMzVlYjE0Nzk2MzRkYjE0NTBiNTNkNmRiYTA4MzEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJlZmI4ZDg2YjQ5YTk4MzMyYWY3NTY1OGZlOGE1ZTFiYjU5M2VjNmNkN2IxNGIwOGQwZGY0NTlkMWQ2MmE2MjYifQ" + } + ] + }, + { + "id": "claim_34a19afd8bf74a29852b77f7cb4bfcb9", + "statement": "SuperOffice secret naming differs across references: the connector contract says regular OAuth secrets plus so_ticket, while the authentication-pattern reference also names SO-Apptoken for the client secret, requiring the selected system template to resolve the exact naming.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L409-L412", + "version": "repo-lines-v1:sha256:304b285f5fd273e1c8c35dab1af9d811f526f92fb07c6910181ab47a69a4e41c:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzkxNTcxYTMxM2QyNjJmZDg2ZjE2NmFkMjZhODRlNjQxMDU0NGE3NTE4ZWQ0M2QwM2M4NzM1ZjJhOGY1YmJhOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDM5ZTk1NDczYmIzOTg4OWYxMmUzMzU1NWE2ZDA0M2QyY2VkYjYxZTNmNWYxNWY3NDUyOTBiMDA2MDZiNzY2MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTk1ODFmZGZjZGJjZDM4ODdkNDI0NGJiY2QzYWY2OTQ4NjkzYmUxZjlhNTk4MDQwNWZmMjFmNzJlOWEwMWU4MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/authentication-schemes-pattern.rst#L113-L143", + "version": "repo-lines-v1:sha256:d287e998095aba6970eeb752342167b070b2502d4c4ea026cb58773b54fdec27:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5MTU3MWEzMTNkMjYyZmQ4NmYxNjZhZDI2YTg0ZTY0MTA1NDRhNzUxOGVkNDNkMDNjODczNWYyYThmNWJiYTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjYzBkOWFhYjk2OTgzNTllYzY0MGM4NTQ0YThiOTA4YTE2MmFlZTYxZDc2NDFiMGYxYmY2NjJjMjM1M2ZiYzgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNlNDE4MzVjZjk0ODcyMTk5NjY4YWY2OTQ0ODczYzNkODM0MDk5MDM4OGIyZGI3YThmNGQ2OWE3OTJlYWFkNjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJhODAwYjJlMzQ5MmM2Y2JlMzk1OWVhZDU4YjlkMzc2YTMyMzVlYjE0Nzk2MzRkYjE0NTBiNTNkNmRiYTA4MzEifQ" + } + ] + }, + { + "id": "claim_b339d7fb0d9f4a7eada12fdcb991cb93", + "statement": "service_account is listed as a supported api_key auth_variant in the manifest, but the inspected connector contract and authentication-pattern references do not specify a detailed service-account secret mapping.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L355-L412", + "version": "repo-lines-v1:sha256:106cbe5372d554c938fc8a52f3ff5c96b1952c5c920769dab90379092b7362ea:eyJzZWxlY3RlZExpbmVDb3VudCI6NTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4YWEyNjBhNzQyZTM3ZmMzYzU2ZGUyMzk4ZDNkZTZiMjk5ZmNmNzE5ZTZiMjM0ZTIyYmEzN2EzMDkzOGZjZWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQzOWU5NTQ3M2JiMzk4ODlmMTJlMzM1NTVhNmQwNDNkMmNlZGI2MWUzZjVmMTVmNzQ1MjkwYjAwNjA2Yjc2NjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY2NWY3M2JlMmMxOTQ1MWNiY2I0MmM3ODQzZDIwYTZjNWMwZDRkMjBiODlkY2NlMDU2Yjg1ZTRhMmIwZTBhMmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/connectors/connector-manifest.rst#L53-L56", + "version": "repo-lines-v1:sha256:8106f516a520360347161498fb91c8eb24e83ca16eb640366261e1984391082a:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2Q3MDA5NmNhNTBhYjA5MTBjNTE2NTVjMzQ1MzI5MTVjYjBjMDUyMTkwMThiNTZjYzFiYTYwMDZhY2Q5NWE5NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGFkZjE0OTZiNjdjZDA1NDU4ODI5YTRjOGYzYWJjNWUyOGQ4ZjZiMzk0ODJmM2MwYzRkYjMyMTdkMzQ2OTgxZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGIxNTcwMzZlZDYyMjQwMTY1MzE1NTU1ZGUyYTUwZWU5MTgxNDI3YjMyNGY4NWIwNWVlZWI0OTliMzgyM2Y2NCJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/authentication-schemes-pattern.rst", + "version": "repo-file-v1:sha256:fad51c42fabf04d7b5188610fb5f852059216ebe29e86d5c73aa9e4c296b0493" + } + ] + }, + { + "id": "claim_ba0a9458c2154309a260713d2a1aad48", + "statement": "Manifest use_webhook_secret true signals generation of webhook_secret and anonymous writes on receiver endpoints ending -event; provider-specific validation_expression is intended to authenticate these requests, and some providers use an existing OAuth client secret for signing instead.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L269-L275", + "version": "repo-lines-v1:sha256:94d46126ffe1a400340dd4e6b3dae547e359c521fe28bc0b5203549e98d63b40:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWRjZmE5YjBmMDMwNjc1MWVkNjY0ZjQxM2I4NjNjNzc5Zjg3MzVmMTQ0M2ZiYmMwOWRhNzJjYTZjMTMwYjMwYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTAzMTZkOTIzMmI2NWZjM2NjZDBjNjUzYjBlODQ5YTQ0ZTIzNzJlOGI3ZDU0ZDM1NDFmNDY3M2FlYjBlZjJhNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmRjMmRlMWNiNTgxMDZjMDVmYjc3NmE2MTExMWRhNjdjOWQwMjk3MzFhZWFkN2JkOTg4YTE1YjM0NjBmNGNhMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2M0ODliODVmM2M1OTg0YjcxY2Y4NWI2NDMwYTg1YmVkNGJiZjBhNDFmNWE3ZTBlNTg3MzI3OWU3NzBhM2YwYiJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-manifest.rst#L83-L86", + "version": "repo-lines-v1:sha256:ced34196df362dd6e9f03e287aaa8336bdc5a41aee9ef8990d8f487fd84b5a06:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2IwMTczODdhYWMyMmYzZTFmZjQxZGMyOTg4OWI4NDliYjNkNTY0YjgyMzEwOGI3YjgzM2NmZDM5NGM0OTQ5MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODU0NDY5MGQwOWE1NzgxMjk2YTY0ZmJkYmVlMDlkZTBlYmMwNDE1ODdiNTljYmZhOTFhMDcwMDMxNWM1ZTVhNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmEzY2Y1MTkyMzU0ZjcxNjE1YWM1MTAzNGIzZTk3YzIwZWRhOTk2NDNmY2FmNWJiZTZkNDFhZDU5YmQxMjE2NyJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/receive-webhook-events-pattern.rst#L12-L22", + "version": "repo-lines-v1:sha256:5550651e814a675af13baf4fbad4f22f60e15e3f231f2d88c65991b780565472:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNTY4MjcyM2RkY2JmYjU1YjUxMmJhMTMyMzc2YWVhYmM0N2Q4MjlmMTljMTVmOGJlZTIzMWMyNzI5NzYyN2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgyZThiNWRlODQ0YmUyODk5YWQwYTRlYmZjMzNkOTRkOTEyNzljOThiMDY0YWI3MzYxYjNmMGM3Y2FiZGQ0N2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ2ODgzZTc5MjI5ODUxNzliZjQ0Yjc3M2E2YzhkOTQ3ZGZkOWU0NzliNGY4ZGY5YzY1NWRhZjYzYWMyOGZhYzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ2ZjM1NmQ4ZTlkNGRmNTc1MjM2YTE5YzhhYjhjYWQxZDgzZjk3NzY3ZThhN2E1MTYxZWU4MGYzNTBhZjFjNWQifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L170-L172", + "version": "repo-lines-v1:sha256:f565c1c257680d770e432661b6d884b59c323eab4ad63b57012937c5781b0ba4:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjVlOGRkYWRmMmFjNTM1YjU3YmE1OTIxMzgyN2I1Nzc0MDdkNTUwYzA1YmIzMDIwODVhNWIwM2JhNDg0MzhiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDAzZDM1MzkzNTE0ZTdjNDI2MmJlMDE4Mzk1NWNjODAyZTBhOTVmY2IyY2U3MWNmMzlmMDZkOGNkNTQxMjNiOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNGQyZTQyMTI4ZjY1ZDIwZDRmZmNiMzJiYTZiOTNmOWU0YTMwZTlhN2FhNWY4Mjg3NWRhYThmNDFhN2RjYTUwZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2Y3ZGJhNGQ2ZmFiNjU4ZmI2YzBjMmJmYTQ3MDJhNzJmOTRiZjI4MTA5MWQ3NmIwNDVmZjYxMGU3ZDQwZWY2ZCJ9" + } + ] + }, + { + "id": "claim_290bdbfc4eb04d80a7f74b33f869859b", + "statement": "HTTP endpoint validation_expression renders Jinja per incoming request, accepts an empty rendered string and rejects nonempty output as an error; secret accesses system/global secrets with system priority and requires system-read permission when using system secrets.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L153-L172", + "version": "repo-lines-v1:sha256:3a374804725cf6e70f74c1629f47e52350fe58aa29e1d1b77c60fec803b1afec:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYyZTQyNTU0NjNlNjY5NGMwZjk5ODEyZmFlMzVjY2I0YjkzZTY3YzYzMzA4MzllNTMzMjU1MzA3MjM5MjJjMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQwM2QzNTM5MzUxNGU3YzQyNjJiZTAxODM5NTVjYzgwMmUwYTk1ZmNiMmNlNzFjZjM5ZjA2ZDhjZDU0MTIzYjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5YWQwNzZkMzdlNjE1ZWYyZGY2MThjNzk2NmU5Njg4M2I3ZWJmZDE5ODhhY2U1Mjg2ODBiMTM5YjVmMjlkNDIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQifQ" + } + ] + }, + { + "id": "claim_704636e0ae4244a69dc2c63f76df9fd6", + "statement": "The webhook receiving pattern provides HMAC validation examples but inconsistently names use_webhook_secrets in the plural, unlike singular use_webhook_secret in the manifest and contract; its development advice also includes manually inserting a client secret in the validation expression.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L272-L275", + "version": "repo-lines-v1:sha256:7886b58fb77f22e6356c4379e5df7ca79d3b8c6a5f5ee8faab854bcc3a017e7f:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjljZGE0NzAzN2Y3NjMzNDM1Mjk3ZTZmNTA2MWIyMjc5ZGI1Mjc1ODRjNzcxZjI4NTQxYTk2YzYzNmJmMTA0NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTAzMTZkOTIzMmI2NWZjM2NjZDBjNjUzYjBlODQ5YTQ0ZTIzNzJlOGI3ZDU0ZDM1NDFmNDY3M2FlYjBlZjJhNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTY0YTZhYTU4NDBhNTU5YTdhYThhYjZkMWZkYzEyNjc4NDY4ZTlmNzhmMzZhZDIwODY4Y2IzMTM2ODM2MjlkZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2M0ODliODVmM2M1OTg0YjcxY2Y4NWI2NDMwYTg1YmVkNGJiZjBhNDFmNWE3ZTBlNTg3MzI3OWU3NzBhM2YwYiJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-manifest.rst#L83-L86", + "version": "repo-lines-v1:sha256:ced34196df362dd6e9f03e287aaa8336bdc5a41aee9ef8990d8f487fd84b5a06:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2IwMTczODdhYWMyMmYzZTFmZjQxZGMyOTg4OWI4NDliYjNkNTY0YjgyMzEwOGI3YjgzM2NmZDM5NGM0OTQ5MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODU0NDY5MGQwOWE1NzgxMjk2YTY0ZmJkYmVlMDlkZTBlYmMwNDE1ODdiNTljYmZhOTFhMDcwMDMxNWM1ZTVhNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmEzY2Y1MTkyMzU0ZjcxNjE1YWM1MTAzNGIzZTk3YzIwZWRhOTk2NDNmY2FmNWJiZTZkNDFhZDU5YmQxMjE2NyJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/receive-webhook-events-pattern.rst#L12-L24", + "version": "repo-lines-v1:sha256:8e376b86972cf4649552a783c03ae851ce18b139c62a5d88783dafc2d5bea2e1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNTY4MjcyM2RkY2JmYjU1YjUxMmJhMTMyMzc2YWVhYmM0N2Q4MjlmMTljMTVmOGJlZTIzMWMyNzI5NzYyN2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5NDQzOTIyMDg5OTQyODY0ZWQ2MDM3ZTJiMjExZjVjMDhkYTNkODFmMDNhMTg5NjUzZjVhOGIzMWRiZmZiMmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ2ODgzZTc5MjI5ODUxNzliZjQ0Yjc3M2E2YzhkOTQ3ZGZkOWU0NzliNGY4ZGY5YzY1NWRhZjYzYWMyOGZhYzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc5MzY1ZDhiYjgwMDhlMTMwNTYzZmQ1Njc5ZTEwNzE4MTRiNzkzOTEzYmU3YjNlODNkZDNmYTI4MDhhNDQ2MjkifQ" + } + ] + }, + { + "id": "claim_20376c83bcda44d9ad9f8b1efb425ff5", + "statement": "The documented webhook pattern registers webhooks before consumption, receives partial events in -event and does slow full-entity lookups downstream in -event2 to avoid blocking reception, then merges full-scan -all data and event data in collect.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/receive-webhook-events-pattern.rst#L168-L189", + "version": "repo-lines-v1:sha256:48356230853b482486588fcb96eaeaa8d1f1df368cc11deb47c22cedab449ea9:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVjOThjMWJkMTViMTQzYWMyZDI1NDFjMGFkMGQ4NjE2Zjc1YTk5NDYwMWYwMjgxZTE2MDM2MWFmZTRiY2IxOGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNmNmI4NGU4NGE2ODQyOWRkNDZmNjBhNzQ1Zjc1NzY0MzAwYzA0OWQyMTE1NjM1Mzc0NDI4OGEzOGNlOWQ3YWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoyLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjExMmJiOGMzM2NlZDIwZTM2ODQzZGEwZDFjM2UxOWNiNDE4MjFkMjMyYTQ2NzNkMDNiNDg5YTI4NWE3OWJmMDgifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/receive-webhook-events-pattern.rst#L50-L79", + "version": "repo-lines-v1:sha256:fc629979169820d85751c8ba1867cda62dd414ae6d894c92c0b4957edc29c4a9:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM0ZmE5ZmY4MmE3MTA1ODAxY2Y5NDViNjFjYjkzNmJlNWYxZDNiYTM5NDlkODAyZDI2OGM4OTc3NDRlYzI5NDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNjczYWJkNDU3YTk3ZWVhMTdhNjAwNjJlYjBmYWVhNmJkZjA5NDg2OGNjNmI4ZjhjMGViZGEyZjYxZWQ0MmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFhMDg5ZTQ0YzJkNDZhNjBkYmIwMzRmZGEwNjJjYTVjN2Y0ZmU0ZWQ2NDdjMTIyM2MyYzljZWFlMjYyODY3NGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ1NDU5NTczYWY0NDUxOGUyZjFmNjMyNjRlMTkwMzY4Y2I5YWIzM2FhZWJiOThmNGIyNjE5ZWI1OWY4M2FkZjQifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/receive-webhook-events-pattern.rst#L6-L14", + "version": "repo-lines-v1:sha256:6a3c275b8579fd3bd3efa346bae249b6b0b77d005b10624c12549735c165ea13:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGM0ODVjODdlODU3NzFiNGNlZTZkMzQzOTU4MThmNTk1ODMwYTk2YTMwZDdmYzBmYWFjYWM5YWRlOTcwYmJhZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzgxNTE2NjI2ZTQ1NWE3NTQyYjE2OGU4ZWZhYzU1YjdlNDZlODMzYzdjZTg4ZWVjMDY3MWE4YWZmMTAzZTYxZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDIwZWFiZGFmNzAwNjczNGM4NDI5NzdjYmVlNzUwOWM5Mjk2NjAwOTU3OWEwYWNkM2UyZjdlMzRlZDVjM2I5NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWRlYTg3ZDA2MWI1ZWFhMjg5Yjc3ZGU1ZGFhYmE3MWZjNzIzMjM5ZDcxNDBiN2ZmNDZjODNlOWFiZWQ0YjU4MyJ9" + } + ] + }, + { + "id": "claim_957f8976b066486db506eebe9eb8516b", + "statement": "Collect output must use SYSTEM-DATATYPE-collect naming and remain close to the original API; connector-added business properties absent from the API should use sesam_ prefixes.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L13-L15", + "version": "repo-lines-v1:sha256:d0af052d7bd2e3bb782618ac68fe33cb112203ac4565b5d426332cb49ecb0dcf:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTZkNTlkZjg0ODRiZGMzZGM0YTJjM2ZhZGFhOTkzMzFjMDIzMmY3Nzg3ZDljMjY2NjFmZGM1MzY4Mjk4N2I2MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDM2NTQ2N2UzODAzYWIwNzFmMjdiNjdmOWJhODEyOTA1YjA2ZGM1MjgxZTUxODMyN2ZhNWU4MmI0NjlhZTMzNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDA1YTc4NDc2OWQ5ZGFiNjkxMTRiMjE4OTg2OWMyY2YxM2JjZmQ5MTBhNGMxNzQ1YzFiZDM2N2MxY2JlYWIxNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGFkZDBlNjkyZTM5YWYxNmIxZTgxYjFkMDI2MThhZjM3MGJjNjRmYzFmMGNhOWU3MzU1YTVlM2UzYzI4MTk4YSJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/synthetic-properties-pattern.rst#L4-L4", + "version": "repo-lines-v1:sha256:a6c933524de886998b2b05791b241ba1fb7d878a53e0e58718cef388a8926f70:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTZjOTMzNTI0ZGU4ODY5OThiMmIwNTc5MWIyNDFiYTFmYjdkODc4YTUzZTBlNTg3MThjZWYzODhhODkyNmY3MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTZjOTMzNTI0ZGU4ODY5OThiMmIwNTc5MWIyNDFiYTFmYjdkODc4YTUzZTBlNTg3MThjZWYzODhhODkyNmY3MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWY2YjdjOTdjNmU3ZDJkMzJmMTNmOWRmNDQyYTA5NDcyM2M2NTEwOWZmZWVjYjhjMmIwOGNhNjE5NDM1ZjI5ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjhiOTM0MTZkZDM1ZDRmODQwZDEyOThjNmFhNjI3NmIwM2Y2NzExZjQ5OGE3ZTJhNWJjYzIwN2ViYTVlM2RlMCJ9" + } + ] + }, + { + "id": "claim_d8842c72480744aabd4bf17dac11357b", + "statement": "Collect $origin is optional opaque metadata managed by model mapping and recovered from the share sink by joining the raw system primary key to $generated_id; optional $last-modified records last modification in the external system, distinct from Sesam registration _ts.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L28-L35", + "version": "repo-lines-v1:sha256:99332e86c0baa10b79e6fdc3106f1de80eaddf429b1df815b9e6807c24411020:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTk4MDk5Y2MwNmE5MDkxYmYyZTY5NjkyODE0NmNiMmZiNjY0YTBhZWZiMjU0NzdlZWI0MmMxODllMzFhNmRkNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWQwYTFjNGE5MDU1ZmI3NDUxOTljMmEwMTFiMTExMWU4MjE5NzY1MTE5ZWFlNzdlMDQ3ZjE5OTY3ZTdiYTUwMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzhkYTdjMDBlYmUzMDgwNWI3ZWEzNDU1ZGM1NjdhYzY2NmI5MDdlMzY5ZDI5YzliNmVhN2ViYzkwMGEwNzM3ZSJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L103-L110", + "version": "repo-lines-v1:sha256:681f8687eb7bd55dfc1d42b81572af8069a01808487091c1176c7c7707537e12:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWUzZWYzMDRjZWQwNTAxOTg3MDhlNmYyMmZmNjVkMzEyYmE2MGE3ZDFkZjg4ZWQ1ZDViNTgyMmU5Njk5NGUwNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmZmOTkyNGQxZDgxNGQ5MmZhNWM3YTc1Nzc0N2QxZTUwNGNlN2Y5NmYxNWVjNjdmOGUzMTI2ZjM3MzUwMzYwOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWM3ZjM3NjMxODMxYjg3OGUzODVkZGJjZTZhNzg3N2VhMDlmYjc5ZTIxOTcyMThkODk0NWZjZGQ2MjI3MDc5MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDdlNDhmYmQ1YjYyZTI3Njg3ODJiNTE3MDQ5MGRiNWRiMGIyNGMxNjg1YzVhODgzMjdkYzFkN2Y3ZTY5MGI3MSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L54-L57", + "version": "repo-lines-v1:sha256:b80199a380313d279797c15c9893590a932e8aaafca6a998942524d912af36bb:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDE3OGU4NDgyZmYzMjQ3NzBmNThlOTc1MDZjZGM0NmJkZDI1MDIzN2RkOGYxYjA1YzIwYzA4ZDUzNDI5YTJjMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGJlMGVjNzMzYTliZjFhYzBjYmUwMjMxNTE2MDI4ODI2ZWIzMWQzYzRlY2UwMDE5Mzk2MDBmOTkwZDQ0MGYyNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWRjM2VhZmU3OWViOWI0MjRjZjgxZmY5ZjVkNTQ5MTYyODg3NWFlNWJlZDc4ODllYjYzYjU5Zjc0NGJkYjExMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWNjM2MzMDk5MDYwNzM4NmQ3Yjc2NjU1ZDJlNjg2MjMwYmI3N2ZlNGEzMDNiZmU3NTA5NjY2MWM1MTBjMDFmZiJ9" + } + ] + }, + { + "id": "claim_5f5648fb26ba40b9bbff6021ee1a03da", + "statement": "Sesam entity _id is required and always a string; only root _id and _deleted are preserved from reserved underscore fields on dataset writes, while semi-reserved dollar fields are stored and hashed as entity content; NI and Datetime have ~: and ~t JSON encodings.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L137-L156", + "version": "repo-lines-v1:sha256:2d09290995c3573797061068ca3272b94888901482c8522ac35fdcb3ff32fccf:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjMTE4MTU2OGIyZThiOGQxYTEwZDljNDEzNWNjZDUzOGIyOWVjZTk4ZDdiNDM4OWFjM2E0ZDU4ZTk4YzFjNmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhMjI3MzExNDc0YjYwNjQwY2U5ZWMwY2Y1ZDI2YmVmNzA2Y2E3YzVlZDcwNzE4NjE5MmNlZGJlNWVjMThhZTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFlZDZlNTZkODZmNTIzY2VhZWQ3ZTcxYzU3ZDM3Nzc1NDk3YjMxZWU0MGNlMDliNWVlMjhmYmE4ZjNjM2RmMTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM3ZTg5N2Y5ZmYyYjQ1N2Q1MGEyMDAwNTJkMjlkYzJjMjE5NDI4YjY4NmI4NTJiZWQxYzNjY2I5MDIyNDFmYjIifQ" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L249-L285", + "version": "repo-lines-v1:sha256:6aaa4cff8cadd4cc1926451042353cfdf264b8791173109c15ac7a49b91b5b78:eyJzZWxlY3RlZExpbmVDb3VudCI6MzcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyMGQ5YWE5M2RjYTE2ZjVjYzYxNDk0NGFjN2E3MjJjZTUyMTM5YzM2MDNhY2I3YzMyNzY4NWRhMjU2NDNlMjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFiMDg1MzFhNzUxNDZkOGNjNzhkYjUxNTRkNmMyMjY2MzcxNWU4MGY1OTJkODkzMTZlYjEzMmY4OTdlYTY2ZGEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYwNWY3OTExMjE1ZDk5ODNlZmM2OTlhNTI3ZWExMDEzZjY0OTRkMDA5YTZiYzNjZTBkOWJiY2IxNDU3NWU2MTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUyMWU3ZDE2M2Y2ZWQ5ZDMzZWFkYjU1YWYyZmFlZGE0ZDk1OGI3YjZiNzJhZjU0ODE1NThmZDc3NmI0MmJmNjcifQ" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L49-L69", + "version": "repo-lines-v1:sha256:41672a76adb7f0a0ec77b4e4d7b8a379960ebecb430a0a61bd01924fb439535b:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMxYThhOGFhNjNjYWVlMjE4NjM1Y2MxZDFmMzFkMTBkZmFlNGY0Y2EwZjY1ZGUyYTFmZDM0ZTQ4NzMxMjEwNGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJkZGFlZDVmMjliODMzNzIwN2YzMTQ1YmQxMjJiNmRjYmY0MGQzNDhhODA0NjZiODhjN2IzMDczMGMxNGUwMTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFhMTFmMTUyNzM1MGJmM2Q3NmM5ZDY5ODM2ZTJjMTUwNGQxMGRhZTBhYTFlM2E1YjAwOGQwZWUyNzE2MjdjMDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU3YWQ3NTlmZjZkM2IwODdkZmU3MjlmYzZjY2ZlNjlkN2NlYWJiZmQ2ZmFkNDZmNDdmMTdiMmRmOGIzNDhlMjUifQ" + } + ] + }, + { + "id": "claim_743b7862e72e421391981a0f59aa8223", + "statement": "transform-collect-rest recovers origin from share data and supports parameterized lookup and deletion verification; operation_lookup_delete takes precedence over operation_lookup and rewrites _deleted false when the supposedly deleted entity still exists.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L105-L139", + "version": "repo-lines-v1:sha256:99d277c05d17a05dffdea11bc7fb7746917d4b0cb857e9a4712e51726215b4a1:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUxMzFmNDM0NjU1Mjc4MDVkNmFjNjI1NDcxZWViZGRjODI2MmJkNDI0YTA3OGU5NWZlM2E2OThmMmFmYjgxMDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2ZmJjYWI1ZTFkNDA2ZjdlNWQ0NmY4ZTEyZjQxNTdhNzM2ZWU5N2Q5Zjk2OGI0NzMxZGFkMDQxNGI4ZThlYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJlZWFmMWMyNDI3ZWVmNmQ1YzkwZTZmYTMyNGNiYmZiM2RiYzE1ZGZlOGQxNGEzNWFjMzJiYjBiY2ZkMGY1OGYifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L54-L57", + "version": "repo-lines-v1:sha256:b80199a380313d279797c15c9893590a932e8aaafca6a998942524d912af36bb:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDE3OGU4NDgyZmYzMjQ3NzBmNThlOTc1MDZjZGM0NmJkZDI1MDIzN2RkOGYxYjA1YzIwYzA4ZDUzNDI5YTJjMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGJlMGVjNzMzYTliZjFhYzBjYmUwMjMxNTE2MDI4ODI2ZWIzMWQzYzRlY2UwMDE5Mzk2MDBmOTkwZDQ0MGYyNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWRjM2VhZmU3OWViOWI0MjRjZjgxZmY5ZjVkNTQ5MTYyODg3NWFlNWJlZDc4ODllYjYzYjU5Zjc0NGJkYjExMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWNjM2MzMDk5MDYwNzM4NmQ3Yjc2NjU1ZDJlNjg2MjMwYmI3N2ZlNGEzMDNiZmU3NTA5NjY2MWM1MTBjMDFmZiJ9" + } + ] + }, + { + "id": "claim_d246073e696943d7bbc8fd1e8f5fec87", + "statement": "Connector input must use SYSTEM-DATATYPE-transform naming and represent desired target state with the same business property names, datatypes and structure as collect output, removing property namespaces but retaining the namespace in the _id value.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L66-L76", + "version": "repo-lines-v1:sha256:188ccebb9c0646cf80470e42b11f56d1c2f2a13151856688dfc7e139b4b4196f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhNDgyZDRhMTY2NGM0MGRiYjBkMGYxNDA5ODlmYzhkMDgzNmZiZWU5ZDJmYzU3NGY0NGUyNjM3Yzk2ZjkzY2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRkOGY1OTJkNTYwODkwMmY2OWJmYzgzOWUyOTBmNzRlMTVlOWZiMDIzNTc1OWYwNzg3M2Y5NmU0N2U4Mjk5MDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRlY2I0N2QyMzcxNmJhYzEyOTIyNmI4OWFmOGU4NjQ4ZDMzYThiODYxZGZmYTljYTdhY2M5Yjg4MzViMWYzNjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhhZGQwZTY5MmUzOWFmMTZiMWU4MWIxZDAyNjE4YWYzNzBiYzY0ZmMxZjBjYTllNzM1NWE1ZTNlM2MyODE5OGEifQ" + } + ] + }, + { + "id": "claim_b9ef9ff225794f43a265e32b8a174eb3", + "statement": "Desired-state mapping must emit one entity per represented target-system entity using each target's enriched namespaced _id; when no target-system entity exists it emits one entity with source _id unchanged, which is treated as the inserted entity's origin.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L74-L76", + "version": "repo-lines-v1:sha256:348eb72c18e2425d4288c5f50b4098b09b2dd3ac056a1f087855764b74979198:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDQzM2M5NWI1Zjg0NzY2NGJjNTBjMjNkOWQwNTk5NzA2M2U5OWU4OWU4MmVhY2YxOTczYjA2YjgzOWVhN2FlZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGQ4ZjU5MmQ1NjA4OTAyZjY5YmZjODM5ZTI5MGY3NGUxNWU5ZmIwMjM1NzU5ZjA3ODczZjk2ZTQ3ZTgyOTkwOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTI3ZDM1OTViMzlhMmYxNmEzNjMzMTQ4MmJhNzhjZDIwZWM4YTE2ZGFmZGMzYWE0NzQ3Mjg0OGVjZjM2YmU2MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGFkZDBlNjkyZTM5YWYxNmIxZTgxYjFkMDI2MThhZjM3MGJjNjRmYzFmMGNhOWU3MzU1YTVlM2UzYzI4MTk4YSJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/namespace-split-pattern.rst#L6-L10", + "version": "repo-lines-v1:sha256:53f3cea7d06903bdfa045cf389a3a4cf2526062908107278ca2afb5300108772:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjg1OTBmODNmY2RjNmMzMzFiOTQwOTA0MDNiZDQ1OWViZmJkMjEwZTBjMTM3NDAxODQzZmJlNGY3MTg0NjQxZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTc3MTJmNGM5OTlmOTI3NDBkYTZmOTkxNjQ5ZGNlOGEwYjYyNjllN2IxZWM2MDQ0ZjJjYWY0MWNiMDgyNmI5MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjgyM2ZhNmRkMGJjYzYyNGI1ODA4ZmI0MDU2OWQ4MjY1MGQ5NTNiMjcwZWRkYzI4NjhkNjk1NGMyNWNiYzliNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjhiOTM0MTZkZDM1ZDRmODQwZDEyOThjNmFhNjI3NmIwM2Y2NzExZjQ5OGE3ZTJhNWJjYzIwN2ViYTVlM2RlMCJ9" + } + ] + }, + { + "id": "claim_f6e28aa7fa224637970f2092cd7e9610", + "statement": "The desired-state $ids list contains NI identities for current _id and all other identities previously emitted as _id for that object; it is required for insert and optional for updates/deletes, not merely a list of raw API primary keys.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L89-L92", + "version": "repo-lines-v1:sha256:5430168ea115e7a15f4d1ac0b2e80f6681265ad707c6b5c5ab5b837ea6e0ef63:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2FkYWZhMTAyMGYzMGMzYzRlMGJlMTczY2IwYzBkMThjYTczNjA3MzViN2UxYWE3YWE5MzIyYjE3NmRkZDU0OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODBlMGMyYWM2M2QxOGU1MTJlODU2MmEwMTgyMjA3MzI4OWU4ZjNmYzM4ZDZmN2VkMzM3ZWY2YTI0MjU1OWQzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWQwYTFjNGE5MDU1ZmI3NDUxOTljMmEwMTFiMTExMWU4MjE5NzY1MTE5ZWFlNzdlMDQ3ZjE5OTY3ZTdiYTUwMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjBmOThlODljYmQ1YTZmNzQ0ZDQ2ZTcyYTcxZTA2Mjg4ODNkYmM4NWEwMWY5YTBmYjQzNDkzOWU1YjA5NWU3YiJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L151-L156", + "version": "repo-lines-v1:sha256:a17f50b3df6dacaeb59862b97c2864ce4614aceefa80da5775365ae178e4135a:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDk4NWRjZTMxYmFlYWNhZTgzYWNmYWQ1YzM0MmNlNmY1YzlkNjMxMzE5NzA1N2U0NjMxMmIyZGQ4NDdhY2UwZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWEyMjczMTE0NzRiNjA2NDBjZTllYzBjZjVkMjZiZWY3MDZjYTdjNWVkNzA3MTg2MTkyY2VkYmU1ZWMxOGFlNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjdiNTNmMmFiMzlmYmI2ZTNkNzhjMzg0ODY2ZmE4Yjc4NjI5MGNiOTY1YmU0OWFkYjRmODQwZTM5NjEwZmU0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzdlODk3ZjlmZjJiNDU3ZDUwYTIwMDA1MmQyOWRjMmMyMTk0MjhiNjg2Yjg1MmJlZDFjM2NjYjkwMjI0MWZiMiJ9" + } + ] + }, + { + "id": "claim_f2f16503e03e4b3aadab36ec425332b4", + "statement": "Desired-state $based_on is a dictionary of collected version values for relevant raw properties, and $based_on_properties lists property names or dot-separated comparison paths; both are required for updates and deletes and disallowed on insert to support external-modification and unnecessary-write checks.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L93-L100", + "version": "repo-lines-v1:sha256:a536dbf3cb4bc14d93368cf5ff94b5281098f3e7de36ce0cb67802ca418c1c28:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjlhNzEzMDRjYTlkNzFkZjZlNDEwNmFjODg3OTI0MDgzNTczMmE1Nzg4ODc5NGU0MWU3OWRmNmMyODNlNTUzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjEzZDQ5N2IwMjMyNDhmNDkwZTJiYzhlYWYwMjNjY2UxNjJhMDljNzhkYjA5ZWM3NTlmNDk3YWEwNTdkNDliZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmQ5OWEzNTc1ODM1ODA3ZTg0M2Y3ZTFjYzVjNWNjZDkxZGUwY2Q1NTAyYTdlYTk4YmEwYTFiYmJmZmZmNjE1NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzU2YzNiMmE5NTE1NWE5NDNmNjkzMjVlZTQxMDBiNzdkY2QwNTQxMTMzYWVkNzk3NGU2NmViYzFkMzExYTMzMiJ9" + } + ] + }, + { + "id": "claim_2a197aacc8d043afb583c816335aafc4", + "statement": "A share pipe passes $origin to its sink; insert without $origin is an error, while the metadata can be absent when the entity originated in the target system.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L105-L108", + "version": "repo-lines-v1:sha256:948780e87f82e0a6e8093deef46afdb8d98751b5d0e101a142017452c56091a2:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTk4MDk5Y2MwNmE5MDkxYmYyZTY5NjkyODE0NmNiMmZiNjY0YTBhZWZiMjU0NzdlZWI0MmMxODllMzFhNmRkNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODYyMDNhZDhkNzIxNWI1YTJmMWY3YTk0ZGUzNzZjZjYzYjg0OTM1MmMyMzkwY2EyZTc5NzVkMWQxMjE5NjUyNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWUwMTI1OTU3ODRjZjk3ZGVmOTY0MGQxYWUwMjk5NTU2ZDBjMmMyNGZiZmE2MzBlZTJjZTgxOWZiNTM2YmM1ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTJlMmY0YWM0YWM0ZjU0OTEwYjFkNzg5NDZiNDJkOTY4ZmI3NGQyMDZiYWNhMDhhMWVjZDRjNGVlN2U4YzQ1MCJ9" + } + ] + }, + { + "id": "claim_b0e9fa900b0c465aac5908a6ae41b096", + "statement": "$replaced is optional on deletes but disallowed for update/insert; merge emits _deleted true and $replaced true for old identities replaced by new ones, which must not trigger physical external deletion, and dataset sources can filter these with include_replaced false.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L101-L104", + "version": "repo-lines-v1:sha256:e00831bc215db9d967b99f1a4af145e59b3404fff40feb06d83b4fb516884d89:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWI0ZTdjMDJjOTBiNGI5ZmQwNjE5MDM3N2IyZGQ1MDVjMjU1ZjFmMTkzNTE4YTE5MGI2ZGM2ODVmNmUxNzI0NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZWMzYTA1YTA2OTQ5NTc3N2I2NGU0ZWUyMDhkMmI0Yzk5NGI2MDVlZjg3NzEwZDgzNjEzMjE3ZjY2ODFmOGYzYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTYyNzdjMDkzODg3YmE2NWNhODMxYWQyOTJkNDE5YmQzY2M3OGE5ODBjMjFjY2E0ZGU0NjJkOTlhYjJmNWYxYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2M3ODUxZjI4Y2U0M2UyN2Y5ODMzOGIzZmZkNGNkYTBhYTJiNGMwYjIyOGI2ZWNkYmYzOTk0NjhhMjg4NzljNSJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/delete-pattern.rst#L6-L6", + "version": "repo-lines-v1:sha256:4959ab218db8e2fffa4e67be3f71f55c8c0f117024e403ef330d24221795a5b3:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDk1OWFiMjE4ZGI4ZTJmZmZhNGU2N2JlM2Y3MWY1NWM4YzBmMTE3MDI0ZTQwM2VmMzMwZDI0MjIxNzk1YTViMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDk1OWFiMjE4ZGI4ZTJmZmZhNGU2N2JlM2Y3MWY1NWM4YzBmMTE3MDI0ZTQwM2VmMzMwZDI0MjIxNzk1YTViMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjM1NDAyNjI0YmE5N2VlOGNlNzUxNDIwMTM5MTAyZGNmNzk5MDNlMDljNzg4MTEyMjdlMjE0MDk3ZDA4ODFhMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L102-L105", + "version": "repo-lines-v1:sha256:e7d3da1a8d0aa66b093e8a63a43d519e1ce596550506e3cdccd35443be5e3d29:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTAyNTkyZjA3MGU1NGJmNzU4YmM0NGMxZTM1ZGYzY2Y0NDAyOTg4NTcwNmZiOWFlOGRhNzNlNDY3NDlkNjI2OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQwYjM2MmQ4MWNkMDhjMTYzZjM1Mzc0NTQ4NjI3Y2FjNGVmYWRkODA3M2QyZDA4YTc3ZGRhNjc3OTNiNWFhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzBkYjZiZjRiYzI1MzA5OTAyOTZmM2Y0N2E2ZGE2MWIwNTA5NTAyNDM3MTE4MzQxZGI3MzA5ZjZjZDJkZmIwOSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L12-L20", + "version": "repo-lines-v1:sha256:038325c4ad691b5c16ec732eeed21c124a26547abf092e3a162c478f7c50ef7f:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODUwMWUwMWJhNzYzNjg3MjdmNGExNWJhYzA1OGY5YzFhNTY3YWYzYzA1ZWY4MGNhNGEwYTJiNzU2OTc2NDY2NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmQ2MTNmYWE0MmIwNzBhNzZlMGY2ZDhmMzUyYTM3MzJhYzA5NGRkYWIxMmI5YzAxYmU5NTExZGJmMTRhNjRjYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDA2MWZjOWI4NGE1M2U2MjE2YjM3ZTU1ZGYwM2FlNjk5MDIyMDA3ZmFjMjE5ZGQ5OTQ5MzE3MDU3ODEzNjczMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTU4MzkxNjQxMzgxMjIyN2M2NTAzYjUxYjFjYzA4OTJhNjIyOGUxZTVmYmMyZWMwYmNjZTZmMzhiZWY2NDJiYyJ9" + } + ] + }, + { + "id": "claim_ea0cec28f230457c9f6ba636aa5e0c66", + "statement": "Synthetic sesam_ properties must be excluded from optimistic-locking comparisons because they are not present in the external system.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/synthetic-properties-pattern.rst#L54-L56", + "version": "repo-lines-v1:sha256:ce0946aa147fe3fd9a53139fc6e7e95ba1f61f7b887e6dc559192bb4b02099e5:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGE3YjcxOGRhMzc5NzRmZTFiNDNkZjBiODY0MmIxMzkxZmRlYzU3ZmYxYzZiNWUzYzMyNTllMzI0OTU2YTQxMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGMzNzFkM2I2MGUzNTZiYmJhMDZhY2I2NTYzMWE0MjEyODU2MGQwYTE4M2ZjZGMxNDAwYmQxYzA1ZTRkNWQ4MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2NkN2ZkZGRhN2M2MDViZmUyNWI2N2MxMDRiY2Y4YzE4MDNlN2FkOWUzNzg1NjgzMDUzYmM3ODVmMzdiMTdiMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_aada1aa8233448568fa87e3dd4fdb873", + "statement": "Connector contract examples conflict with its field requirements: insert lacks required $origin, update has invalid array syntax for dict $based_on and lacks $based_on_properties, delete lacks required baseline fields and the illustrated raw id, replacement prose uses _delete instead of _deleted, and the identity-splitting sentence mixes namespace spellings.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L74-L76", + "version": "repo-lines-v1:sha256:348eb72c18e2425d4288c5f50b4098b09b2dd3ac056a1f087855764b74979198:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDQzM2M5NWI1Zjg0NzY2NGJjNTBjMjNkOWQwNTk5NzA2M2U5OWU4OWU4MmVhY2YxOTczYjA2YjgzOWVhN2FlZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGQ4ZjU5MmQ1NjA4OTAyZjY5YmZjODM5ZTI5MGY3NGUxNWU5ZmIwMjM1NzU5ZjA3ODczZjk2ZTQ3ZTgyOTkwOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTI3ZDM1OTViMzlhMmYxNmEzNjMzMTQ4MmJhNzhjZDIwZWM4YTE2ZGFmZGMzYWE0NzQ3Mjg0OGVjZjM2YmU2MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGFkZDBlNjkyZTM5YWYxNmIxZTgxYjFkMDI2MThhZjM3MGJjNjRmYzFmMGNhOWU3MzU1YTVlM2UzYzI4MTk4YSJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L89-L170", + "version": "repo-lines-v1:sha256:b6fd1ba4f0560144c82edc0bd88e966299c81f0a95d3c28a0e149f5e44c311b9:eyJzZWxlY3RlZExpbmVDb3VudCI6ODIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdhZGFmYTEwMjBmMzBjM2M0ZTBiZTE3M2NiMGMwZDE4Y2E3MzYwNzM1YjdlMWFhN2FhOTMyMmIxNzZkZGQ1NDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFkMGExYzRhOTA1NWZiNzQ1MTk5YzJhMDExYjExMTFlODIxOTc2NTExOWVhZTc3ZTA0N2YxOTk2N2U3YmE1MDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI1ODEzNjhkMTJjYjJkNzUzODY2NDc5ZmI1OGNjNTAwZTNiODFiNWIxMzUzYjg3ZWFhZTVkZmRkNDAzOGEwZWIifQ" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L66-L69", + "version": "repo-lines-v1:sha256:a574df90b87759a646d3776fab95d9f0c53e2c4b71acb987d9c0f0aacbff3ffc:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDdmZmE2MzUxNzAzYjlmMWVhYzJmOTM2NGY4OTEwZTdkZDI3NDVkNGNjMjdkMDA4ZjA4YThiNjk2MzA2NmNhOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmRkYWVkNWYyOWI4MzM3MjA3ZjMxNDViZDEyMmI2ZGNiZjQwZDM0OGE4MDQ2NmI4OGM3YjMwNzMwYzE0ZTAxMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzY3MTUxN2RmMzI5YTlkNTA0NjE5ODRhM2Q1MzcwMGZkNzBhZDdmZWJiMGViNzgwNmE5ZDllYWY1NTAzOTdhMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTdhZDc1OWZmNmQzYjA4N2RmZTcyOWZjNmNjZmU2OWQ3Y2VhYmJmZDZmYWQ0NmY0N2YxN2IyZGY4YjM0OGUyNSJ9" + } + ] + }, + { + "id": "claim_77f16c2fc39947beacdd9753b572c755", + "statement": "transform-share-rest performs REST CRUD and optimistic locking; core required properties are rest_system, primary_key and share_dataset, with primary_key_insert for a different insert key and is_natural_key for keys not generated by the server, and default lookup/insert/update/delete operation IDs can be overridden per datatype.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-templates.rst#L82-L94", + "version": "repo-lines-v1:sha256:af9988757eaac1af18ec1671a636d64413c31371e218dbe936dfe050cec8db2f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE0NWNiZWNkZGNhYmQ2OWQ3M2U3ZjEzYmM3OWI4MDEyMGRhMDM5NzAyMGEzMTExNzNlNzJmMmI0OWNhZWEyOGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNjczYWJkNDU3YTk3ZWVhMTdhNjAwNjJlYjBmYWVhNmJkZjA5NDg2OGNjNmI4ZjhjMGViZGEyZjYxZWQ0MmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIzNjhjODA2YTE1YjBkOTM2MDI0MTg5YTJkNWIwZGU1Y2VhMzg5NmIyZGI0M2UzZjkwYWMzYjI2NDQ5Nzg3YWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI5OWVjNDZhNjE4MGFlYmIxOWYyMDc3NmY4ZDZmMzkyNzg1N2RiMDQyYTFjMjkyOWEyOTk1MzNmNTUyZDQ3MmQifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L208-L211", + "version": "repo-lines-v1:sha256:5125f973721afaef66b97e816e05b91339ea17a94a4065e73cfb13c7e1b64c9c:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjk2MDVhZDM3M2Y5MzhjNTk4MzY0NjM0NDgzOTVlY2ZlNmY4NDRmNjM2NDI2YzI1YWNmZjhmZjIyNmM5Y2FkZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjczNjMyMWU1MzY3ZmViYzJkZGI0MDMxYzFjMDJkN2FlYzAzYjhmNjZlNDQ4ODI2ZTljMmM3MTk4MmFmMWZhMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjQyOWI2NDFlZWEyZGY0MjQ3NGNmODYzOWEzOGViMGVjMTMyZmYyNTQxY2Q5ZjFjMzZhYjExZjQwMzQ4MDJkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2JlYWJiMjFhYTBlOGRkNDU0ZjkyN2ZhMjE0MGZlNDM4YmU2OTI0ZDA4NDViZmFhOTNkZGUzMTg4YWU5NjQ2NCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L251-L309", + "version": "repo-lines-v1:sha256:2e9109176df11ea0c867f4a6edfb14283762eddfe36010d5ab4c52c101c94d6d:eyJzZWxlY3RlZExpbmVDb3VudCI6NTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3Zjc2MjhlMDZiNzg0ODc4ZTU1YjY0MzQxNGZkNTVkMTY0YzI0OGU1ZGFhYTMxNWNmYzhhMDUzODYwNDEyMTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIwMjllZWIwOTM4M2I1ZmJiODFlOTg3NDYyZjZhNmE1NDYyNTlkYWNlZDBiNDFjMDQyNmRlMzU5YzlkOGZhMjQifQ" + } + ] + }, + { + "id": "claim_59292790bc954b19beb77a748cc221da", + "statement": "Optimistic locking compares current target lookup data with the last imported version and defers conflicting writes until recollection; $unsafe_skip_optimistic_locking true overrides a modified-in-system comparison to permit updates and is documented as a repair mechanism to use cautiously.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/optimistic-locking-pattern.rst#L6-L10", + "version": "repo-lines-v1:sha256:43397f85205babc585ebf6e64e2d829e7909bc8067f15ada0f3f8b8a19de229a:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDRkYmE5NmE2OGVkMDAxNmEyZmVkY2Q5M2E3ZjZhZmFjMjIzMzRlZWYwODAzMzRhZWUwMWE1MWY2Yjc3NzY0MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjQyZWM0NGYxMTExZTE4NDc4YjI5MDdkN2FlNzY1ODYzY2ExNGM1ZTE2MmQwNzNmODAzZTE0NDJlZTE5NGUwYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTU4M2ZlMjY3OWY5Nzk3ZmNlNjFhYWNlMTAxMGQ2OTA3ZDUxZDdmM2VhYmVlNTZmYmUyMzU1OTRiNGUzYzc2MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWJiYmU5N2ZmZTJhMWFiYjIyYjhiNWE0ODBiZDIyMWY5ODJjYWY4MTk5YmQ1ZDU1NGJlYjQ3NDk5NTkzMzQ3NiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L211-L215", + "version": "repo-lines-v1:sha256:e8134c7ad3433c8c99440883e90311b2c2c0cef527e2455459340e4fa6dd8342:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjczNjMyMWU1MzY3ZmViYzJkZGI0MDMxYzFjMDJkN2FlYzAzYjhmNjZlNDQ4ODI2ZTljMmM3MTk4MmFmMWZhMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDZjNzI3M2E0MTgzNWVkZjExZDQ1ZTk5MWYxYzNlY2QzMWU4ZmQwNjlhNmQxZTFhOTg4MjEwMzg4MjUzOTBjOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmYwOTM1OGViMTVjODU2MWIzZjJmMTU2Y2YxOWU5YjczNDRjZTAzNDU3MmU5OTM4NjgxYjY5Yzg2MjhiNDMyOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWNjM2MzMDk5MDYwNzM4NmQ3Yjc2NjU1ZDJlNjg2MjMwYmI3N2ZlNGEzMDNiZmU3NTA5NjY2MWM1MTBjMDFmZiJ9" + } + ] + }, + { + "id": "claim_86d19b059c8b40fc8d94824b3f0c717c", + "statement": "The share-result identity loop persists the generated target primary key as $generated_id alongside originating metadata in a share dataset, enabling later collection to recover $origin and avoid treating an inserted entity as unrelated; capturing the external response requires communicating through a transform rather than a direct external sink.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L105-L108", + "version": "repo-lines-v1:sha256:948780e87f82e0a6e8093deef46afdb8d98751b5d0e101a142017452c56091a2:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTk4MDk5Y2MwNmE5MDkxYmYyZTY5NjkyODE0NmNiMmZiNjY0YTBhZWZiMjU0NzdlZWI0MmMxODllMzFhNmRkNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODYyMDNhZDhkNzIxNWI1YTJmMWY3YTk0ZGUzNzZjZjYzYjg0OTM1MmMyMzkwY2EyZTc5NzVkMWQxMjE5NjUyNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWUwMTI1OTU3ODRjZjk3ZGVmOTY0MGQxYWUwMjk5NTU2ZDBjMmMyNGZiZmE2MzBlZTJjZTgxOWZiNTM2YmM1ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTJlMmY0YWM0YWM0ZjU0OTEwYjFkNzg5NDZiNDJkOTY4ZmI3NGQyMDZiYWNhMDhhMWVjZDRjNGVlN2U4YzQ1MCJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L28-L30", + "version": "repo-lines-v1:sha256:44027409f83238649d4601bb19edadfb92b4d66de4044a293ee156d7f183f9f6:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTk4MDk5Y2MwNmE5MDkxYmYyZTY5NjkyODE0NmNiMmZiNjY0YTBhZWZiMjU0NzdlZWI0MmMxODllMzFhNmRkNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWJlZjllMjQ4NTgwYWVkMDRjYWM5OTcwMTQzNmQwMjg5NGIzMWRhNDI1ZTY4ZTRiZjAxYzc4ZDNjOTA0MDAwMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWQwYTFjNGE5MDU1ZmI3NDUxOTljMmEwMTFiMTExMWU4MjE5NzY1MTE5ZWFlNzdlMDQ3ZjE5OTY3ZTdiYTUwMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDVkMDNiMTdhMDE4YTM1NTg1ODMwZjVkZmJkZThjZTQ0MjhlMWU3ZWIyZWNmYmJlOWYwYmNmZmM2OTdjMDkyOCJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-templates.rst#L70-L95", + "version": "repo-lines-v1:sha256:a740d4ef428e10827279029dbfec6b5042562386af0d45487f02620985037661:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY5Y2E4OTFiZmY3YWMxZjdjZWFhZTQwZWYwNTEwNjZiZTllZmU0N2I0ZTQyODFlODZjMzE5YmUyYzU1ZWJjZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE5NDA0ZDEyYzVkZGU0MDFlMWUwZjFiNGFlMTI1ODRjZmQ1ODE2YzVmZjE2MzkzMmJiYzA4YzlkNDBmZGM0ZjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU4YTgxOGY5MjY3MTI3MzA1NzAyY2VlNTQzMzI2Mjk4ZDViMDlkYTRkY2U4ZmY2YmI5YTU3NDAyNjY4MDFkNmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFkMGYwNTIxMmI5MDBlZjUxMzI1ZWQ4ODFjNmI3NWE4Y2NiM2FmN2NkYmZjZGNlMmQ5YWVhNjEyMTA0MGQ1YjEifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst#L6-L6", + "version": "repo-lines-v1:sha256:fdb1e8bf08cf593b81a156b94aa75027d207fb9070004dda3db8afa899535acc:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRiMWU4YmYwOGNmNTkzYjgxYTE1NmI5NGFhNzUwMjdkMjA3ZmI5MDcwMDA0ZGRhM2RiOGFmYTg5OTUzNWFjYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRiMWU4YmYwOGNmNTkzYjgxYTE1NmI5NGFhNzUwMjdkMjA3ZmI5MDcwMDA0ZGRhM2RiOGFmYTg5OTUzNWFjYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTUwYzhlYzdlMDY1YWNmMjQ3MTBlOTJkZmJhYWVlYjljYjkyNzE1NjYzZDQ5MGU5MzM5YTMzNDRkNWUxZjU3YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGNkYWI0NTdjMTExMWY3MTAzYWFhYzlkODI5ZmZiYjEyY2QyNjg3ZDg0MTE4MzdkODYwMjJkYzVmODI2ZDEzOCJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst#L66-L75", + "version": "repo-lines-v1:sha256:3555841cdb3f2eaa242d112784f4d6914da04a8f7b693f61f5c2d7d1845a9b8a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliOWU5ZTEwMDY0MDBmOTllMzFiYmVlYjQ0ODVmM2QzNmI4ODQ4MGNjZjQ1NjlmYTZiYTIyODdmNWIzM2IwYjkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2OTAzZTBkYTA5YTgyYzFiNmZkOWYwNDE0Yjg2NzNlZTE1ZDY4MDM3YmNiNDk1OTA1N2VkYzQ2ZjIzMjMwZjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc2NDUyYTFkMjE1YTAxNGJjYTNhODE0OTVkNjFiNWI3Nzk3MzczMTUzMTQ3NjBkZGYyNzk1Mjc4MjRkNzQ1NjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ2ZGM4NGQ3MjM0ZmVkMGM2YzAwODU5MDM5ZDM0OThjODQzNjVmNTc2OWUxMzc1NjBlYzgzZGEyZDJjZGE5NzAifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/establish-origin-pattern.rst#L6-L12", + "version": "repo-lines-v1:sha256:96b4487d39c080ffef5d67c687215ee36eed00b928c4fec5fc1a19edc336f88e:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzIwOTY1N2Y1ZmMzMDY1ODRhZGQ0NzgyOTliZTU3NmY4ZDlmYjUwY2Q0N2Y3NDQ5MjM1ZTM3N2YzYzU2OTY1OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjc3ZTE1NDYxODFkYTQ1YTIxZGRhNDc4YjMxYmU0NDBkMjQ5ZjQwNDdjZWM3OTZkODMwOGY2YjAwOGFjYzZmNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTMyYmIyMzkwZjk3NjdkNWZlNTA1YTVjM2NjYzZlOGExYWE5MGNiMjJiNDA2NDgwMzY0OTc4YjU2ZjI4ZDg4OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjhiOTM0MTZkZDM1ZDRmODQwZDEyOThjNmFhNjI3NmIwM2Y2NzExZjQ5OGE3ZTJhNWJjYzIwN2ViYTVlM2RlMCJ9" + } + ] + }, + { + "id": "claim_11176ca6bd944e15a7f9a2aa125dbe47", + "statement": "The inspected connector contract and template reference establish origin pass-through and generated-key joins but do not define a complete universal transform-share-rest sink result/error schema; response_body, response_status and error-insert belong to the documented custom capture-response pattern rather than a stated universal $status contract.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst", + "version": "repo-file-v1:sha256:ea523656d440c11400b3f75ef7a65ad7c3dd68951999471d74c623e1a7ab6601" + }, + { + "resource": "repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst#L40-L75", + "version": "repo-lines-v1:sha256:53ad68eabc462b99c189001f7fe34f7c71219f8457d76b06e28b1d1195a8b0cf:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNmNWY5MGY4MDIwMDg0MDU2NDUyMzA2ZmVhY2M3Y2MyODFhMjE2ZjhkM2ZkZmQ3MTJkZGEwYTdjNDc3ZGE0MTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2OTAzZTBkYTA5YTgyYzFiNmZkOWYwNDE0Yjg2NzNlZTE1ZDY4MDM3YmNiNDk1OTA1N2VkYzQ2ZjIzMjMwZjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhjZmI5NmEyYmIwNTFjZGRhODJhNjI5YWZlZDFlMGY3OTExZDEwOGIyZThkNmMxNzgzMjk0ZTVlMmVkMDZiODQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ2ZGM4NGQ3MjM0ZmVkMGM2YzAwODU5MDM5ZDM0OThjODQzNjVmNTc2OWUxMzc1NjBlYzgzZGEyZDJjZGE5NzAifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst", + "version": "repo-file-v1:sha256:56ec6fdd313ce278df6e605c14584b5a44a6fe1635632797cc0309f6e4b700f0" + } + ] + }, + { + "id": "claim_bab42eaa46d845aca9a1c9e5b13560df", + "statement": "The custom capture-response example stores response_body and response_status, adds $error error-insert for its non-success statuses, extracts $generated_id on success and trips when the generated primary key is missing or incomplete.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst#L40-L75", + "version": "repo-lines-v1:sha256:53ad68eabc462b99c189001f7fe34f7c71219f8457d76b06e28b1d1195a8b0cf:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNmNWY5MGY4MDIwMDg0MDU2NDUyMzA2ZmVhY2M3Y2MyODFhMjE2ZjhkM2ZkZmQ3MTJkZGEwYTdjNDc3ZGE0MTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2OTAzZTBkYTA5YTgyYzFiNmZkOWYwNDE0Yjg2NzNlZTE1ZDY4MDM3YmNiNDk1OTA1N2VkYzQ2ZjIzMjMwZjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhjZmI5NmEyYmIwNTFjZGRhODJhNjI5YWZlZDFlMGY3OTExZDEwOGIyZThkNmMxNzgzMjk0ZTVlMmVkMDZiODQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ2ZGM4NGQ3MjM0ZmVkMGM2YzAwODU5MDM5ZDM0OThjODQzNjVmNTc2OWUxMzc1NjBlYzgzZGEyZDJjZGE5NzAifQ" + } + ] + }, + { + "id": "claim_bef01a5af8704330b0840645e4adb7ba", + "statement": "REST transform response_property defaults to response and replace_entity defaults false; retaining the original entity allows response content and configured response status/header fields to be attached, while status/header fields are not emitted with replace_entity true.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst#L79-L118", + "version": "repo-lines-v1:sha256:968f167770cdcce7e0ab3289e6e47a0b70cc02e32b497d08469fcd2f4313e60f:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4MDFmMTUwMzlmMmQwMDQ1Y2E4NTU1MzlhMjA1YmIwM2U5OGQ2NTc2ZWQ5ZjBkNjJmNDhlNjljZmFlMmZkMWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM2OGQ1YmQ5OGRmYTFiZTdlNGY0MTQxN2MxZTQxYTZmNTU2ZDM4M2NhN2QzY2YyNmM0NzU2ZmM2MGRkMmQzYzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFjMGZiZjZkZTg4NTVhZGI0MDBjMWZiNjRiYWU1MjM1ZWFiMmU4MDBkYWE0NjI1ZjYwMDMyNGUxYjVlMTkyYjgifQ" + } + ] + }, + { + "id": "claim_3561935963b148ab92539fb840399ada", + "statement": "Share payload rewrite extension points rewrite_insert_payload and rewrite_update_payload receive _S with original source in _S.$source, return a dict with $payload, and take precedence over entity $payload; rewrite_update_payload_after_patch receives patched _S._payload and accesses original source via _R._S.$source.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/share-template-extension-points-pattern.rst#L4-L9", + "version": "repo-lines-v1:sha256:229c1d0e95c653c1532f9170ce2dd1b25c1c3df146dc3c3d9a5ed14fe15687c8:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2E5MjFkMGYwZDhkOTExZDA3MzVmODRlMzYwMzJiNjgyN2JmMDM3ODVhNzBjNGRkNjcxYWIxNmUxYTQyMzExYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTYyZmFkZjE4YmUxNzI0MDUxMjk3YzM3OTY3NWYyOTRiM2NjMjlhNDczZTJiNDM1MTdmMDkzNWVmYWQwOTA0YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzAzZjM2MGRkMWJiZDg0YTcyY2Q2OWY3MmRmNWMwNDVhMWUwZDllNjM1ZDgzMTE2NjJkNzVlMTg5ZTc0MmZkZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDU3NTY5MjRjNDkxMzQ0YWNjOWMyMGI3NzU4Y2Q3NmE3YWMxOWY0NjM0ZjY0Mzc1MDM5N2EwN2EwNmExN2VjYyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L365-L371", + "version": "repo-lines-v1:sha256:af346b02ea58a0b3eab7d494440f85d62c96942c629626795039f48945c25f5c:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmE4YmIzYjk1ODI0Y2RjMTZiNmJjYmFjYzIxYWY4MGU1ODRhZDg4NjZiMzUyYjkzYmRjOTQ2ZWI1MzY2MGYxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2Y3ZGJhNGQ2ZmFiNjU4ZmI2YzBjMmJmYTQ3MDJhNzJmOTRiZjI4MTA5MWQ3NmIwNDVmZjYxMGU3ZDQwZWY2ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODg4MDlhMjZjNTVkNmI5MWViNjIyZWVjYzUxMzI5Y2Y4MTEwMjQ5MmM5ZjJmMTNkNWM4NWEyYzMyYzBmMGJlYiJ9" + } + ] + }, + { + "id": "claim_ff5b1f68532e4558bfd91e9f94dd1c0e", + "statement": "Share rewrite_rules_lookup implements rewrite_lookup over the lookup response, and rewrite_rules_mutation implements rewrite_insert, rewrite_update and rewrite_delete over mutation responses, providing the documented adaptation boundaries for response structure and returned keys.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/share-template-extension-points-pattern.rst#L11-L19", + "version": "repo-lines-v1:sha256:990739ea1bd17b620f8948766e096e4e7dc039972a1608e96cdf0efc276c2f24:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTFkODFkMDgxMzFmZTI4Y2E5OGJmZDFhZTNkNmZlNzA2NTMzYzU5ODkwZDcxNjBmNTQ0OTQxMThkMThhNWY1ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmY1NjdkNmM4YzdmNWE2MzdmNGEyMDJjM2U3ZDk1NTZkNjBiN2ZjODZhZjhhMWM1OTI5ZjIyYzE3ZjdhMzhlOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzI5YjliZGM5NjRmZmE0ZWQ0YjBhNjk0ZDkyM2M1NjgzZWY2YWRlMjg1NzgzYzA3MzcwZGIzYjA1MWU3ZjMwOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L373-L383", + "version": "repo-lines-v1:sha256:9a061805a0254dcf6a6a01d01e3cbf9e0cfed0bc0d9e2528fa1009243b2d84ce:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1YTVjZDBiNTAzMDk4NDNjZDQ5Y2IzODdmYWU3MjdlZmI4NjA4NGQ2ZGRjOGY3YTE5YTVhODc5ZjNkMGQxN2YiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ1NGRhZDM0MTg3ZGU2OWU5YTRhNDM4NTNhN2RjYzBjYmJmMGY5YTI0NjI5ZjY2NTNkMWNhYzkxNTJjZmFmNTcifQ" + } + ] + }, + { + "id": "claim_679e2c79093d481c932ab3dc4e9700a8", + "statement": "The share rules dictionary supports lookup_rewrite as fallback for lookup_rewrite_based_on and lookup_rewrite_update; the specialized rules prepare $based_on_lookup comparison data and client-side patching data respectively.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L359-L363", + "version": "repo-lines-v1:sha256:a7266038f1f9c99e4eccf46788cc83c12a628d3783c6aa77b8292a8e52a8abba:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjU5NDhlMmVkZjZlOGYyNjA5MGVmM2I3YWM3MGEwNGNiYjY1ZTkzODE1ZDY3M2EwMTNmNWExZTgzNjcxYzFlNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjczZTQ1YzU3NTJhODZlZWQ0NTNkOWNhNTQ0Y2MzZGJkZDI5MTg1Nzc2MDBlMzhiYjU1ZGYwZjQwZjZjOWU2OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjRkMTg4NWUyY2MzNDVjY2ZhMmI3ZDY2MDFiZjQwNzgwNzFmYjUzOGY2NzA1YjMwM2E4NDQwYWIzM2EwZGQ0OSJ9" + } + ] + }, + { + "id": "claim_393cf18322194b46855b35bb2154d597", + "statement": "Share client_side_patching true builds an update from the lookup response patched with the actual payload for APIs requiring full replacements; entity $payload customizes update/insert requests, and share payload_property selects a request payload property whereas raw REST payload_property selects a response sub-property.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst#L185-L193", + "version": "repo-lines-v1:sha256:d2322fdd10624fc6b7e5ed6b6f361624cbe202bae14df0a7d8619e06841ab108:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzg1NzhhNTk5ZDNlMjI2Y2JhYmE3OTI4MmZjZWM0YmMxMDZkMDY4MGI5ZjgwZjZhZDEyODYyYzdlY2RhNDZiNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2NhNDdkNThmMTI1NDMwYTlhYzVhNmUwN2I0OGU5OTY0YTAwOTM1OGQyNmJhNmUyNGM3NzQzMGQ4OTdiM2Q1MCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L281-L285", + "version": "repo-lines-v1:sha256:aeb558697f1df905f8c32086bd05c1dd8041fb5b5d9d48b6986f2254cf17cfdb:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzg1NzhhNTk5ZDNlMjI2Y2JhYmE3OTI4MmZjZWM0YmMxMDZkMDY4MGI5ZjgwZjZhZDEyODYyYzdlY2RhNDZiNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjdiYzc5NzgyMDk1ODNiMGQxZDljZTRkMzRkNDQyOGM2OTRkNGI1Zjc5Njk1MjYzYTUxYzg0ODcwMDIyNjRhZiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L385-L406", + "version": "repo-lines-v1:sha256:f1fa14c1c439131cabc01d12c227ee4a6b61cb9bc967291608484059d93f09be:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZiZTJkOWE4NzMyMjk0MjVjNmIwMTQ5YjY1ZTBiNzRmODg2ZGE3MDhiZGU1NjgxNWY4MTc2YjQ1NzMxMGVkYWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_a52222ea20ef4b53b7b4a77539b7c592", + "statement": "The runtime reference prototype under transform-share-rest erroneously selects transform-collect-rest; its CRUD heading/description and the connector template usage identify transform-share-rest as the share transform.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-templates.rst#L82-L94", + "version": "repo-lines-v1:sha256:af9988757eaac1af18ec1671a636d64413c31371e218dbe936dfe050cec8db2f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE0NWNiZWNkZGNhYmQ2OWQ3M2U3ZjEzYmM3OWI4MDEyMGRhMDM5NzAyMGEzMTExNzNlNzJmMmI0OWNhZWEyOGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNjczYWJkNDU3YTk3ZWVhMTdhNjAwNjJlYjBmYWVhNmJkZjA5NDg2OGNjNmI4ZjhjMGViZGEyZjYxZWQ0MmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIzNjhjODA2YTE1YjBkOTM2MDI0MTg5YTJkNWIwZGU1Y2VhMzg5NmIyZGI0M2UzZjkwYWMzYjI2NDQ5Nzg3YWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI5OWVjNDZhNjE4MGFlYmIxOWYyMDc3NmY4ZDZmMzkyNzg1N2RiMDQyYTFjMjkyOWEyOTk1MzNmNTUyZDQ3MmQifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L208-L236", + "version": "repo-lines-v1:sha256:f554016eccf4411ba3ad4ae918b2e4355257a175e9f073ac83890e48b439c000:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY5NjA1YWQzNzNmOTM4YzU5ODM2NDYzNDQ4Mzk1ZWNmZTZmODQ0ZjYzNjQyNmMyNWFjZmY4ZmYyMjZjOWNhZGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM0MWM0N2EwODhhNzc3NTBiMzQ4MDI0ZmQ3ZWI0NDIwZDAwOTdhNTczYWViYWYyNmE2MDRjMTE3NmZlYmFlNzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI0MjliNjQxZWVhMmRmNDI0NzRjZjg2MzlhMzhlYjBlYzEzMmZmMjU0MWNkOWYxYzM2YWIxMWY0MDM0ODAyZDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY2NTAwOGVhZGE2ZWI0NTFjMTkyODg1ZmRmNWU3YWZiYzZmM2ZmMmJiNzgyZWE4OTA4OGRkZTFjZTZiNzMwNTIifQ" + } + ] + }, + { + "id": "claim_bbe7e23527564b289e296806397f8878", + "statement": "Share template operation-specific allowed-status options default to 100-599 and excluded statuses fail the pipe when restricted, unlike the raw REST transform's 200-299 default; allowed non-success statuses require downstream handling rather than being treated as successful mutations.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst#L221-L235", + "version": "repo-lines-v1:sha256:4f24248bc9398e24eba56a504d3d3a930a0b48220f22fa10ef0656eea2b4172f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM5NGQ5YjAyZjRmMzM1YzNlMDVjNDE4MjcxMjU2NDc1MTQxNjQ5NGMxOTBmYzJlNGI0MDZiYWZkNjI1NDQ0ZWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNWVhZGIxODQwZWI4Njc1YTJjYTFlYWUyN2UxZjA4OTdjNGM4OTk3NGIyZDYzYjkzNmUzMzY4ZjZlNzVmNmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRhNTUzZWQ1ZTE1NWYzZTlhOTJiY2Q5NTFjOWY2MGE0NTE2N2YxNzMxNzA0YzA4MWM5NzRhMGEzMTRkNmE0NmYifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L335-L357", + "version": "repo-lines-v1:sha256:4d5f4c2b22073ae723af62422b1eb5e24348fe47ab14692c70103a7bde46492c:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU5YTZkYTA3MDZmZGMyNGJkMTA4MDY4ZjNiOWNmNmZkNDdhODMwNmNkMjBiNTY5Y2FmMGQ0OGMxYjJlZDk5MzciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFlZTRkN2MwOTMyMjUyZmFkMmIzMDdhYzMyMTQ3ZDI5NmIzZTBiODg2MDkyYzAzMzhlNmY3ZDY2YjY5NGE5MzAifQ" + } + ] + }, + { + "id": "claim_99b91f3e9c54493fbd551e8dd2a0b421", + "statement": "Documented share/insert safety uses batch_size 1 and persisted successful insert responses because external mutations and dataset writes are not transactional and replay can duplicate inserts; set_initial_offset onload enables sink joins and duplicate checks should avoid dependency tracking that retriggers mutations.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-templates.rst#L70-L80", + "version": "repo-lines-v1:sha256:144a7be3bd20d215e6ef59fd90825d9dc1b8ec4f42008444ed4e1790d2b822b3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY5Y2E4OTFiZmY3YWMxZjdjZWFhZTQwZWYwNTEwNjZiZTllZmU0N2I0ZTQyODFlODZjMzE5YmUyYzU1ZWJjZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkyMTE1NDUyMGNhYzMyZmUzYWVmM2E3Y2ViYjRkMjViY2I3ZjZlN2VkZTA0ZGU1ZWYyZjQ2NzJmM2I0ZTM4YjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU4YTgxOGY5MjY3MTI3MzA1NzAyY2VlNTQzMzI2Mjk4ZDViMDlkYTRkY2U4ZmY2YmI5YTU3NDAyNjY4MDFkNmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZiOTE0N2YyZGYwOTliYTE4NDY3MWJlNjgzYTJlYmIxZjMwYzVjZDI0MjY2OGNlMDk4Y2U3ZTgxNTcxMDQ2MDEifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst#L8-L10", + "version": "repo-lines-v1:sha256:eaf8b7ac4a081506bb65e06174ad34b4ded3ab3dc9451343ed8503a6a8bd5eb2:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGY0MzNhOWE3ZTJhNjI5NGY4NzM2MGRiY2EzNDM4ZjYyY2U1YjFmOTY0NTNmNDUyZWIyNGE2YjRkMzE5MTVjZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZThmZWI3MWQwY2Y2NDVlYmNhYWY5OTMwMDM2Yjk2MjNiMDFiYzVjY2M4NDhkMzNlMDZhYjMxOGM3MWIxYTZjNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzgzMzBiYWY3YjI5NWI1MDcxMDA1N2FhZWViOGI0MDRiZmQ4YjlkMzJmOWIxOGZlZDIyYTBkN2QzNDI3OWFkZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjMzMzg0MzRiNmY4NjM3Mjg4MzNkZTg3MTUzNjhhN2I5ZGQ1ZGVjYmM4MzVkOWI5MzgzYWM3MDdmMTQ0ZTZlYiJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/duplicate-hops-block-pattern.rst#L25-L36", + "version": "repo-lines-v1:sha256:00b433bd11220af53b8b7c06d902bbf2ca19b7ce650f270b13cc47d05211f6ac:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcyZWNiZWFiOTBhYjBjNjZhMDg1ZTc1ZGI1ODZkOTYxN2QzZDdhNTUzYTJjZTZlZWYwMzRiMTcyMjViOGM1NDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY1OTllN2U0MjUxMmY1MGJhZTNmZTQyZWNlZGVkZWUzMGUwZWNlN2RlNWY2NWRjYjRmNTU1ODAxNDQ1NjNiODAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYzMDQ4YjI4MjlhNTY3ZThhZjM1YjViMDEzYTY1NmM2MTIwZmE1YjFmMWU2MmUxNDNmNzE0YzBmMGFjNWVjYmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYzOTZkNGFhOGNjNTdmMTQ0ODlhZDgzNTE0MWIxNjgxNmZjZWQzYzBhZTcwNzMwMjVjNzM0ZTU4Mjc1NDg1MjUifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/duplicate-hops-block-pattern.rst#L6-L10", + "version": "repo-lines-v1:sha256:5a86c42d7053bdad7e6af576c20342776a51180c02db8a0edf8f4d2c587e4909:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGE0YTFjYWUyMjI1MmY4MjlmNzQxZWZmMjM4OGRiZTQ5ZTliMzdiMWU0YTJlMGNhYjRiY2Y3MGZlNGY4MmExMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2JiMWY4YzM5MzlhNThhZTNkYjlhYzE5OTYzZGI5MGZmMDM2ZGQxMTdkNzM0ZDkxNjg1ZDgzY2I5ZTllMWRhYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTU2ZjA2Y2ViZjAzMTMzMjk4NTNiYzkwOTc0YjE3MmQ3OWM0ZGMxM2Q5NmE1OWFmYWRmZjY0ODZkYmQwY2ZkZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjhiOTM0MTZkZDM1ZDRmODQwZDEyOThjNmFhNjI3NmIwM2Y2NzExZjQ5OGE3ZTJhNWJjYzIwN2ViYTVlM2RlMCJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L13-L27", + "version": "repo-lines-v1:sha256:e23b9297a62fd1af23b20e8e608e4c89d1aec7a6a4c8beebad4207826098c20c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ5MjI4MzRmY2U5Y2I2NDQ5ZDAzNjFkMWM0MzkwYmZkYjRhM2U5NzU1ODgyZmVmNmE1MTY4ZDFkNDJhYmRjNDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY3ODhlMDBjMjI4MjEwOGNhMjIwMzE4ZTJmOGI5ZmE2ZTM4NTEyOGU5MDE0MTk5ZWMwN2QzMDEzODBmZjU4YWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRmMzU5ZGRiOWQ2NGExNmE2MjQ5ZDU1YTVmZDUwYWU2NmUyNjgxNWI3MTIxYTNiOWEzOTczYTIwOGY0M2VmYjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIzZDQ2ODJhNzFmMzg4ZGYxNmRkMmRkY2VmMzc4OTg3ZTFiM2IxMjQwZTgxYmY1MmQwM2NlODYwMjZiNGRlOTEifQ" + } + ] + }, + { + "id": "claim_07674eeae2934f849d35a23c0cbb532b", + "statement": "Durable data is recommended for pushed inbound and non-idempotent endpoint/share pipes; metadata.durable true stores pipe data and state on high-durability storage to reduce loss/replay risk, rather than guaranteeing exactly-once external delivery.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst#L8-L8", + "version": "repo-lines-v1:sha256:8f433a9a7e2a6294f87360dbca3438f62ce5b1f96453f452eb24a6b4d31915cd:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGY0MzNhOWE3ZTJhNjI5NGY4NzM2MGRiY2EzNDM4ZjYyY2U1YjFmOTY0NTNmNDUyZWIyNGE2YjRkMzE5MTVjZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGY0MzNhOWE3ZTJhNjI5NGY4NzM2MGRiY2EzNDM4ZjYyY2U1YjFmOTY0NTNmNDUyZWIyNGE2YjRkMzE5MTVjZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzgzMzBiYWY3YjI5NWI1MDcxMDA1N2FhZWViOGI0MDRiZmQ4YjlkMzJmOWIxOGZlZDIyYTBkN2QzNDI3OWFkZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTcxNGM0NTg4MjJkNjg4ZDYwMmE5MTdiMjU4ZmI3YjA0N2FhYmNjYzA5MGJkZWMwNGMyMWFjOTljMDE4M2MzYyJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L80-L84", + "version": "repo-lines-v1:sha256:be707cb9f14400b8f53f83871032b352a618e1ea6114458da388d12b4640e9c9:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGZhZTNkNzJmNWZiZDIxY2M3OGI1Y2UwZDM0ODIyMmY1ZmI1N2IzMjAwNTIzOTVhMzEwOWFiYmJiM2RhZWU5NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmM4MzViYTMwYzViMTg1YjUwMjJlMDY0YjVjNzMwMzYwMGEwMDRjNzNmNDQzMTE1ZGE4NGJkMGE3MDRiNTRjZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2U4Y2QyOWQ3ZjVkZmI0MGUwMDYxMWFiZTMwODI5ZDEwZjA2ZGNkYmI3Mzg2OGE4OTVhNjNjNmE0MDZiZjVmZiJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L9-L38", + "version": "repo-lines-v1:sha256:a163ea9454b329e6484e7c9cd7cdae0b9cdee22b55351efccd651fa5b3c752dd:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4Y2YwMTMyZjM2MThhZDBkYTk2Yjk3MDk0NDVjZTM4YzA0N2NhNTI0YWVhOTFlYzQxNjdlMzhhZGEwNzkxZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM3M2U1M2MyYjc3NDYxYjkyYTdlODE3NjY2ZGUyZTY5MTA5YTA3ZWExMDY5MDFhODNkZDZmMWNjY2FkMGIzZWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJmZTEzNjU1N2M3OWNhZmNlZjUwN2ExNTc5MGYzNWZiYWVjZmVkMWE2YTZiMWQ1NzM4MDAwODUwZDAyODAzZmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk0NzIyYjZkM2RmNDc5NzYwMTQyMjViMWRhM2EyN2M1ZjJlOTdlNTc4YjM4NzUwZDY0ZDE2ZjIwYTVlNzFhMTQifQ" + } + ] + }, + { + "id": "claim_f98d4db5f3be466f841aeab09df40a70", + "statement": "Preview executes transforms, so mutation transforms must be marked side_effects true to prevent inadvertent external changes; the common transform default is false but the REST transform default is true.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L29-L32", + "version": "repo-lines-v1:sha256:6d1b20d5695d283db4769b30fe64dc8ae57eedf1a11bc666d7fe5255277fd13c:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjFiZGU0ZjY0N2NkNDhjMzBhZWExMDUxYzE1MWJjYjRkY2RiYTM2M2I1NDFkYjlhMjVlZWZkYTlhMTYzMGU1NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWZmMjE0NDFkMjhiZGI1OTIwMDlhOWM4OGI3ZTdmNzI5NDljM2QyMjU0YjQ4NTQwOTUzYTFhMjY2OGEzMzRhYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjhhYWM4ZjQ0NTdmZTZmNGFjNGMwOWRhMzJhYWY4NjAwYWIwMDI0OGVkMzY3ZjYyNjBiMDg3ZGE1ZjZkZGU4YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGM3ODJlOWExYmZmODE4ZDA5NTY2MTI3OGZmNjBlYTFjMjUxOTU0YjQ4OWUxMmFkODkwOWI0Nzg0OTA3OGMwMCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst#L73-L76", + "version": "repo-lines-v1:sha256:7c046aeebe103c5e9076ec79ca4c8b53ef0260555b125d80a9594c39a9b6b65a:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDhlMjI5M2E5NDI0Mzc5YTdlZmU0NzJlZTMzYmY4NmI5ZDQ1M2ZlNTg1MmRlMjc1ZjhmNWQ2ZGQyMWQyY2UxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQwYjM2MmQ4MWNkMDhjMTYzZjM1Mzc0NTQ4NjI3Y2FjNGVmYWRkODA3M2QyZDA4YTc3ZGRhNjc3OTNiNWFhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjEzMGUyNzg5YzAzZWY0MmY1MzUwNDcxYjg1OWIzNGJjYjkwMGMxYzc4ZjMzNWZhMGQwOTZjNzk1NzhmOTk4OCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms.rst#L56-L59", + "version": "repo-lines-v1:sha256:169fa530aee25ddee9075084e25c959b3d7dd5586baae8948a067519970045ff:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDhlMjI5M2E5NDI0Mzc5YTdlZmU0NzJlZTMzYmY4NmI5ZDQ1M2ZlNTg1MmRlMjc1ZjhmNWQ2ZGQyMWQyY2UxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZThmNDY1NzNlZDYyOGQ5NmQyYmM5ZjViMjgzYmEwZGJkMzYyNGM5MmM5MTA3Y2RjN2E4MWJmMjA1Nzg2M2VlNyJ9" + } + ] + }, + { + "id": "claim_8c1cdc46edb94fe680ea50512805952f", + "statement": "The documented local configuration test workflow drains queues with external output disabled, compares endpoint outputs using expected pipe-name .json and .test.json files and sesam -vv test, and supports stage, endpoint, blacklist and endpoint-bound parameters; its filtering paragraph and sample JSON are imperfect and should not substitute for checking client behavior.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L108-L150", + "version": "repo-lines-v1:sha256:298495604e83f9e9eb7ab0b68d94d29a3094071cdca0b82875d8b4f3aae16782:eyJzZWxlY3RlZExpbmVDb3VudCI6NDMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlYmUyOGI4NzIxYjVhZTMzMzM4MjZkYzBlZTQ3ZGU0OWQwY2VmZjdkYWQ1NjVmYzkzMTVjNDdjMTYyYTNjNTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVkOTBiMWUxZjMwZTk3ZjQ1YWRiMmY4ZmE3YmUwN2VmZmQxYjBkOGZhYzNlZTEzNDQyODNkMGI4ZGUzMDJhNTkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4YjkzNDE2ZGQzNWQ0Zjg0MGQxMjk4YzZhYTYyNzZiMDNmNjcxMWY0OThhN2UyYTViY2MyMDdlYmE1ZTNkZTAifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L57-L105", + "version": "repo-lines-v1:sha256:c04ea633bf2e86521210cba5c23b83a6b85d42958e4186e751f9c15f9e67ceb0:eyJzZWxlY3RlZExpbmVDb3VudCI6NDksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2ZTVmMDlmNGE0YTJkMTIyYjI5N2U3ZjQ1MzViMDg0OTY2ZTQzNDZlY2QxNjU5ZTM1OTFmNzFhNjAxZTJhZWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2YjA0NDkxNDY5NzIyZTgzNjNhOTRlNDA0NDUzOGUwMTNhMmEyMTdlMzZiMWU1NjhiYTYwYWNiN2I0YzhmMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY0MGY2YWU0OTAxY2Y1NWJmMTM2YjE1MzZkN2JmNjk3YjMyNzU4OGM3OWJmNTNhYmQzZGJhZWJkYTkxNzFhYTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU5ZjdlOTJiYmE1M2I4Yzc2MTBlZGRhMjUyYTZlMmQ3NTI0YWM1ZWFhYmM5NmJhMzcxNGNjMTJiZmQ5NmJlYWUifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L21", + "version": "repo-lines-v1:sha256:d728920650b733582762cd2916dd09f6f0f0af185fdda8c3774bd133cdd1ef38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/integrations/extensions-and-json-protocols.json b/openwiki/.claims/integrations/extensions-and-json-protocols.json new file mode 100644 index 00000000000..7c0b82c7254 --- /dev/null +++ b/openwiki/.claims/integrations/extensions-and-json-protocols.json @@ -0,0 +1,1110 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:2e17dee8677819039d9c06ca98e2de33d7fa6128b5af2affabbe11d8ece7a3dd", + "claims": [ + { + "id": "claim_864f3bbdb0f44a09975c48c086f73a12", + "statement": "Custom source, transform, and sink logic lives in HTTP services referenced by pipe components; URL systems connect to existing services while microservice systems also provision the adapter, without changing the role's protocol.", + "evidence": [ + { + "resource": "repo://hub/custom-data-transform.rst#L11-L17", + "version": "repo-lines-v1:sha256:69a0dac1e7c8fd20e90459a505c4a17f4b60b550c15951d612fdae64807367a2:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWQ3YWMyMjY0MTZkNjExZDUzOTBjMGUwZGI0M2Y1OTkyZTkyM2EwYzk1NTZiNzQ5MDI0YjkxNjlmYmQ3MDZkMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjIyNTkwMWE5NTQ0NTEyZDRkZDU4Zjk2YTg3ZjZiYmE5YWRmYWNmODFkN2IzMGVlNmQ3YmU5YjJlMDUyNWViMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTk2OWRkYzhjNjc0YTE3MWMxOGVmMDU4MzA1ZmVjM2NmMThmMjkyOWY5Y2M4MTY2Y2YzYmIwYzRkNDBhNTMwYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2FjODk4ZDVlYWM3YTUwYjk1MGZkYzJkYzFlZWU5ZmVlZDhjM2VhMjBmMDAxMjBiYmNlZDQyYWFmODk3NGUwMyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L6-L14", + "version": "repo-lines-v1:sha256:13bd8b12ef2fd66e858e1ec1faca02cce088f2c5ecdc01b8951dae39aec606ed:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjkzZTc0MjJjMTgxYjUzNjdiOTIyNWIwZTkwMjk4NjVkNjEwZDhiYzEzYTRiNjQxZTIyNDA0NjU1OThmNjg0ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGY0MGIwNjI0OWI0MmEyYmMyNTFmNzM5ZmNlZTQ2MzY2ZWYwNWVhY2Y1N2Q4MjNkNWNmNDBiMjE2YzA0MGU4ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmU4ZTFhNWRjNzU5ZmUxNTAwZmNhN2E4NDk2OTliOGNjMGJjODkyZTIzZGQ2Yjk3MGZmYzU0MGZiZmQ1YmVmMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjE1OTA1YWMwMDYyODc1Yjk4Njg2NmIxODFkNThmNDQwMzRhZjdhZTljY2E5NzFiNTcyNzc1YTQxZjA3OTFmNCJ9" + }, + { + "resource": "repo://hub/extension-points.rst#L7-L19", + "version": "repo-lines-v1:sha256:686fc2c5cde95f5fff5365d60c34f6df1d2798c76e0ac0c29a2487ab4a793a38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJhY2EzYzFjNDFmNmViNGY4ZDdlYTgyNGViNjI0ZmViYTMzYmVkNmFhNTk3ZmExZjk4ZDZhYmI1NDgwOTA0ZTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4Y2IxOGFkMjhiYmQ5MWFiOTNmMDU1ZmQ1MWJkMWI2NWJlMzNiMmEzMGRjYzRkZTMwMGUzMmI1ODE2YTc5YWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ0OTUyNzlkMzQ0MjQ0ODcxODU1NTJiZTg0YWM3ODg5NTkzNDkxNmJlMTAwMmMyMWIzZjEyNTAxY2UzYTI1ODMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNmMDJjODQ0Y2I1YWU2NWI3ZjQ4Njc4OTMyZTVkZGM1ZmZiNmVmZWZhMTA4MjVmY2I2MjU2OGJkZTA3MzVmNWIifQ" + } + ] + }, + { + "id": "claim_26468335a1634ac1bbaea3cab2c28396", + "statement": "A custom JSON source retrieves entity arrays with JSON Pull GETs, while a custom JSON push sink POSTs JSON Push batches to a URL or microservice endpoint.", + "evidence": [ + { + "resource": "repo://hub/custom-data-sink.rst#L14-L78", + "version": "repo-lines-v1:sha256:7c9ccfbc8248a65fedbdf8154702d30de0b97e5a55fa9e0945f45a5d20c166c6:eyJzZWxlY3RlZExpbmVDb3VudCI6NjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE0NWI0NmYyMTM0NjE0YjYwNTc1YWJiYmY4ZTZlNTcyZmUyYmE4NWYzNzdhNTU5ZWU2ZWQ3Zjg2YjBiNDUyYWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE4MzZkNmE0MDE2ZDA1NjBmZjI4ODNmOGI0N2IwM2QzZTRlM2QzN2ZlNjgyMjM2MDA1MjU4OWIzZDhiMDI5ZTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVlODIzN2UyMGI4NjAxMDkwZTNkYThlMGVhZGM0ZDM1MjYzYmU4ZjAyMDI5ZDQ1N2YwZTQyNzEwNGIxMWFkMWEifQ" + }, + { + "resource": "repo://hub/custom-data-source.rst#L63-L108", + "version": "repo-lines-v1:sha256:fd8c929aa0a7dff34b7df6fe0b4bffb6d5063a0cde3936a5af1ad6cbfd627fc2:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFiZGYxYjUyMTFjZGFmN2NlZGMwYTMyMTNmNDQzZmQ2Zjk1MjJhOTZmMDY1ZWNmMDcwNDg4ZDBmNWU2NTQ4NWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU3ZmFkYTE0MGU2NWUwNjg0ZGM1NTRmZDM3MGQyNDJhZDZkODdkN2Q4MWNkMTFhNGU1MTk0MGE3MTJkYzc4OTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjlhODJlYmU5ZWQ0MDdjM2E2YmE0YjAwMzQyOTJiYWE1MmMxMWNlNWFlMjg2MTA3NDAyZGU0NzkyZWVlY2FjZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFmZjFkNzcwZDQwYmUzZTA0ZDI3MmQ3ZTc5NTc4YzA2OTJlY2NkMjVkOGM5ZDY0YWY4N2M0MGMxMjJkNjJjMmMifQ" + }, + { + "resource": "repo://hub/json-pull.rst#L8-L15", + "version": "repo-lines-v1:sha256:ab65408abf2b4530ca1a73deb3c7678497b2af1103afae69107e1fd3ec8b4b1a:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTRhZTJhMTRiYzQ3Y2VmYjU2MTgxMmU3ZjNkYTNlODE1YTU4MzdkMzY2ZTk3ODdhMmM4MWVkMzUzZjRkZWJhNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGYxMDc4MGM5MzAyNmU0NTg4MDA5ZDg1YWUzZDY2Y2YxMTFkZWVkNTNiNDg4ODRiNjI5ZGU1OGQ0MTZkMGE4MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWQzODVjOTE3Nzg4ZDk0NjkzNzAzZDE4Zjc4MjBiZWFkNWZiZTdhNDgwODNjNDFhNDc1MjNmMDA5ODVmYWRhYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODZmYzcwNmE3OTU1ZDlhNTQ1NDYxZTMzZjRmZmFmNzZmN2IxMjU5YmVkNDUzNDE5MDExZTY0MzIxOTMyMGY3OSJ9" + }, + { + "resource": "repo://hub/json-push.rst#L8-L16", + "version": "repo-lines-v1:sha256:00b08cf395905c1ae93b8a07c73a2661927ca58c418c22218eb36f90725330f5:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjNlNDk5NzExMTkyZmE4NzgyOGNiODM5OGQ4ZTg0MmI0NjlmYWI0YzkzMDU3MjUzYjhiYWU4MmM0ZjllZGE4MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODc5NjA0MzY3N2IwYmJkMTdkNGZmMjQyMGM3M2IwYWM1YTFkZTkwNzg3MWE0NjI5MGFiYzc1MGE2ZmNmNTNkYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWQzODVjOTE3Nzg4ZDk0NjkzNzAzZDE4Zjc4MjBiZWFkNWZiZTdhNDgwODNjNDFhNDc1MjNmMDA5ODVmYWRhYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODZmYzcwNmE3OTU1ZDlhNTQ1NDYxZTMzZjRmZmFmNzZmN2IxMjU5YmVkNDUzNDE5MDExZTY0MzIxOTMyMGY3OSJ9" + } + ] + }, + { + "id": "claim_6aadf92853bf427f8499f6178bb0397c", + "statement": "The HTTP endpoint source registers /api/receivers/{pipe_id}/entities and writes incoming entities to its pipe's sink; no pump is configured and POSTs are the only way entities flow through that source.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L6-L24", + "version": "repo-lines-v1:sha256:3242606c9f1afae4a8806354f245c8aa1c4ab9abb20dba881a5122c2544f1341:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1ZmYwNTZhOTkwNDM0ZDcxNjc4YTE3NjQ2YWZmYTM1ZjNmNTBhMGI1MDNkM2Q4NzViYWJiMzBiYzcyMWJhMDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNhZjg1NWI3MWMwNTM5Nzc0NDRhMzQ4ZjExNzI0YzE1YmVmNTA3Nzk5MWY4MTEyNDU4MWVkNTRkYmYwMzMzZjAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUyNTQ5MGVhMWVhZDA0YmVjZGRiYjUyNmY2Mzc1MjM4YzJiNDhjYzUwNzY0ODlhYjBkYTA5YzZiODA4N2E1YTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBhYjZhZTNlMWMwZDZlMDk0ZGQyNWY5MTVjNTI4ZmI5MDlkZjM5MDliNGUyYmMzMDUwYjMyZjM3ZjAwNTkzYWIifQ" + } + ] + }, + { + "id": "claim_8fd2f2d188cf43ba83b0dcd52baa5f43", + "statement": "The HTTP endpoint sink registers /api/publishers/{pipe_id}/entities and has no pump; entities flow through it when clients retrieve them, using the protocol compatible with a JSON source.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-http.rst#L7-L38", + "version": "repo-lines-v1:sha256:5fb57f3aaba5ff986cd95918eb6ae05fd2fb5bb63c10a3c4bf26a4987dfdbf23:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRiMzUxYjk3NmVlMjg5Mzc2YjhjNDRhYTgwMGNhYmU3OTM2OGEzZjhkZGUyMzBjNDU4ZDVmMWU0YzA4YjY1ZTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI5M2Q3ODIxMWY2ZmZkODhlYmNlZTk5NmYwMDhkYjEyMDI4YjZhZWU1ZDFhYjNjZDg2Y2JhYjYwZTE0ZDUyZmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNjOTkwZjU0MmQzNmI1NGM0Yzk3MmRhZDdiNThjOWE3NTVkZWVlNThhNmNlN2Q5ODU1ZmE0NTE5NGYyNzRlMTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRjMzVkN2Y1MGQyZGM0YTYxNmMxNzE5MzliMjA5MWM0NWI5MzQ5NWE1YmNiZGY5MTY5NDhlNDQ2YzcwOTE4NDgifQ" + }, + { + "resource": "repo://hub/json-pull.rst#L8-L15", + "version": "repo-lines-v1:sha256:ab65408abf2b4530ca1a73deb3c7678497b2af1103afae69107e1fd3ec8b4b1a:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTRhZTJhMTRiYzQ3Y2VmYjU2MTgxMmU3ZjNkYTNlODE1YTU4MzdkMzY2ZTk3ODdhMmM4MWVkMzUzZjRkZWJhNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGYxMDc4MGM5MzAyNmU0NTg4MDA5ZDg1YWUzZDY2Y2YxMTFkZWVkNTNiNDg4ODRiNjI5ZGU1OGQ0MTZkMGE4MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWQzODVjOTE3Nzg4ZDk0NjkzNzAzZDE4Zjc4MjBiZWFkNWZiZTdhNDgwODNjNDFhNDc1MjNmMDA5ODVmYWRhYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODZmYzcwNmE3OTU1ZDlhNTQ1NDYxZTMzZjRmZmFmNzZmN2IxMjU5YmVkNDUzNDE5MDExZTY0MzIxOTMyMGY3OSJ9" + } + ] + }, + { + "id": "claim_a3e76e729cbd4f8e8279d5aff8763a67", + "statement": "Publisher URL query parameters are bound to the DTL variable _B, allowing publisher transforms to use request-specific values.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-http.rst#L40-L42", + "version": "repo-lines-v1:sha256:bbff73f0393ad2e6d2d0eed7dcf67b00578a06a8dd488110defc56706ae44d07:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODY1NGVmZDU3OGY5MDM3ZDZiMTU3NDkwN2FmMjNlOGIzOTE2M2M2YzVmN2E3OGVjZDNlNDJhNWQ1ZTQzY2E5MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTk1ZGVlMWQ2OTY5YjAzZjM5ODY3NjJmZjA3MWU4NmE4ZDNiMDQ1ZTY0YTk0NDgzMTFiNGZhMTA5NGMxZDA1NiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTM0MGE2ZGU4YzA1MzkxZTMyYTAzZTY3NjQ2MDE2YTIzNDdlMTk2ZjQ2ODRiYWYyZGYyYjZiZjc2ZDZkN2YzMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjIyNTI4YjBmMzFlOTc3ZjJmZDc2Y2JiYjlmZTUxYjBiY2NlZTE0Y2FkNTE2ODViZTBmMjQ5NjIxOTIxNGJiYyJ9" + } + ] + }, + { + "id": "claim_c65c14e011364a2f9c25c084cf5fe372", + "statement": "Dataset entity reads at /api/datasets/{dataset_id}/entities support JSON Pull, including indexed subset retrieval.", + "evidence": [ + { + "resource": "repo://hub/json-pull.rst#L343-L396", + "version": "repo-lines-v1:sha256:a2d6b01030ee5f5dc4d291a7ec4a322f76183825ba1a2e6e1422f307dcbe68a7:eyJzZWxlY3RlZExpbmVDb3VudCI6NTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIzN2JlYzQ5MDk3N2U3NjYzY2JiYTkyODNjODc2NzI5YjBkNGZmZjA1NjQ5ZjBhMDgzMjUzN2NkOGNjYmZiYWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg1Nzg0Y2FlMDU3ODVkOTI2MGZmZDRhNzA5ZGQ4NTFmYTJmNTM3ZjU5NWVjOTM3MWEzYzEzYzMzNjVmZDk0OTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFkMGYwNTIxMmI5MDBlZjUxMzI1ZWQ4ODFjNmI3NWE4Y2NiM2FmN2NkYmZjZGNlMmQ5YWVhNjEyMTA0MGQ1YjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU1NzNjYWM2MTZkYjBjOGU4MDYyMDAzODcyNDU5MmEwN2MyYTA4Yzg3NzlmYTM2OGRhZTI3Mzc3ZDU2ZjhiMDQifQ" + } + ] + }, + { + "id": "claim_8b31e9ef919a4cac97aa29fe4f489b57", + "statement": "URL systems represent remote HTTP/HTTPS servers and supply session handling, connection pooling, and authentication; a custom source service may run anywhere reachable over HTTP from Sesam.", + "evidence": [ + { + "resource": "repo://hub/custom-data-source.rst#L63-L64", + "version": "repo-lines-v1:sha256:7c665ae9f310342131e415ed747a1e2009f44efee5cc81f4e6ba12949a157191:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWJkZjFiNTIxMWNkYWY3Y2VkYzBhMzIxM2Y0NDNmZDZmOTUyMmE5NmYwNjVlY2YwNzA0ODhkMGY1ZTY1NDg1YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjcxZDVjYmFjOTQwZjg0ZDliODI5NzJlN2EyYjI0YTRlMTBjZDgwYzk0ODE1YjVlYzRmNTM0YjM3ZDg1OGJhNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWE4MmViZTllZDQwN2MzYTZiYTRiMDAzNDI5MmJhYTUyYzExY2U1YWUyODYxMDc0MDJkZTQ3OTJlZWVjYWNmYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjEzZDc0OTRiOGI5OGJiOGUxOTZmMzYxZjQyNzViZmUwNWZiMTFjOTI1NzJiMWIxYmU3MzNhZTg5NGE1NjE1YiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L6-L9", + "version": "repo-lines-v1:sha256:e99ce376b340573badc32d907dd59f0d30dbefcd445fe5daf959363ae249e813:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDlhMzlmYjdhMWI4MGJhNmQ0OWYwZTViYmNjYjNlNDgxNzAwNGIwZmZhODE0NjYyNmVlY2JiNzhiOTI2MzVhMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDIxMjJlYmJhM2NhYWEwYzA1MTI4ZDhjOWQ1MGY3OWI0NTM0Y2Y1MjkzZTY4YmMyOTE3OGY2OTUwM2VmZDk3MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDk0Yzk4Mjg4M2U2YzYxOGY5ZmYyMGE0MzU3NTM5ZWViNTE4YmExYzViNjQ4ZTM0MjI2YTE4YzMwMTA1N2E4NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2RiZjhhYTMxYWI2ZWVkNWM5ZGIxMzM5NDNlMzdiOTM1Njc3YWM1MTczNTlhYmY5NzQ5MjM0NjljOTEyYmMzOSJ9" + } + ] + }, + { + "id": "claim_dec94b670a7a42638f0945bc54d6893e", + "statement": "URL system url_pattern substitutes relative URLs at %s, or appends them when %s is absent; base_url is deprecated and exactly one of base_url and url_pattern must be configured.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L216-L216", + "version": "repo-lines-v1:sha256:98c3b908373f4aa22b63ec7480086686f1d61761a861036b427e11b1445f0420:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOThjM2I5MDgzNzNmNGFhMjJiNjNlYzc0ODAwODY2ODZmMWQ2MTc2MWE4NjEwMzZiNDI3ZTExYjE0NDVmMDQyMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOThjM2I5MDgzNzNmNGFhMjJiNjNlYzc0ODAwODY2ODZmMWQ2MTc2MWE4NjEwMzZiNDI3ZTExYjE0NDVmMDQyMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTIxMTUzMWYxOTZhY2NhZjAyYzEwYjc2YWMwNjg2NTQzZmY1NzJjZTIxYzMxNTg2NWZiYzJiODg3YWRlN2NhNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGQyNGI2NTllMTQyYWUxMjIyYzgyNGZjZTVhMjFlNDdkOGY0MGQ3MjU5NjQ5NmUzNzE2YjExNmJiMTM1ZGMxMyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L74-L82", + "version": "repo-lines-v1:sha256:47846e0ab98117917dbb3368dca23fb6311f4f7fd63ff69a976ac0140c137f80:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODNiYTAyYjBjMDI3YmZmYzA3YjZhYTJjMWJjODdmYjI2N2QwZTNiMmIxNDIwZjQ2YmY1MDhhNzYyMGM0MTdjYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzdiNDlmNjBkMWQyYTVmMjEzMjVhNGZiN2ZhNWI3MDY4YWE5MTQ1MTkyZTYwMTdkM2M1ZjMzOWM4NDZlZWUyMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + } + ] + }, + { + "id": "claim_57c87b34e96940e487aaf0e4f3196c7c", + "statement": "REST systems extend URL systems with named HTTP operations and mapping configuration; REST components are recommended for non-Sesam APIs, and REST sources support body or link-header pagination and continuation in query parameters or headers.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-json.rst#L14-L15", + "version": "repo-lines-v1:sha256:57b99e0653a236515636870fb25759653d9448c0bb5a30cd1db83c1fb066b850:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTEzMTAxZTZkYzg0YWE3N2VmODM0MmVhMmQ1Zjk3MGM5YWM1NTg2NWNkNzY0Mzc4NGMyZDM4M2FmZmY0YmQzMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDIxMTJkZjJlYjU4YTI4ZjE4MTc1NGMwOGZjNmZmYjNiOTMwMGEzMGQxYTk5MWRiNTc0NzUyNmIwYTEwODQ2MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTBkNTVmZjAyMjdhM2I0M2ZiOWZjZjMxNmFkM2MyYjE2ZGRkNDg1NmMyY2FlOTkwZjJkMmI1ODNmODg0N2U2ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjYyZjU2MzNlN2ZhMmY3ZmVkNzM5YTQ2NmQwMzI1NGRhNzExNjA2ZmY0MGEyMWJjYjJkMzEwZjBkZjNlMTY2ZiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-json.rst#L7-L12", + "version": "repo-lines-v1:sha256:913501ed898483938895666ade2c7881e80157c7b4717b79591074747d87f16e:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmZhYTg4ZjNkZDE1ZjhhNzQyZmMwY2E2MGYwN2U5NDRmMmU0MmIzMTViNmVmYzBmZDMwMTQ5OTE3ODA2YzA0ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTM3NGI4ZDNiYzk4YWZmYjczYjE4MTEyZjU5N2Q4NGU2M2M3ZmY4OGIzYWFkZTAwNjhmODE3NTUzMjAyNGNjNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNWI5MTMwZWVmNmRiZDk0ZWM3NGI0YzU2MTVmODg5NmI5YTMyODQ1NGYxNzEyNzQyZDEwNDY5NzdkNDgxNTdlNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWUxZjc0N2E0ZWM2OTUxMDc5MTNlZjU3YmZiZTM2NzkxM2I5MGI4MjliMDBhNDYxZDhjN2E3ZWQwMmM3M2UyNyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst#L6-L9", + "version": "repo-lines-v1:sha256:862f64ba0dcf1658079f4ffa12dcde3ff854d77c6af303a29436d66ab994a686:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTYyMDEyMTY2YThjYzc1OGFjMTM5YzA2NTRiM2YwM2Q4MTljNjA2Y2RmODM5ZjhmOTkxZWQyZGViMjQxMTkzMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDBiZDdkMWZmZTc4MTA3Y2JkMmJhNWI1NzA5NDdiZmY4YzBmOGJiZTBkNjA0YTg1Nzc3ODhhNzIwZTljZWY0NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTk4ODRjNmU3YmMxNjQ3NGEwYzM2MmQyZDAyNzZjMjc0Y2Y5ZjlmOWE0OGI3OWZlOWYwZmU4Mjc5NTIwYmQ5NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGE2Y2U2MzE5MGIzNTE5OTU3OWEyNzRkZWU2OTdkNDcwMGYyZDcyZWFmNjEzNGNiNTg5MDE3MDUwMWE0MWUyMyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-http.rst#L21-L21", + "version": "repo-lines-v1:sha256:fa1bc4b2af4f1788adae0ee972d2191c1d5fb330025d9ac362fd0aa9772f51d9:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmExYmM0YjJhZjRmMTc4OGFkYWUwZWU5NzJkMjE5MWMxZDVmYjMzMDAyNWQ5YWMzNjJmZDBhYTk3NzJmNTFkOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmExYmM0YjJhZjRmMTc4OGFkYWUwZWU5NzJkMjE5MWMxZDVmYjMzMDAyNWQ5YWMzNjJmZDBhYTk3NzJmNTFkOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzgwZWFlMjgyOGFmYzU1MDcyMTViNjY1MDYzMzhiMjc2MDc2M2ZmOGE4MTQ4M2YwN2UyZDU3NzhiNmZkYWE0YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L44-L83", + "version": "repo-lines-v1:sha256:3a8b71f54ef6c0acfb55c4efdf666c5f796e87f73c1dea888be212551d094105:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJkZjFjYjhlY2RkNjEyNzdiOWJhNTU4ODEwMjEwYTUyOTU1NjY3MWRmMDE1ZWRkZTAyYTI1Y2UxZGU1OTIyYmEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2YjA0NDkxNDY5NzIyZTgzNjNhOTRlNDA0NDUzOGUwMTNhMmEyMTdlMzZiMWU1NjhiYTYwYWNiN2I0YzhmMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhhYjg4ZTQ4ZWY1YWUxZDY0MDE0NjM0NmRhYzM0YzA2MWIwOGI3ZGZlNTgwM2Q0ZWY0YjMyYTkzN2IyYzQ0ODAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM3MjVjNjVhZTJmMmYzODc3ZWJmMjczYmU3NWZiMTMyNWYwMDYyMWJmMjE5OGFiNDViYjVkMzUxNDhhMDFjMzYifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L6-L16", + "version": "repo-lines-v1:sha256:3b15c042c198bb110faf27b8c5570c99aea7ab59e86d74c71c6873042505ed26:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkNGZmN2JmMWQ2NGQ1MDI0ZjU4NzA2MzE2MTEzOWIxNmE2ZjY5ZTdhNmQ5OWMwYjkwYzg1NTQ5MDUzNzBlY2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIyNWU3YzFkOTdmZWFkMjYxZWI4NjI3NTk4MzgwYmU0NGU4NTUzNzA0OGRmZmE5YzEzMjQ5YmZjMDRjZmQ5MWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzODVlY2E0MjYxNDlkN2FhZTIyN2YwZDY2NjA5OTA4YzVkNmQ5ODhiOThlY2FlYjg2MTk3ZjZiOGMyM2I2NjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI3ZTNjYzhmYjIxNWQzNDU5ODA0ZWQ0MTM5ZjhlMjIxZjRjZWFjN2I4NDNmODk1OGI5ZmI4YjQwZDc1ZTRjYTMifQ" + } + ] + }, + { + "id": "claim_2eb93fa1ffa04a1b926b6f90d400592c", + "statement": "REST operations may be defined on the system or source, sink, or transform, with component definitions taking precedence; secret-bearing operation definitions must be on the system.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst#L71-L79", + "version": "repo-lines-v1:sha256:4166af129fb688d46b7e0af237d0913a9353eb53dc411446a5c4afa3b6984489:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzMyMWZmMGQwMThlZjBjNmRhN2YxMzUxMmVhOTdiODE2MTE5NzEzZjhmMzBlY2Y4Yzc2MTJmODZmNDJkNzAzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2RkZDRkZGZkNTkyYzYxNTAxOTJmYzU2MzM1MDA2MDM3YTM5NzhmOWQxZjM0MDJhZTUyZWYxOWY2ODk4N2NhYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L114-L119", + "version": "repo-lines-v1:sha256:9a07a6e06006a9d1e9cd524d7e48e3c41447735569c601f68cf32d7991a61a46:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzMyMWZmMGQwMThlZjBjNmRhN2YxMzUxMmVhOTdiODE2MTE5NzEzZjhmMzBlY2Y4Yzc2MTJmODZmNDJkNzAzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjAzMDBhM2I3ZDg0MWI5OTRhYmU3ZTU4Y2E4YTY3YmUwZWU3YzRjNDk3NThmNTczMTQ4MWI2NmJhN2FlNjllMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + } + ] + }, + { + "id": "claim_7e203e0bbf424241bd1cd246875510b1", + "statement": "JSON Pull and JSON Push specify array bodies even for one entity; the Sesam HTTP receiver additionally accepts a single JSON object and requires Content-Type application/json.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L32-L41", + "version": "repo-lines-v1:sha256:9b91256732df377edc2e8b234f7d02da3d10adc7179f28c833810b573e7b51a8:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4NTE5YTA1YWZiZTIzZTdiNWYzYzEwYmZhZDczYjBlYjhhMDg4MzgyNTJiMmQyMGNiYmU2NmM3YzJhNzViNjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJhOGE1YmNlZTcxMDMxZDJlYTYxNjY2MWJmOTkzZDgzNTkyNmI4YjhmMGJlY2I0ZTQwZGExMGIxNzRlZGNkZjUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRiMTMzNGFlZGI0NTY1M2UwMzYwY2Q3ZjBiMjhlMTdkN2VjNTMxZWRiYTlhMDk1NjJiOTRlMmVkZDRjNmRiNjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVjNDgwMWVlYzY2NTYxNDVkNzIyYWJiYTZjNDk5NGY2MWRhNGMyY2M0YTMzZjExYmRlY2I1MjliMWM3ZGE3ZTQifQ" + }, + { + "resource": "repo://hub/json-pull.rst#L59-L62", + "version": "repo-lines-v1:sha256:26a1a66abcd54864ec92ca9418adb01e507ab3c043453907ddc0c8cb09af0f3a:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmI1ZTc4MjY2ODA1MWM3NTZmOGJhYTA0Y2NkZDNmZGQzOGEzODA0YTlmYTE4NDZkNmJhOTkwOTgwZTU1YWYwMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTYzNThkYTE3YjhlOTA5ZTM3NDllYThmYjFlNTQ0ZjFkOTIwZDJjNmY3ZTAxMTNhNGI3MDMyYjUzNGIwN2JhMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWI0OGI1NGNhZGQ4MTRmZTkzMTdmYjRjYWM1YmE3NjI1NGE4NzRiNTA3ZTRjNDZjMzBmZGQ1ZjMwZDNiNWUzMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjg1Y2E4OTViNzZlYTJiNmI1NTMxMDA0YzcyM2EwNDc0MGFkMjFiNWI2ZWY2MWY3YzhiMmQ0YjcyOTdlZGQxOSJ9" + }, + { + "resource": "repo://hub/json-push.rst#L56-L59", + "version": "repo-lines-v1:sha256:26a1a66abcd54864ec92ca9418adb01e507ab3c043453907ddc0c8cb09af0f3a:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmI1ZTc4MjY2ODA1MWM3NTZmOGJhYTA0Y2NkZDNmZGQzOGEzODA0YTlmYTE4NDZkNmJhOTkwOTgwZTU1YWYwMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTYzNThkYTE3YjhlOTA5ZTM3NDllYThmYjFlNTQ0ZjFkOTIwZDJjNmY3ZTAxMTNhNGI3MDMyYjUzNGIwN2JhMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2FjYWQxODRlNmQzMDZiNmE5Y2NjYjgwMzk3ZTM1YjAxM2M4ZDdkNGEzZjVhNWE1YzMyMGU2ZmQ0YTE3ZmI0YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzdiMTMzN2NlMDNiYTYxOWRmMjY5MDQ2MGM0NDRlOGQ3MmNhODA4MTMxNmMxZTk5ZDlkNGUwZmMzMTY3ZmE5OCJ9" + } + ] + }, + { + "id": "claim_212ef890b58c42e8a463209c5568085a", + "statement": "Entities are string-keyed dictionaries with literal, list, or dictionary values, and require a string _id unique to a logical entity within a flow, while multiple versions may share that identity.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L61-L64", + "version": "repo-lines-v1:sha256:9391fcabe00f85ec80ced902e72cdf4fca38f1b03a20e3d9c7da0942c51e47e4:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTExNzk5MmYyZDhkYzU5Yzk1YjBhZWEwNTQ5NzBhN2U3Y2ExZWZmY2NmZGE4ODczOWFkNzBiMzIzNDdiMWYwOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDEyZTY1ODQ0ZDZkNDEwZjc5OGUyOGFiMWJhMjNlNWY4N2FlNjEwNWQwYTJjYmMwNDNmOGRkNjg3OGEyMDIyNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDY1ODY3MTg5ZGQyMDRmYjU3MjM1M2M3NzNmNWJlMjQ2YmYyNjlhNDEzYjY0ZDlhMDI0N2YyNDE4YjVhNzMyNyJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L7-L7", + "version": "repo-lines-v1:sha256:2d763bc20df5f8b2dd34c995a180ee6785dd8e85f083ed9ad9b45d385c0e057a:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmQ3NjNiYzIwZGY1ZjhiMmRkMzRjOTk1YTE4MGVlNjc4NWRkOGU4NWYwODNlZDlhZDliNDVkMzg1YzBlMDU3YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmQ3NjNiYzIwZGY1ZjhiMmRkMzRjOTk1YTE4MGVlNjc4NWRkOGU4NWYwODNlZDlhZDliNDVkMzg1YzBlMDU3YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTAyNjE3Y2U5YTUxYzNiMmE3YWRkZWZmMmZlNmY0NThjNGU2ZGNkZGE3NGVhZTNkNzMzNGQ3MDJlNGY0ODJiNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDdiMzk3NzA5MmM0MDA3NmQxODAzYjUyZTM5MDQ3MmQzYzVlYTgwOWVhNDNiYmFmZGEwMjVmYThkN2JmYmI0YiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L6-L12", + "version": "repo-lines-v1:sha256:757bdd56d4a14110d293f7d0fad47fcb06ecd8ae5f22c83656806e730bae5afa:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDQwOWE0MGY0NDk2ZDdkNmFlYjllNjkyYTFhNmVhMzIwMzAyMTYxMjg1MjdmYzM1OThhZjMxNGVjMjAyZmYxNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDg2NmVhY2RlOTE4MzAzODY1MDFhOWM1YTViZjYwMDg4ZmM5MTBhZTYyZjAyYWVjODViODhiOWE3YmFjNzBkNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGI5MmYxOTU1YjZjMmFkNDUzNmY1ZTRhNTU0MDk0M2M1OGI1YWM4Njg4MGQ0YTNmY2I0ZDE3N2NhMTc3OTBhNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTE5NTBlZGE4Y2MwZWYyMGU0MWJlMGM4ZDAzYTg2YmYzODc5NzJmYWQxMzllMzhlZjhiNzBlODQzMGFlMTcyYyJ9" + } + ] + }, + { + "id": "claim_e6e8180d38824cd0a0d0b5ce6da2c971", + "statement": "A source entity may omit _deleted, defaulting to not deleted; Boolean true marks it deleted, and the entity model interprets other values as not deleted.", + "evidence": [ + { + "resource": "repo://hub/custom-data-source.rst#L18-L22", + "version": "repo-lines-v1:sha256:883588cf38265811acbb393ac5fdb6779b52f6a3255d48c48d21e061f654124a:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWE0NTQxNDI5MGFiYjgyMGRhMmJlY2U4N2QxODIxMzEwNjE1OWVhOTcwODA4OGY0NjJlN2NkNjFiODQ0ZTdkZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDc0NGVhOTI2YmY4NGIxOTY3MTc0MDcyYzEzYTdmNTJhYzZkYTc5NDM4ZDBkYTA3ZTE3N2I4NDcyOThlODhlNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmIzMDYzZDcyZDQzMzU2Yzc4OTc2NjQwMjI5ODE5NThhNzE0MGJlZmVjNWI0NGJjNTAwOGNlNmYzZjdmN2VjYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2MwMjEwMjExNmRhMDFkNWFhOTZmYmNjNmZhNDRkMzNmY2VmNmJjODk2YmE4NWMwMzJkNWE5ZTZkZWRhYjQzNCJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L66-L69", + "version": "repo-lines-v1:sha256:a574df90b87759a646d3776fab95d9f0c53e2c4b71acb987d9c0f0aacbff3ffc:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDdmZmE2MzUxNzAzYjlmMWVhYzJmOTM2NGY4OTEwZTdkZDI3NDVkNGNjMjdkMDA4ZjA4YThiNjk2MzA2NmNhOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmRkYWVkNWYyOWI4MzM3MjA3ZjMxNDViZDEyMmI2ZGNiZjQwZDM0OGE4MDQ2NmI4OGM3YjMwNzMwYzE0ZTAxMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzY3MTUxN2RmMzI5YTlkNTA0NjE5ODRhM2Q1MzcwMGZkNzBhZDdmZWJiMGViNzgwNmE5ZDllYWY1NTAzOTdhMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTdhZDc1OWZmNmQzYjA4N2RmZTcyOWZjNmNjZmU2OWQ3Y2VhYmJmZDZmYWQ0NmY0N2YxN2IyZGY4YjM0OGUyNSJ9" + } + ] + }, + { + "id": "claim_e2a413d66d834c5a92b3cbbef9b984c0", + "statement": "An entity's _updated marker must be a string or integer, is opaque to parties other than the producing source, and can be passed back as the since query parameter for continuation.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L72-L79", + "version": "repo-lines-v1:sha256:ef9d11140cd9b18c16ebd5ffe115f213641977af53a37431b7c1eb326143301e:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDhkYmQwMTk5MmQ2ZDhmNjRjNjRlYjEyMzg2NzkyYjJhMmYwMjlhYTBmYjNkNWU1OGE1ZTdlNDc3MTQ1YTZiMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDRkNWRkODMyNDM0MTEyNTA1YTlhZTRkMTAyY2I2NWFmNDMyMWIxMmI5YTVjZmQ2N2Y1MWRlNjIyYmM4MDA0NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGIxYzBjYTdmYjRkYWFhYmNjZTlhZWQ0NTY1N2MxMTQ5YjUyZTk5MDJlOWU2OWEzNjc0ZDZmMTE5MTYxYzZkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjUxN2E4Y2QxNGIzOTM3YjEwODgyMDkzMGI2OTllNTg1ZGRjNjY5MmE4MzYyMWJjNWM0ZDAwMGE5MDYzNjczZiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L60-L65", + "version": "repo-lines-v1:sha256:a2de7b6c3c045ecd1e9a7138ef6df9488ded34f74457580034ae2b98a312b20c:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjJhNDBkYjIxZWU2OWRmNWU2MjY0ZTVkZTEyMWZlZWMyZTFiODQwZTI1OWZjZjI3Y2M2ZWQ0ZmI4NGFjYTA4ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjBjNWY4YTQyOGEzZGM4NjRkNDdmZWVjMmM3YmQzMjg4NTBjMzg4YzQ0NTQ0YWY3Mjc4MjlhMWQ0MGYxYTQwMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzkyNGQzZTllYTIxMTI0ZjhmYzdiNDRkNDM3ODBkMTYxODNjNjI3NGZjNzJjYjU3MDVmMmFlOTM5YmMxN2U1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTBkZDdlN2YyMWQwYTExN2UyNjBjZDg5NjA1NzMzYWJkZjg1YTJiNThhY2ZiMTdhNmViNDRhZDhmM2EzMjZlNSJ9" + } + ] + }, + { + "id": "claim_7146ed708b384a77af7a7b5fc051bcfa", + "statement": "Root-level underscore-prefixed fields are reserved and, except for _id and _deleted, are ignored as stored input when writing to a dataset; nested child dictionaries are exempt, and source _updated is still usable for continuation.", + "evidence": [ + { + "resource": "repo://hub/custom-data-source.rst#L18-L22", + "version": "repo-lines-v1:sha256:883588cf38265811acbb393ac5fdb6779b52f6a3255d48c48d21e061f654124a:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWE0NTQxNDI5MGFiYjgyMGRhMmJlY2U4N2QxODIxMzEwNjE1OWVhOTcwODA4OGY0NjJlN2NkNjFiODQ0ZTdkZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDc0NGVhOTI2YmY4NGIxOTY3MTc0MDcyYzEzYTdmNTJhYzZkYTc5NDM4ZDBkYTA3ZTE3N2I4NDcyOThlODhlNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmIzMDYzZDcyZDQzMzU2Yzc4OTc2NjQwMjI5ODE5NThhNzE0MGJlZmVjNWI0NGJjNTAwOGNlNmYzZjdmN2VjYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2MwMjEwMjExNmRhMDFkNWFhOTZmYmNjNmZhNDRkMzNmY2VmNmJjODk2YmE4NWMwMzJkNWE5ZTZkZWRhYjQzNCJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L44-L49", + "version": "repo-lines-v1:sha256:e237ceeb7a0e7bc6a6be80b995f72704b772bdcd7468683a681b773ae4579c40:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTg2ODVhMGJlMWZlNWZhZTQyMDRlZGEzZTZhNWVkMjMwN2ExNTRhZTNiMmZlNWMxYWRjNzFiMjgwYTRmYzJmYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzFhOGE4YWE2M2NhZWUyMTg2MzVjYzFkMWYzMWQxMGRmYWU0ZjRjYTBmNjVkZTJhMWZkMzRlNDg3MzEyMTA0ZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjgxY2E3Mzk4ODk4MDJjMThmZDM3MjVjM2NlZWJkZDU3OTY3MGIxYmM5YTFjYzJkZDI5MTBhZjY2N2MyODRhNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjQ0NTBmZmE4ZmRlMzQyMDcwYmViYzNmNmNhYzk3YWFjNzY4ZjU1YjQ1ODM0M2MyZDJjMWRjYTQxMjU2ZTFkMSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L60-L65", + "version": "repo-lines-v1:sha256:a2de7b6c3c045ecd1e9a7138ef6df9488ded34f74457580034ae2b98a312b20c:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjJhNDBkYjIxZWU2OWRmNWU2MjY0ZTVkZTEyMWZlZWMyZTFiODQwZTI1OWZjZjI3Y2M2ZWQ0ZmI4NGFjYTA4ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjBjNWY4YTQyOGEzZGM4NjRkNDdmZWVjMmM3YmQzMjg4NTBjMzg4YzQ0NTQ0YWY3Mjc4MjlhMWQ0MGYxYTQwMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzkyNGQzZTllYTIxMTI0ZjhmYzdiNDRkNDM3ODBkMTYxODNjNjI3NGZjNzJjYjU3MDVmMmFlOTM5YmMxN2U1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTBkZDdlN2YyMWQwYTExN2UyNjBjZDg5NjA1NzMzYWJkZjg1YTJiNThhY2ZiMTdhNmViNDRhZDhmM2EzMjZlNSJ9" + } + ] + }, + { + "id": "claim_d5024c9c8edc4ef28909269cc33dc88b", + "statement": "Exported dataset entities contain generated metadata such as _updated, _hash, _previous, and _ts; JSON push sinks include reserved fields, so target adapters may need to remove metadata while interpreting _deleted as a deletion.", + "evidence": [ + { + "resource": "repo://hub/custom-data-sink.rst#L87-L89", + "version": "repo-lines-v1:sha256:ccbf5082877c835b23177c28e33cbc6451fbe86750621c5f1131038a20100a5b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjY4ZDZhZTNiZDZkZWYxODEzOGJlM2EzOGM2NzJlZjhkOWNiNDMyNGM5NWI0ZWJkZjU4YjQ0MTM4ODJkMDRhNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWQ4YmU0ZWExMTg1MjZlODZhMjJiZjMyOTEwNzY0NDZmNWIxZTIwNWI4NDk1ZWJkNmY0NjkzMTRjMzk4Njk3YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmQ5NWYxYmM5MjY4MTNmZWQ2MDc3NTRjYzViYzJkZmU1MDllMDkzMmMxZmFkMjM5MjI0MTFiZjJlMjhiMjBhMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWZkN2IxMDMwOWE1OGZlZTczZmZiY2ZkNGQwMGE1NDBhNGQ0Y2UwNjNhZjIzNTIwYTRlNTY4MjhjZGM4ZThlMCJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L72-L110", + "version": "repo-lines-v1:sha256:18c32fa650af9e348cc9deeff3cf66239382020b37aa44698902ee25894fe6a3:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4ZGJkMDE5OTJkNmQ4ZjY0YzY0ZWIxMjM4Njc5MmIyYTJmMDI5YWEwZmIzZDVlNThhNWU3ZTQ3NzE0NWE2YjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJmZjk5MjRkMWQ4MTRkOTJmYTVjN2E3NTc3NDdkMWU1MDRjZTdmOTZmMTVlYzY3ZjhlMzEyNmYzNzM1MDM2MDgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiMWMwY2E3ZmI0ZGFhYWJjY2U5YWVkNDU2NTdjMTE0OWI1MmU5OTAyZTllNjlhMzY3NGQ2ZjExOTE2MWM2ZDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ3ZTQ4ZmJkNWI2MmUyNzY4NzgyYjUxNzA0OTBkYjVkYjBiMjRjMTY4NWM1YTg4MzI3ZGMxZDdmN2U2OTBiNzEifQ" + }, + { + "resource": "repo://hub/json-pull.rst#L181-L230", + "version": "repo-lines-v1:sha256:286518f5d7e84f88a6b7982286c65b161e7374537c130c4616a0bc1813b05755:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIyYmYzZjZkYzY0ZTAyMzg0OGJhYTIyNDRjYTFlZTc5YjI2OWMxYzYwNjM1ODQxNDQ2MmFkMDViMTdlNDA3NDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliNjJmNjBkODU5MGE1NzljZjQ2ZjhkNjczNzhjNGM1NzJiOTYyY2VjY2RiOTBjN2E1ZjdiNDJiOTYwNzgyYTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk1ZGI4YzZiOTc0ZTNjYzg0NTM5MzQ4ZjIxNmI3YTkzMmI4ZDI1NDJmODBlNGIyNjU3YzkwNWNhMGEyZDQwMzAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU4NDI3OTc5YzY1YjRjNDA2NmY0Y2Q1MjQ2ZDNmNmYxNDhiYjE1NGM5Y2I0OGI0MjYzMDljMmMzNDAxNjRhNDUifQ" + } + ] + }, + { + "id": "claim_484d5fac6e76449587730ce0f5f49e06", + "statement": "Sesam's JSON extension types use Transit-style strings: ~: for namespaced identifiers, ~r for URI, ~t for Date and Datetime, ~b for base64 Bytes, ~u for hexadecimal UUID, and ~f for arbitrary-precision Decimal.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L249-L298", + "version": "repo-lines-v1:sha256:427208eaa5ea5c46f134481d03b4e33a9d10ac4065d01322b38bc8cae5e6e9f5:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyMGQ5YWE5M2RjYTE2ZjVjYzYxNDk0NGFjN2E3MjJjZTUyMTM5YzM2MDNhY2I3YzMyNzY4NWRhMjU2NDNlMjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjNzBkNTBjMmYzYTc5NTgwNmJlODZjODA0MTc2ZmI5MDEyOWM0ZjQ0NDIxMWNmMDM5MjI3NTM4YTdiMjEzMTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYwNWY3OTExMjE1ZDk5ODNlZmM2OTlhNTI3ZWExMDEzZjY0OTRkMDA5YTZiYzNjZTBkOWJiY2IxNDU3NWU2MTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk1MzgzMDViZWJmZThhZTVkMjQ5OTgzZGNlNjljMTVmN2UyNzQ5OTYwNGM0ZGQ4OTY1NDYxMDRkNjcxNGRkNmIifQ" + } + ] + }, + { + "id": "claim_ecefb75216ac42d7b362dd8748ef9275", + "statement": "Unrecognized Transit tags are treated as strings, and the entity-model documentation states there is no escape support for literal strings beginning with ~.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L249-L256", + "version": "repo-lines-v1:sha256:4421b579035b9daec3681f206b96c3acb10bcd450ff9e91d32ea887a4d8e96cb:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjIwZDlhYTkzZGNhMTZmNWNjNjE0OTQ0YWM3YTcyMmNlNTIxMzljMzYwM2FjYjdjMzI3Njg1ZGEyNTY0M2UyMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDk3MTYxZDRkMmIyNjJmMDFmZDY4YjZhMWQ1NTM2YjdmY2ViYmY4YzY1MDhlZWY1Mzk1YWY2NmNjMzlmYjQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjA1Zjc5MTEyMTVkOTk4M2VmYzY5OWE1MjdlYTEwMTNmNjQ5NGQwMDlhNmJjM2NlMGQ5YmJjYjE0NTc1ZTYxMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2ExNzAwYmYwM2JmZDc4MjRkZTNlYTg4MmNhYTI2YWQyMzkxODA3ZTFhYmFiZGM5NmI0ZjRlM2QzODE3MzdmOSJ9" + } + ] + }, + { + "id": "claim_ecd47883f9004d52bdbb2318e5fa2cf5", + "statement": "Transit Datetime values require date and time in UTC with a final Z and support optional fractions with up to nanosecond precision.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L280-L286", + "version": "repo-lines-v1:sha256:dce7192fc9adbed9ff95a8c7551139ad0f1399af541afc11727d038456f48427:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjBiZTc3NzVhZTQ0NzU2NTIyMWIzODc3MjkxOTczYTBkMWU1MGFhNDZhNmM0Y2M1YWJhNjJkYmM0Nzg4YjdjNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGZkZmI2NWRjZWI5ZTdiNTBkZTJhZTg1ZDkzZmQ1YmQwMjI4ODRiZjkwYWFiNGE5ZmRiYjExNDYyMmYwMjJiYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTIzNTQ5ZDNkMzUyZDhmNGE1M2M5ZGYwYmQxMzJjMmEwMTU5MTU2NTQyMWM0YjIyZmQ1MTE5NGM1MThlOGQ5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2IwZWVkODVjNWQwODMxMmQ0NTJjYjcyMWZmMmI5ZGQ2NjgyODFjYWY1N2RlY2Q1MGMwZGQ0MjVlNjI2NWJjMSJ9" + } + ] + }, + { + "id": "claim_75c0f3df01a44f4eaf8953bc24b9ca6a", + "statement": "Decimal values have arbitrary precision while Float values use IEEE 754 binary64 and may lose precision; HTTP receivers default do_float_as_decimal and do_float_as_int to true, converting fractional numbers to Decimal and zero-fraction numbers to Integer.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L223-L234", + "version": "repo-lines-v1:sha256:9396ffa52c4d51f4e49ce4880c12d07c1522765ee1a2ad1c26a64b3a7d021eb1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1ODY2NTVkZjc4NDNiNWMxMDQxMGYwZjAwZGZmMzhhYjk0ZTQ1MTEwNDkwNDYwM2M2ZjI4YmY2OGE4ZDYwMzQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMyY2VkODc2Mzk0M2FhNWJlOWRhMGQxNjQ1ZTRjYTEzNzQ0ZjcyNzBkOWQxYTdlM2UwM2RkNzIyZjZmZWQwZWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ1ZjhmNTRhY2Y4NmE3ZDY1YzMzMjYyYzgyNWQ1ZTRhNGI3MWQ3ZWY2ZWNhOThiMjlhYzRmYTZjMDUzODMzMjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQwZDJmZTAxY2RjODg1NWYyNzVjNWJjZDg5ZGNlZTJmY2RiNjUyMjI5ZDJlOGE1ZDM3YmQzNGY3ODgyODE5OTAifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L90-L103", + "version": "repo-lines-v1:sha256:73c69bbab75bc3e30027d796439f0ed07c3295a1fb09ab025eb7a98dec33e991:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE3MTBjZTU4NjAwMWQ0MTBlZTQwZTdiMWM4MTBlMjgwMTMzNDhhNTdmMTQ5MjBiZDkzM2NkYTcxMGQzN2RlODMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYyMmYzYjhlODgwMmQzNGUwMTRlZDk2Y2E0NjQzODk3MzRiOGQyMWM4YTI3N2FhNWE2ODBmMGY0ZTUwMDE1MWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMwNGIyYjM4MzQ5MTIxNDNkMGIxNmUwNjIyNjdjNDJjMTQxZWI4ZjZhMzQ1OWViMDczM2VkYjQ2M2RmMjgxYjIifQ" + } + ] + }, + { + "id": "claim_43754e76b4c4444d826309caeab6a296", + "statement": "JSON Pull since requests entities after the _updated token supplied, omitting since requests the beginning, and ordered-stream continuation can use the last returned entity's marker; the documented since=21 example begins at offset 22.", + "evidence": [ + { + "resource": "repo://hub/json-pull.rst#L236-L280", + "version": "repo-lines-v1:sha256:7904ede179c4b8e414cc161dd17897c04966444a43fb31d14d28ce744b33eace:eyJzZWxlY3RlZExpbmVDb3VudCI6NDUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQzNmYwZjViOTU1NjgxMWNkNmQyN2I2OWRkZDI3NTlhNzliMWM3ODI3NzYzMmVhZGM4MzE5YTEyMjI4MDRjZmEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJlYmMwYzEwOGZjYjFiZjNiZGE5ZTlkNjgzNGQ4NTlhMjM3ODNkZjlmZDVlMmExODY1MjIzMjFkNmQyYTRjY2MiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI5NGNkNjAxNDY3OGYxYWZlMTlkNjRjYWMxYWEzZTkzZDk5YTlkMWJkYmI5ZjJmMGI2OTFhOGExYzdmMGUyNjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZlNDcyNzI0Y2RlM2U3YjVkYTZjMjc2YTViNDgyZmI5OWY4ZGQ4NzU4ZDkzMDQ2Y2JiMWZhNGE4YTMyNjE5N2IifQ" + }, + { + "resource": "repo://hub/json-pull.rst#L29-L41", + "version": "repo-lines-v1:sha256:9d43239c0f8b1191647f430a3b278b256b31c59c009247e41b0d3d4937c5f319:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1NjBjMTg2YjliNTc5M2JiYmE0NWE3YWEzNmUxNDkxZWQ3ZmYzOWQ1Y2VhMGQzMWQ0OWQ4N2ZlMzk4NmZkZTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM3NDM4MTQyNjg3MWI2MGY2ZjNkZWY0YzI4MDQ3NDBhNmZkMjU4ZTFlM2NlZDg2NjIzYmRjZDg5YjllMTdiZTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJlODIzNGEyNGY3ODUzMGMxNjhlNGJlZDBlNzE4NzIxMzlkYjk3NDU2YjUwZDgxZGMxYzk5OTcyNzNkN2ZhNmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNhMDU4MTU5MGNiYTNkMTY2ZWE1ZDFhZTVmNDhlYzFiMmNmNjkyZjdmNThlYTg5NzFhMzMzMjYzYzk5ZDg5NmYifQ" + } + ] + }, + { + "id": "claim_05d488eda5484539bb2a7b825470c161", + "statement": "JSON Pull limit is an integer entity-count cap for splitting streams across requests, with no protocol limit by default although endpoints may choose another default.", + "evidence": [ + { + "resource": "repo://hub/json-pull.rst#L43-L50", + "version": "repo-lines-v1:sha256:d9ee1af54c86f2cd20f3549455f8f4ce764aad79dad10f634cf6ec5b77e59036:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDI2ZDg4NzliMDI5ODMxOGE4ZDYyNGQ0ODhjMjY2N2Y4MjEwYjlkOTUwMDQ3NmEwN2RlNDc4Mjk4ZDFiNjEyMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMzYzgxOTJhM2Y4YzUyMjY3NGY0Y2U5NDRmNjI1MzUxY2RhYjk3Yzg1OGI4NGEzZjE2ZmIxNGU3YzdjYjUyYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDAzNDE2MTQ0ZmMyOWViZTVkMDYwN2MzYzE0ODI0OTlhNjhlN2M4ODEyOTNjOGFjNmQ2NDNjNzgxMDVkODA4NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGJkZjNlZDYyZDYxYWQzNjg3MTRkN2I0ZGNiNDk3OGVhYjAxMGMzNTk1NDI4MWUyNTgxOWRkMGE1NWYwZWFlNSJ9" + } + ] + }, + { + "id": "claim_5a9bbc5b05f34a98b04c7c4fd6dd1099", + "statement": "JSON Pull subset is a JSON-encoded optional expression: a supported but missing subset returns 404, whereas an endpoint without subset support may ignore it; documented indexed subsets use an eq expression and query values must be URL-encoded.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-json.rst#L74-L80", + "version": "repo-lines-v1:sha256:e91f207bb47fa8997f8fab592ee9354548d0691202e7f106be4a9a51ea9b2b56:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWQ0YTQ0NjY4NzQ1ZDBlM2E0OTFjOGFhMTY2NGZjOTU3NDQxYTdiNmU4ZjA3MzdmMGQxYWQyMTcwNzkzNmQzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTQ0ZDdiMjRmMTBiZmY5NGRlMWFjMTAzNzYzZTdiNmFjMzM3MWYyMjEzZWQ5ZGMwYjZiYzJhYzg0YTFhZDAxZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmJkZGYzZDkwZjJlMmRiY2FjZDM5YzdhMzUyMGU5NWE0ZTI5YWRhZTZlZWZkMDJjMWFjMThmZDEzYWZmMmU0ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2Y3ZGJhNGQ2ZmFiNjU4ZmI2YzBjMmJmYTQ3MDJhNzJmOTRiZjI4MTA5MWQ3NmIwNDVmZjYxMGU3ZDQwZWY2ZCJ9" + }, + { + "resource": "repo://hub/json-pull.rst#L390-L396", + "version": "repo-lines-v1:sha256:dd64672a3c2ad98cd417354ff9cca0ebd243c6a913317c9393cea1b39c3b3aba:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDhkZDc3ZmU2ZGY4MzE4OWYwY2Q2YzdlNGNlMDI4NzRiOTgzOGI2YmQ2NDA2NjM1ZWZkZTkxYmY4ZTY1NmJmMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODU3ODRjYWUwNTc4NWQ5MjYwZmZkNGE3MDlkZDg1MWZhMmY1MzdmNTk1ZWM5MzcxYTNjMTNjMzM2NWZkOTQ5NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTkxZjFjNjQ1OTkzN2IyMjJhYWE5MTQ1ZTg2ZjJkNzQ5Yzk5NWZiNmExYzFiNzVkYzc3MGM0YTUzNWRhYjM2ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTU3M2NhYzYxNmRiMGM4ZTgwNjIwMDM4NzI0NTkyYTA3YzJhMDhjODc3OWZhMzY4ZGFlMjczNzdkNTZmOGIwNCJ9" + }, + { + "resource": "repo://hub/json-pull.rst#L52-L57", + "version": "repo-lines-v1:sha256:96be02373299f741bab313918f89f01e766cdb5658ed2ece4d254c8a92d5e7c4:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWQ0YTQ0NjY4NzQ1ZDBlM2E0OTFjOGFhMTY2NGZjOTU3NDQxYTdiNmU4ZjA3MzdmMGQxYWQyMTcwNzkzNmQzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTI0ZmMxNDM5YzJhMjIyNzZhY2ZiMTU5NjAzODgwMGU0YWRhYmVlNTk2YTAyYjJhNGViMmJkZWIxYWZiYmQ0ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjBmNWZmMzdiODQxYjkzZTA4MzZkYTgxZjJhOWFkNDkxZTBmZDJiYjJhNWUwZTViYjRjNWM3MjQ3YWMwOWEzMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTViNDE1NzhiNWFhOWVkNTQ0NjMxOWNjODhkYzhjYmNkNDA1ODU3MmIyY2FiY2Y2MTZjNTg1MTU3NjZlYzc2ZCJ9" + } + ] + }, + { + "id": "claim_766fab51d3364c4480aa6e90dbff6c21", + "statement": "The JSON source defaults supports_since to false, is_since_comparable to true, and is_chronological to false; enabling supports_since adds the since parameter to requests.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-json.rst#L104-L123", + "version": "repo-lines-v1:sha256:aab4f52759ca8bde4941a8a498b746a6f6a4fd16c8bb1f0d75d528fa13d5d0f2:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBkNzVkZDRmYzkyZTRhOWI2MTE0Nzg3OTg2NmI0MGRkYmI0Y2FiNzc2OTM3NDc0YzViZjE4MjBhMTVkZWJiZmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFiZGIwOTAwMjJiNmUyMzYzZDA4Y2JhYjYyMzQ4MzljNTJmY2RjNTFkNjNkZDYyYTUyZmM1ZWQ4M2NkYjVmNTkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZiMGNhZjczZmFmMDUyYjFlNWYxYjFlM2Q1ZDI4M2IyYjBlNDBhNGI1MGVkNGE0MWM0ZGEwYTQxMjNlMDAzYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRiNjcxNmZkODg4ZGM3MTkwODFkNThjNjdkZTI2ODBlYjRiOGUzMmU0MWZmM2ZkMGZiODI4NmRmZWY5MDcxZDAifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-json.rst#L14-L15", + "version": "repo-lines-v1:sha256:a5933c4a35ada5c89cb6f8b3408a6e5265db970c23aa6ac508c93f5142c16dfc:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRlYmMzYmY3NjljOWNlNWQ4NGY3YzAzMzg3NWNjZjdiNWRjNDZkOTNiNTI0Zjc1MmZiMzMxZTZiNTRlYjMyOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2U1N2MwMjEzNTAzNDBhMmNkYzM0ZjI5NTc5ODZlNjU1MzZiZDM3YjM0ZTU0ZmQ4N2E3NWMxZTk5MzRmZWU0MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGU5Y2RkNDlkYjBkM2U0MDFhNTgwODEwNGY1MDYyMWM2NzhiYmMzYmI3NTAzNGNkZjkyYTRjZTYzMzkxMWY0YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjdlM2NjOGZiMjE1ZDM0NTk4MDRlZDQxMzlmOGUyMjFmNGNlYWM3Yjg0M2Y4OTU4YjlmYjhiNDBkNzVlNGNhMyJ9" + } + ] + }, + { + "id": "claim_5f340920fb764960b757c75629fb9a57", + "statement": "Continuation tracking prioritizes a chronological strategy when supports_since and is_chronological are true, otherwise uses the maximum marker when supports_since and is_since_comparable are true, and otherwise disables tracking; chronology permits checkpointing within interrupted runs whereas unordered sources require rereading the failed request.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L129-L140", + "version": "repo-lines-v1:sha256:138a08661c50ab8d5b5727425882e15eed247731802b9e7ea771aeb9a2403caa:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4ODA4ZDdiMmY2MGU4NDE0MGQyMjJiYTNkYTFkYTZkM2ViYjYzZmM4NWE1NjQ4ZWJkNTUwZTkwNjMyNjJiYTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzYzAwNGQ5NjgxM2E0OTA2YWZiMmQ5ZjdjNTM0YWU4ZmIxOGU3OWY3MmIzOWJkODZmMjExZmQ4ZDFkY2U2ODciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE3NDZiZDY4MDllYjNjMWRmM2NjYzc3MTIzNzc3Y2VjZmM4ZTE5NmRmMzAxMjM5MTI1Y2RhZmZmMTAyODBjMTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ5ZjAyZTZhMDFhNDA0Y2Y2Y2Q1MzM4YzhhMDlmMGM0ODg2NTU4NjYyMGZiNmM2NGI3YzFhYWYyYzI3NTU1MDAifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L189-L196", + "version": "repo-lines-v1:sha256:14e32068988e0f15279f8330b1ed9aebcf4c88314d221b665c042929052e9091:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDU5NWM4MjA2YTBjZjUxYzJkNDcxNzllOTI1ZmI2ODczMDQ1OTA3ZDY5MzViZWUxMjRhMjI5NGYyY2E1ODFhYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDQ2YmZlOTg3MzllMTNkZjQ5NmI2YTFiMzc2NDhjMzQ3NTBjNWFmZTgyYjc2ZDQyYjI0N2JlYjgyNjc0OGVmNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzViMDJlNmRiMmY0YTNlZjAzYjViYTU0YzllNWRkNTNmZjU0ODZhMmNmOThhMjlhN2MzZjhlZTBmMDYxYWEzMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWI3YWZkZjllMTlmMjlkOTNiYzhhY2Q5Y2NmMWQ4NGM5MjNkNmFhOGI0MGRiMWNlMjI1YWYwZWUxZjJjMGYyNSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L342-L342", + "version": "repo-lines-v1:sha256:215e8220a8f5665588d03cab51e8be9cb13e7148cb03b13f570080cbee5a0226:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjE1ZTgyMjBhOGY1NjY1NTg4ZDAzY2FiNTFlOGJlOWNiMTNlNzE0OGNiMDNiMTNmNTcwMDgwY2JlZTVhMDIyNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjE1ZTgyMjBhOGY1NjY1NTg4ZDAzY2FiNTFlOGJlOWNiMTNlNzE0OGNiMDNiMTNmNTcwMDgwY2JlZTVhMDIyNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGNiYTJmOTgyOGM4MGEyYzM4ZTI0OTY2ODk4NGNkY2I2MzJkNzYzZDY4ZmFkZGY4ZmU1ZThlYzI5YmQzNGVlZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTIzNjQzODFhMzM0ODY4ZWYyZDc4Mjk2NmYxMDU2YmM2YTExMDdlNTQwN2YwNzg0NzZhNWViMWRlMjZlNjZlZSJ9" + } + ] + }, + { + "id": "claim_a2e0cf15b183408cb4c4566af33017db", + "statement": "Continuation state is stored in the pump's pipe_offset and can be read or manually updated/reset through the Service API; initial import or reset normally starts without since, but initial_since_value can override that starting point.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L180-L184", + "version": "repo-lines-v1:sha256:f4039160812b74e8936e24a05a5c20e578430a89ac6dafa7b7ead8a9d0aa8340:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGZjMWRlYzU0YzQ0N2Q2Nzc5NTdiMGU3ZDVkYjcyZjY2ZDI3YWE4NjlhYzQ4OWU3ZDI1OTA1YjcyZTQ4YjQ3OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTY4ODQxNDA5MjQ2MDAwZGRiYTBhMWYxOTMwNDZkMTQzNWFiODI5Yzk5MWYyN2Y1YmU2ZjQ2YmQ4ZTQyNGQyMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGIxYTIwYmQ1YzE5MGIyNGVmMDM4YTEwZTM3MDBhZjJjNGFhODkxM2ZhMGM4ZTk5YjEwODU4MWRhYzhhMWM1ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmY1MDZlNWY5NjYyNzNkMDNmZDNmMzcyM2M5ZDY2ZWQ5MjNlMDgzZTg2OWJiMDMzZTJmYmZmY2NlNjY3YzM2YyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L249-L256", + "version": "repo-lines-v1:sha256:3a1a8f087316117fdbee8324beeaddab4ca34e9bfee06ceac4cf709ca7c9c5ff:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2U0YjYzNzlmOGIzZmNlYmNkNThmMzU0NmI2ZTM3ZDgxMTBiOTdmOWVjNWM5N2NkNWQ2ZTc3OThkZGFiMzk3ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2UzNTBiNjQxOWQwZGQyMDk2ZDg4Y2QzZTU2MGM0NDQ4YzUwMzFlNjE2ZWFkYjk0MWEwMWQwMDg4ZjY2NTc0YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDM2NzJhNjA0ZmUxNWJkZDQ3NDc5MDIyZTg4NWUwYTkxYjU3Y2ZlMTc2YmQ3ODMwNGJjNzZhY2YxMmZkOTYzMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2QzMDdlZTY2OTJmMjgzMzFhNGQwNDVhZjY5ZTg5MzRiY2I4NDZhOTlmZWVhZjU4NDU2N2Y1OTk0YjI0NWJlNyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L303-L305", + "version": "repo-lines-v1:sha256:be4f0e65ae6de37d301bb7a630e5f137e2ea2311c18a32e7d21bf68030572ff0:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzAxZTZkODYwZGIyZGE5MzhmZmU0NWVmMGY3NTNkNmIyYzBiMmZhZTZhY2I5NWIxYTMzZmUwMWI1ODlmNmU0YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTEyYzk5ZTMwNmIxNDlkMmZkMGViZmYyYWY0MjU4ZjNiMjNlMWQ5MTNlMDVmNDc2OGM3YTlmOWZlODI1ZjU2OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGNiYTJmOTgyOGM4MGEyYzM4ZTI0OTY2ODk4NGNkY2I2MzJkNzYzZDY4ZmFkZGY4ZmU1ZThlYzI5YmQzNGVlZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmEzY2Y1MTkyMzU0ZjcxNjE1YWM1MTAzNGIzZTk3YzIwZWRhOTk2NDNmY2FmNWJiZTZkNDFhZDU5YmQxMjE2NyJ9" + } + ] + }, + { + "id": "claim_f57dcf3db409495586c15b1a5ed173cc", + "statement": "JSON source page_size must be at least 1, is sent as limit, and makes the source request pages until no more data remains; paging requires supports_since, is_chronological, and is_since_comparable all true.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-json.rst#L64-L71", + "version": "repo-lines-v1:sha256:7fa2966222af3e845d7c6cb76cbc6d8a7790647c8c5e3d69418ed92ac368cd55:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzdjZDhiZTVkZjVkMTMyZWFhYWFiMDhlNzJlNGZmZDM0MTZkNjE2MTc5MzBhZGZlYWE5MzlhODQ2OTQ3MGY5YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWQyZDNlOWVkNjJmMTUxYzIwM2VjNTZmYjU1OWYzODZjMWE5NjhiOWFmMDE1Yjg0YzEyYjFlZjFkMTkxY2U3NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWU1Y2Y4N2NlNzllYTU5ZGQ0ZTM1ZGQ1MDk3OGJkYjE2NjIyYjc2YzY0ZWYyMTY1ZTJmNDE2YzhhNDAwMjM1YiJ9" + } + ] + }, + { + "id": "claim_f665e65c904040dfbe7bab1725f47a32", + "statement": "The continuation tutorials demonstrate mapping a remote modification field into _updated and translating incoming since into an API-specific changed-record request; the unordered example uses max tracking and cannot claim chronological support.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L303-L342", + "version": "repo-lines-v1:sha256:3ac5d1a683fc6ae310511116ffed5261f5047fa9d9e4f152a33bf0f4379b1a06:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcwMWU2ZDg2MGRiMmRhOTM4ZmZlNDVlZjBmNzUzZDZiMmMwYjJmYWU2YWNiOTViMWEzM2ZlMDFiNTg5ZjZlNGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxNWU4MjIwYThmNTY2NTU4OGQwM2NhYjUxZThiZTljYjEzZTcxNDhjYjAzYjEzZjU3MDA4MGNiZWU1YTAyMjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBjYmEyZjk4MjhjODBhMmMzOGUyNDk2Njg5ODRjZGNiNjMyZDc2M2Q2OGZhZGRmOGZlNWU4ZWMyOWJkMzRlZWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUyMzY0MzgxYTMzNDg2OGVmMmQ3ODI5NjZmMTA1NmJjNmExMTA3ZTU0MDdmMDc4NDc2YTVlYjFkZTI2ZTY2ZWUifQ" + }, + { + "resource": "repo://hub/tutorial-microservice-continuation-support.rst#L94-L131", + "version": "repo-lines-v1:sha256:beb5a91c9c3d7ddd33857f738634efc8ce7188907d6bcebacd430d2099e3392c:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlMzhlNTg5ODZjODJiNDQ3ZmQ2ZjA1NjlhZDAzNmQ3NTE1NGNkOWY1MGQ5ZjY2MzE1NTBiYjRhYzZhNzNkODciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcwZGFiYTZmYjBkNDkyNjA2NTcyY2ZmNmU1Yzg4YzkyZjEyMmY0NjUwMTM2OTBlNWQzY2Q5ZjY0ZTlmOTczM2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk3MTIwNGM2MDUxMTUzOWFiYWMzNTViZWU3ZWZlMmRmOGZkNzA4YjQ4MmFmN2M1MTExZDU0YjY2OGRlYTNiNzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZmNDFjYTEwMWM5MjgyMTM5N2RjOWY4ZjI0OWMyMGI4OTM4NTBjYjVkMjU5YmJmNDUzZGMxNmIzNzk0ZjM1ZTEifQ" + } + ] + }, + { + "id": "claim_03d87b0001fd428db8bfe40cac01d345", + "statement": "JSON Pull X-Dataset-Populated conveys true or false, and an absent header means the populated state is unknown rather than false.", + "evidence": [ + { + "resource": "repo://hub/json-pull.rst#L75-L76", + "version": "repo-lines-v1:sha256:04affa181032058f27367981048cd67593717c50dc73ed3c132956de1c60df69:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmU5NWI2OTAyMzg5Y2JmMDA0ODJiOWYzYzlmZmIyNWU1Y2I3NjIxNzYwNjVlNGFkYTJlM2Q4ZjBiZjQxMTM5MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGQ1ZmVhYmNmOWQ1ZTQ5N2QzYzU2YjNmZTI2ODI5NzBkOGE3MGM3OTA5NGVhYjNmMWI0MzE5YjE2MGRiYjA0NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTlmMTE2YWUwOTY1MDk0MGQwZDdiMmYwMjc2ZThkZjA2OTc4NjdkZjQ0NGRlYmM3OGQ3ZDRiYWUwN2Q5NzBmMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODIxMDQ4N2VlODFlODU3MGY4YjY2NDY1MWRhMmQ4YmMwODllNTkzZWNhNzRiMWQ2MzAxNDAxYmFkNGI4ZTQ5OSJ9" + } + ] + }, + { + "id": "claim_43307ab4b8dd49a99d9bc4320c5b98d7", + "statement": "X-Dataset-Max-Updated is the JSON-encoded highest committed offset and should appear in the last entity of a complete retrieval, except a stream marked X-Dataset-Filtered true need not include that entity, such as a publisher with a transform.", + "evidence": [ + { + "resource": "repo://hub/json-pull.rst#L78-L82", + "version": "repo-lines-v1:sha256:32d6a9eb238eaac8b89318f5eea082d481c846f201c01a191342f312c6c59f5e:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTdjNGNhZWVmYTgxYjIwZGFlZmIxOTQxMjU4MTc3ZDI3NTg2NjU1YjQzNjY0Zjg0MjNjZWNkMjhhZjIxYzhhYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTU4YTkwMGFkN2UyMzg1MjQyMzQzZTQ4OTIxZmFkZjE1NjUxYmIxNTM0MmFmZGMzNGFkMTY3YzVmZWJkMTE4NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTViZjU2Y2FhMjFmMzgyYTQ5OWQ5MGYwYTE5NDE3YTVmMmZkM2QyOTVmOWMzYWEyOTBiYmYzOWVjZTlmNjE1ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjkwZWU5NmQzMTFhMzdlZTE2YmFhYzRjNDhiM2NhZDA3M2NiNjMwODdkNjZkMGU5ZGZiYmMyMjM4NDlkZDIxYyJ9" + } + ] + }, + { + "id": "claim_18a2c2b267684e36987c8e849217e04d", + "statement": "JSON Pull X-Dataset-Generation identifies dataset creation and changes on delete/recreate, while X-Dataset-Restore-Uuid identifies a restore and X-Dataset-Restore-Offset gives the JSON-encoded highest committed offset at that restore.", + "evidence": [ + { + "resource": "repo://hub/json-pull.rst#L84-L94", + "version": "repo-lines-v1:sha256:0a8246b1db4ec7b0ebdab5ca50133daf585aa7bd5d6ac8353895ac2dd1a254f0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdlMGY0MTdhNDc2ODNiMDBkMDI1Y2YzYjEwYzgzODliMGQxNTQ5ODA5ODU1ODVkYjdmZjIxNWIzNzZiOWNlMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNlYmI5ZDkxNTRlNTgxNjUzZTM1YjY1NDAyZDlhZDk4ZmYxMDNkNTY5NzIyYjBmNzgyM2FjMjU4YjUxYzcxNzgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ1YWU3Y2QzZDE5Yjk0M2Y4NGE1MGExNTllOWE1ZDFhYmI4YjAwNTIxNmI1Y2RiMDU0NjBmZDIzODliNWU4YzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4ZDFjOTA3MjAxOTEzODUyNTAxZmNkODA4NzIyNWQyZjQ1NzU2ODE4MmY0ZjZjMWRlMDE0MjUxOGM3ZjVkZDUifQ" + } + ] + }, + { + "id": "claim_1c36096059764d7f8c232a3a0c61e355", + "statement": "JSON Pull X-Dataset-Completeness, when present, is an integer number of microseconds since the Unix epoch representing dataset completeness.", + "evidence": [ + { + "resource": "repo://hub/json-pull.rst#L87-L88", + "version": "repo-lines-v1:sha256:35ecc62001f5c1f453ab78677688503ac1d26139b21411f5f24f034f7c0fb5ca:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTlhYzYwNTE5NGNkNTBhNjZjZTJkNGEyZDY4OWE5NzIyY2E4M2YwY2U1OTljMjk4Y2FmOTk4OTQxZDhmZDU0NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNThhZDQ2ODllYjRjZGY1Y2RhNzUzN2E5ZDJkMjg3YjJmYTA2Y2Y1NTQyZDQwNzA4NDI1MDQxNDYxMTExYTdiZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmZmNTE3NWQyZjA1MjI2ZGZjNTg4NmJjZmY2YTlhZDkwOWY3MGIwYjA2MDRlNmNmNTY1NmM0YmE3YjNlYmU2NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2ZjYWVmZjgzMDJhNjViOTVkOTk4OTcwNjc2NTQxZTUzMzNmNjZjYTU4ODljNWI0MTIyNzc0MWI2YzgwZGM5MyJ9" + } + ] + }, + { + "id": "claim_3aca3c3fd16a46d8b47258fbffdddfc9", + "statement": "Automatic reprocessing uses JSON Pull dataset-state headers to know when to rewind or reset, but the default reprocessing_policy is continue rather than automatic reset.", + "evidence": [ + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L44-L51", + "version": "repo-lines-v1:sha256:49721936dbd9f05108f09516247ef781b0bd5696ee2ef2a777179e7839ff1d65:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODQ4YWM4NjZiYTI0YThhZGVmOTkyMDQ0MDlhYTEyYjk3ZDE4Mjg1MDQyNjdlNzFhNGZhZjBiMDlkNjQzZDlmNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjcxNWY3MmNkMzg0MGIyMTk0YzBlZTQ0ZmE5ZTNkNjJjNTA4NzJkNDczZmUxNDQ1ODdhZGU2NDUwZDM1YjQ1NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjEsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSJ9" + }, + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L8-L29", + "version": "repo-lines-v1:sha256:a4b946ddb36e387d4a22d297c148b62823304265c2176c1fc46d4042a5bf3e60:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2ZTYxZDE4YzU5NzViYTYxMGJkYzNiM2M3MjE5Y2QzNDRkZWVkODU0ZmQ5MzNiOWRmMjgwMDVjZDA5MTRlMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5MmE2YzI4OWEyMzAxMGE1MTkwNGRmNTViNTljOTdlNzRhMzI2M2QwZjdmOWYzMDhmZTI3NTIwZGM2OGRjZDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ5ZDk1OWZkMGVkNDIzMTVjZjE2Y2Q3MDkyMjc1YjVjMDVkZGMxY2I5ZWYwOWU1MmNmODg3NTQ3Y2NhMDNjMGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2OGFmNDBiY2U0YWUzNTRmYmEwNDg2MmU4OWY5MGEzZWZiZTMxNjdiNjA5MjU4YjUyMzc4YmU1NTI1Mjc0Y2MifQ" + }, + { + "resource": "repo://hub/json-pull.rst#L96-L96", + "version": "repo-lines-v1:sha256:cbeed1494f8a691f5a3cb26d60e52df789a4d10d3cd2230554bcdf3c5a09067f:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2JlZWQxNDk0ZjhhNjkxZjVhM2NiMjZkNjBlNTJkZjc4OWE0ZDEwZDNjZDIyMzA1NTRiY2RmM2M1YTA5MDY3ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2JlZWQxNDk0ZjhhNjkxZjVhM2NiMjZkNjBlNTJkZjc4OWE0ZDEwZDNjZDIyMzA1NTRiY2RmM2M1YTA5MDY3ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzFlM2VlMjQyNDVjZmQ2ZjA1ZGE3YzAyNWQ1OTBhMmVkYmM1ZWRhMzg1NzViYTMwYWYwZGE3YzUzYTg2YjExOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzljZDdhNmNlOTU2YTk1YTY0ZmE4MjUyZTIwZWQzN2NiZTE1YThiYzgzZjk2NGU4ZWNjYzUwYzNkODUwMTQwMSJ9" + } + ] + }, + { + "id": "claim_131fd4d3ca03440e92d02c41e43d6a66", + "statement": "Continuation imports cannot infer deletion from absence in a delta response; deletion entities or periodic full rescans are needed to account for records disappearing from the source.", + "evidence": [ + { + "resource": "repo://hub/custom-data-source.rst#L18-L22", + "version": "repo-lines-v1:sha256:883588cf38265811acbb393ac5fdb6779b52f6a3255d48c48d21e061f654124a:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWE0NTQxNDI5MGFiYjgyMGRhMmJlY2U4N2QxODIxMzEwNjE1OWVhOTcwODA4OGY0NjJlN2NkNjFiODQ0ZTdkZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDc0NGVhOTI2YmY4NGIxOTY3MTc0MDcyYzEzYTdmNTJhYzZkYTc5NDM4ZDBkYTA3ZTE3N2I4NDcyOThlODhlNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmIzMDYzZDcyZDQzMzU2Yzc4OTc2NjQwMjI5ODE5NThhNzE0MGJlZmVjNWI0NGJjNTAwOGNlNmYzZjdmN2VjYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2MwMjEwMjExNmRhMDFkNWFhOTZmYmNjNmZhNDRkMzNmY2VmNmJjODk2YmE4NWMwMzJkNWE5ZTZkZWRhYjQzNCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L67-L69", + "version": "repo-lines-v1:sha256:a9b320b2818e6e5dbc84dff5818e591fed436ace75f4e4565a2f17e49347a8ed:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTMwYzZiZWUyZGEyMTA4YmUyMTRjZDhmYzU5Y2U0MGQ5NDM4MGM2NDhkM2Y5Mjg2MjA3MDZiMDhmOTBmODU1ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODYyZjc5YzNhMGQwYTE3ODU4MzliZDVmMmJjYTZhZjE3MTExOWEyZGMyZjM1MjA3YzQ0ZmQ2M2NhMWVhODIyYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTA3ZmI1OTFmZjhmMjZmZDA5NWUzOGE2YTBhZTcyZTIzYjhlY2I5MDA5NjMzOGFhMDAzYmE1MWEzOGNmN2VkNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmEzY2Y1MTkyMzU0ZjcxNjE1YWM1MTAzNGIzZTk3YzIwZWRhOTk2NDNmY2FmNWJiZTZkNDFhZDU5YmQxMjE2NyJ9" + }, + { + "resource": "repo://hub/tutorial-microservice-continuation-support.rst#L191-L218", + "version": "repo-lines-v1:sha256:ae6b325055d8b76d61b1bc4e7aa296903c96c8c84b65dc36d38a7f3a642338a7:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc2ZTBkMGIwMTFlNmQzZGI3MGVkM2M0OGY3NGY3ZjcyMmQ3MjAxMTFmZjhmZjU5NzgzZjEwYWU4NDM4NGExODkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAwMjBiOTNhNDQ3OWRhZDQ2NDI2ZmViOGE3ODgzM2E4NmM3NGE5N2JjYzRmMmRhNGM4OTM0ZmQ0ZTE2MmM3ZDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM0MjEwNGNhMTM5ZGNhODI5NjUwMmEwM2U3N2M2NjIwNGVmOWE5ZmM4N2I0OGIwOGNlZTc2ZGM5YTg0MjNjYjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVkNTNiZDg2ZGUyMjA4OGZhYWM0MjBkOWIyOWUwNDAwZmEwYTMzZjQzM2VmNTFiMTEzYTA4NGU1ZDFiZTM2ZjcifQ" + } + ] + }, + { + "id": "claim_584072d80d3545cda56a75c83cce9150", + "statement": "For JSON snapshot imports, if_source_empty defaults to accept, allowing previously synchronized entities to be deleted by an empty source; fail instead fails the import and preserves prior entities.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-json.rst#L91-L101", + "version": "repo-lines-v1:sha256:26ce5fd228290782b0b8a5e9b79d83d2b2cec4890662ad0b90039a37aa380d1d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliZWIzZDliMmYxY2IwOTJlNTJkMWZlNDBkMmFkMmQ1NWVhMjg3OTAzY2FiM2MxMGE1ZGMwZGE4N2FlYzk2NmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE5MTA1YzA1NzY5NDQzMDU2NjllODg1OWU4ZjRjZWJiNDM4NGE4OGZlNTRiN2Q0MWE0YzdmN2MzYjYyOGM2NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMwM2NlNmRlOTYzOWNjYWU4Y2EyZDkxYzZjYjQ3NGM0ZmUwMWMzYjZhYzMwNTc3OGRhNGY3ZWNhMTNkZmQxZDcifQ" + } + ] + }, + { + "id": "claim_400c640051934ff6914ebf2cf73fd624", + "statement": "A source adapter must expose upstream errors as failures rather than successful entity arrays, because Sesam may otherwise treat the import as successfully complete.", + "evidence": [ + { + "resource": "repo://hub/tutorial-custom-data-source-microservice.rst#L94-L109", + "version": "repo-lines-v1:sha256:ffde6cc0099398256b74f8516a9a1c423128d31c1db109a17db35cafba0abadc:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlmZTM4NDA2ZjNkODdmM2JlZmY0N2E2ODYyODBmODJkODQ2NjNhYTY1Y2NlZTkzOThmYmJlY2Y4YjY5NmQxMDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNlMGNhYTU1M2E0NDllZDM0NDIzYTBjZWVmYzA5ZDFlMGY0YmZiZTU4YjQxY2ViODg4NDFjNGIyOWNlNzlkZTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ5YTU2ZWE1OWFkZDJkMzBjYTZhNjYxNGRkMDFjOGI4MmRhMWQ5Mjc3MDg4ZDJlOWJjYWUyYTdjYzk2YTQzNTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlmNmFmYjliZjNlZGRiMjhhZTI5N2Q0MGM2MTg0MDE5YmE2N2Y0YzUxNTZkNmJjODRiZDgxOGQ3OWI1YzEwOTcifQ" + } + ] + }, + { + "id": "claim_93e6f69dc760489a8e1e21f0d239caed", + "statement": "An HTTP transform is a POST request-response operation that must accept and return application/json arrays, can return zero or more transformed, filtered, or newly created entities, and raises an exception on non-2xx responses rather than acting as a JSON Push synchronization session.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-http.rst#L7-L19", + "version": "repo-lines-v1:sha256:593a581936d372361171c71831e0f5c9d53a038ad9fa3823dcbaa07b1d0ba9cb:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUwYjUwNDI4NDZiMTdlMjhhNTU5NTJmM2FjZTEzYjhhMGZiZTc5NjFmOTRiMzE3Y2NhMDVlNGI1ZGVkMjViYTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJhNTIyNTJhZDU2M2RmNDk3YWFmMDg5N2EyNjk5NjE1YTZiZjZjODM0YjBlYjI3YzVmMWM2MTU1MWMwOWUxYzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiZDIyNjE0MDA3Mjk4Yzk1MzFiODM3NzFhYjc5YWY1NzRhMTEzYWE4NmIyYzE3NTFhNzc2MDhjMTcxZDU2MmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYzNmUwYTEzYzE4OWUzMGM3ZTRlZmIzNGYxZTY1YmQyMzg2ZDRmMWVkZmEwMTgzYzUzYzFlZGQyNWM2ODg5OTMifQ" + }, + { + "resource": "repo://hub/json-push.rst#L8-L65", + "version": "repo-lines-v1:sha256:c9022c209b4e28beafb4883a710e993941ba719132b80b3fd3e678fa1a09d1e0:eyJzZWxlY3RlZExpbmVDb3VudCI6NTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIzZTQ5OTcxMTE5MmZhODc4MjhjYjgzOThkOGU4NDJiNDY5ZmFiNGM5MzA1NzI1M2I4YmFlODJjNGY5ZWRhODAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZjM2E1MTViM2Q2Zjc0NzI1YTFkZmFhZGMxMjYzYzE4YjBmN2U1YzM4ZWRlNzkzYjhmN2Q1NjI3Yzc0MDA5ZDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjlkMzg1YzkxNzc4OGQ5NDY5MzcwM2QxOGY3ODIwYmVhZDVmYmU3YTQ4MDgzYzQxYTQ3NTIzZjAwOTg1ZmFkYWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI1MzViNzc0MWVhNjI4ZDM1ZWVmNGFhM2VmMGQ4NWU0YmNjNmZlMzI1YTE4ZWMxNmUxZWQ2M2NlMWQ1M2E0ZWIifQ" + } + ] + }, + { + "id": "claim_5f67ae7bd81b47c380916fc52c95818c", + "statement": "HTTP transform output is passed to later transformation stages and the sink; documented configurations use a later DTL stage to copy the returned data and supply _id.", + "evidence": [ + { + "resource": "repo://hub/custom-data-transform.rst#L17-L54", + "version": "repo-lines-v1:sha256:ec8b68686d7e289dfa7d8b0fd12b7e21e2931d730c3a4252f190a8396ff4926d:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYyMjU5MDFhOTU0NDUxMmQ0ZGQ1OGY5NmE4N2Y2YmJhOWFkZmFjZjgxZDdiMzBlZTZkN2JlOWIyZTA1MjVlYjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZjMTU0ZGUyYjEyYWJkNDE2OWJjMWMzYzRhZjdkZTIxZjg2NTFiOGZmNDcyMTc5NDcxNTQ4ODcyNmQ2OGFlYmMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM2NWM1OTFlYWI0NTk1NzAxNDlkZWYzNTM4YTliOWFjYjk0ZDBmYzk2NTMwNDQ3MjEzYWMwZjgzZDI4M2FhOWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQyNDViNzQ2OTljY2RjYWQ4NGU3ZGNiZDYxZmU4ZDg4ZGUxZTUzOWZmYTI0NDJjMmUxMzMwMWYzOTkzZDliODIifQ" + }, + { + "resource": "repo://hub/custom-data-transform.rst#L74-L74", + "version": "repo-lines-v1:sha256:0e36f7b6265d594e0681c497aec869ea88b6406d950137b2d8c99a0d4bf34834:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGUzNmY3YjYyNjVkNTk0ZTA2ODFjNDk3YWVjODY5ZWE4OGI2NDA2ZDk1MDEzN2IyZDhjOTlhMGQ0YmYzNDgzNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGUzNmY3YjYyNjVkNTk0ZTA2ODFjNDk3YWVjODY5ZWE4OGI2NDA2ZDk1MDEzN2IyZDhjOTlhMGQ0YmYzNDgzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmE5ZDc2ZTExNTc0YTI1ZjFkNTIwNDBlNmI4YWQ3Y2ZiYWJiZTUwZTUzODhjZTgyODYyNmMxMjg4MzQ2NTI0ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGNiYTJmOTgyOGM4MGEyYzM4ZTI0OTY2ODk4NGNkY2I2MzJkNzYzZDY4ZmFkZGY4ZmU1ZThlYzI5YmQzNGVlZCJ9" + } + ] + }, + { + "id": "claim_a9a08c1181684b8cb5969b1f6884db54", + "statement": "HTTP transforms require system and url, support string-valued request headers, and split requests according to batch_size, whose default is 100.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-http.rst#L36-L61", + "version": "repo-lines-v1:sha256:4e4ce9407b3b5adb93f89dbb96265248afd4680b11b55a8b2c5ddc46e62a8c7e:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiYjNjZmE0NjI3OWJjZDhlMjlmZWVhYjhjYTc5MTM1MWZlMTQxMTVlOTg1NTE4NWQ5NDBkZTRhZmRmNWJiZTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNlYjRmY2IxN2VmNDQwZTA2ZThiZTVmNzk3NjQ5YTY4Y2FmNTQxMzlmNDkwZjUzNjIxZTIxZDgwNzBlNmEzOTQifQ" + } + ] + }, + { + "id": "claim_7164b6d3991a4f328482fbeae82c36cc", + "statement": "HTTP transform side_effects defaults to true to protect against unintended external changes through features such as pipe preview; false is appropriate only when effects are absent or explicitly acceptable.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-http.rst#L63-L67", + "version": "repo-lines-v1:sha256:a31cef4586133152b28e5b5149f66a54b8d64a3ab34a874fcc78f85e7e553317:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDhlMjI5M2E5NDI0Mzc5YTdlZmU0NzJlZTMzYmY4NmI5ZDQ1M2ZlNTg1MmRlMjc1ZjhmNWQ2ZGQyMWQyY2UxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWFkZDE1ZmNlODcxMzYzOTI5YTRiNTgwYjBjZjIyZjczZjJlOTZiNWM4Nzg0M2NhZTZkYzAzZWU4NjAxODY2YSJ9" + } + ] + }, + { + "id": "claim_084b1f484bd540fca1ddf98453e2cf81", + "statement": "HTTP transform trigger_on selects entities by a property and value with substring wildcards and default key _trigger; missing or nonmatching values pass through without transformation.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-http.rst#L69-L75", + "version": "repo-lines-v1:sha256:6c0c15b1361fc827b6bc6303b18d7eff9d5b4e4f51c66c5644d2ce966e031ec0:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWUwMGEwNzU0Y2ZlZTM5ODEzNmNiM2FkYmE2NTgzOTkxMjdkZTRkNzA3YWM3YTdiYmNlMmE3NzQxMTNhMWNkZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTRmY2YwMTEzYjRmZjMxOTBkMjJjYWI5MTk4NTVhZjQ4ZWU4ZTFmZjQ1YWI1MjJiN2ZiMzBiMGMxYTVkNzM0OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWExZjcwNzQxNzUxMzRiMDU0M2ZiMzUwMDQyZmMyYmE4MTEyNWUwNWYyNTYyNjI2MDg2NzE0N2E4ZDUzNGE1MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + } + ] + }, + { + "id": "claim_05667e5f85ad4d2fadb29db2138515c5", + "statement": "JSON Push uses a string sequence_id per sync, a string request_id per request, and previous_request_id referencing the preceding request except on the first; sequence IDs are recommended to be UUIDs and request IDs are local to the sequence.", + "evidence": [ + { + "resource": "repo://hub/json-push.rst#L225-L237", + "version": "repo-lines-v1:sha256:06d09b174523a132bb3a630964337f290521d0ef8debb449a162e7952fa51f28:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ2N2E3ZmQyNzg3OWMwN2M5YWE2NjQyZDZlN2IyMjJjZDk3MzY1N2U5ZTkyODJiYWM3NzA1NTRmZGU4OTdlMDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliYjVlOWU2YjMyMjU0YTg0MDFiZjY2YTk1M2JiY2I5MDYwZmFjN2JlNDk1YTgyODhkZTM3ZDdhYzQ5ZTFjOWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImMzMmIzMzIzZTI3MDE0ZjkzNzY0OWM4ZGMyMjg2YTllZTdiYzY3ZjVhYWQxNjEwZjMxOThkMmM4NDA3NzUzNzQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRlM2ViODM5YjU3YjY5OWU0M2U4ZjY2MDUwN2NjODQ4N2Y2ZmUzMmU1ZjAyYTQxMTllYWE4M2M2MjZjOWE1MmEifQ" + }, + { + "resource": "repo://hub/json-push.rst#L31-L46", + "version": "repo-lines-v1:sha256:b54b4d73ae85dde9d7eb914e1782b56fec4c3c269f1183eb3c6d7e551c8f5791:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ0MWU3OWU2NWU0ZmMxYzliMDE1OWE0NjYwM2VhNjA2ODIyNTEzNWZjNTJmNDgxZmJiMWFiNjYzMWQxYzk4MzgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5MjEyNzNjNmY2NGE3MjIzZTE5MDExNmIxZWIzMWIwNjUwY2I5ZTQ4ZTQ5MDMyZmU5NTQxN2I1YTFlMzNkNzMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJlODIzNGEyNGY3ODUzMGMxNjhlNGJlZDBlNzE4NzIxMzlkYjk3NDU2YjUwZDgxZGMxYzk5OTcyNzNkN2ZhNmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMyNWFiNTlhODdjYTM2NDVhYWIxNWYyMWNhOTMwMzQyZjVlMjlkN2Y1MGUyN2FmZjA1ZDYxNzM4MTE1ODhiNTMifQ" + } + ] + }, + { + "id": "claim_2b799ad4859a4bf08eed1401dfccbfdc", + "statement": "JSON Push is_full is a Boolean included in requests and defaults false; is_first and is_last are true only on the first and last requests respectively of a full synchronization.", + "evidence": [ + { + "resource": "repo://hub/json-push.rst#L35-L54", + "version": "repo-lines-v1:sha256:f3e662ad99f637aa33303227b7ae1fa9331e2e13a5218f49750021dfbbeeedd0:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM0ZWRlZTA4NzM3ODJlOGE0YzQ0MTBhY2RmZTg1ZjQyNTJjYzc3MmZmYzcwMTlhYzEzNjhmMjAzYzc0MWYzMDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJhOWI0ZTBjN2QyM2FjNmU4MDIwZWM5MjZhNDM0YTVhZWI5OTEyOGY0MDNhNDM4ZDMzMGUwNzVlYWRhNGE3NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhNTVhODM1MWMyMmRkMjA1MDljYmE0MDIwZTA2ZWRhNTczMWY5MzNkYWQ4M2Q3OTFjMDM4NDI4N2YyNWY2NGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk1YjQxNTc4YjVhYTllZDU0NDYzMTljYzg4ZGM4Y2JjZDQwNTg1NzJiMmNhYmNmNjE2YzU4NTE1NzY2ZWM3NmQifQ" + } + ] + }, + { + "id": "claim_243323a3ccaf474db1dab5de3e46d71c", + "statement": "Incremental JSON Push accepts supplied entities and may ignore synchronization parameters, with omitted parameters treated as incremental; it does not infer deletions from records no longer included in pushes.", + "evidence": [ + { + "resource": "repo://hub/custom-data-source.rst#L237-L241", + "version": "repo-lines-v1:sha256:59e9c1da4a78da36ed465bc2e5a93cac4d57697a8b5007130f829a42601795e5:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTMwYzZiZWUyZGEyMTA4YmUyMTRjZDhmYzU5Y2U0MGQ5NDM4MGM2NDhkM2Y5Mjg2MjA3MDZiMDhmOTBmODU1ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmFmOTRmNmZlYzU5Y2NhOGU0YTY0NjY4ZmZiZjg5YzcxZjYzYzQxMjFhZWJjZmNhMzU3ZmE1ZDFmZTFkMTE2MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTBiMTczMDEyMTBkNTdhMzA1MWUxOWFhYjYxNmM0MTlkOTAyMjg0OWJlZDA1NWY2NmI4Yjg5YjY2N2QwMmI3NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L66-L69", + "version": "repo-lines-v1:sha256:a574df90b87759a646d3776fab95d9f0c53e2c4b71acb987d9c0f0aacbff3ffc:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDdmZmE2MzUxNzAzYjlmMWVhYzJmOTM2NGY4OTEwZTdkZDI3NDVkNGNjMjdkMDA4ZjA4YThiNjk2MzA2NmNhOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmRkYWVkNWYyOWI4MzM3MjA3ZjMxNDViZDEyMmI2ZGNiZjQwZDM0OGE4MDQ2NmI4OGM3YjMwNzMwYzE0ZTAxMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzY3MTUxN2RmMzI5YTlkNTA0NjE5ODRhM2Q1MzcwMGZkNzBhZDdmZWJiMGViNzgwNmE5ZDllYWY1NTAzOTdhMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTdhZDc1OWZmNmQzYjA4N2RmZTcyOWZjNmNjZmU2OWQ3Y2VhYmJmZDZmYWQ0NmY0N2YxN2IyZGY4YjM0OGUyNSJ9" + }, + { + "resource": "repo://hub/json-push.rst#L145-L153", + "version": "repo-lines-v1:sha256:06bf9ad7fe27f488c00db0d40823a5fd0e9c36d823eb8eb39e711f3ff50a122a:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWQyMDRkNDQ2MzRiMGE0ZTdjZWQzMjcxYWQ5MDkxMzExYzRmMzUwYTZhNWI1OWM1NTRjNjFmZjQ1MGNjNTc3YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDMwNTYzOWRhYmVlMGQ5M2Y4Y2Q4ZmExYmEzNDUxNzY3YjMxZWRmODcxNzhhMDBhNGVkZjk5MTQwNDFhYWUxMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjVmNGRlYjNkYmJmYmU0NmI0N2NmNzliY2RkYzM3OGU3M2QxNzNjZDA5Y2JlZDdmYjljOGEyY2IyN2Q2NTdmZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTM5MmRjMzVmMjRlNWU5YzBkNmUzZDg4ZjExNjEzNjFkZjc1MzI0YmE4YTY2YjVmOTU0ZmZmMDczZTE0NzE4NCJ9" + }, + { + "resource": "repo://hub/json-push.rst#L71-L72", + "version": "repo-lines-v1:sha256:a3e8f97712f475abcccea8add8f71f7dfd36be0b8da8508d198b05957de9df05:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmU0MTlmNTA2OWVhYWEzMjUzMWU0Yjk3ZGM0ZmExZWUxMjNiYTllZjIyYTVkMmVjNmZhZDZlMjc0N2U2NDNiOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmM5NTNhOTVhYzhjN2MwZDJlYThmMDc3ZTgzNDY3ZDZmNDc4N2ZiODc0ZDYxN2U1ZWU4ZmU4MDYzNDI4MzgzMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmZmZGQ4MzcwODU0YjYyOGYzMzVjNTA1NzQyODBiNzhkNjZjNmJmNGU3YjIyNDYyZjU0N2MxZTFmOTIwYjg3NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjc1MGQzNWQ1ZTdkMTM5NzMyYzViYzEwMDE4NGRlNzAzMjY5ZTFiZWFlYjMwODUzMWUxZjkzZGVlZTNlMzhkYiJ9" + } + ] + }, + { + "id": "claim_414a2088bfaf4315b932cef7cf50eb38", + "statement": "Only one full JSON Push sequence should be active at a time; a different full sequence_id replaces the active one, is_last ends its scope, and incremental requests do not affect the active sequence.", + "evidence": [ + { + "resource": "repo://hub/json-push.rst#L61-L65", + "version": "repo-lines-v1:sha256:c8204998923024b49528a3ee87fe1bbbed30caf22691727ab71167e730930c32:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGU0MDU4OGE5NGNkODE5ZTYyNjQwZDFhMjU5NDM0MmQ2ZmRlOTNhZDYyNGE1ZmU0ZDIxN2Y2NWZkY2E5MzNjYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmMzYTUxNWIzZDZmNzQ3MjVhMWRmYWFkYzEyNjNjMThiMGY3ZTVjMzhlZGU3OTNiOGY3ZDU2MjdjNzQwMDlkNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmZlMzZlMmE2NTY2YTY2ZjVmNTZhOGZlN2IzODQwMWUwZjRlZjI4ZjJhODMzODE4MGQyMWNmZjljYTY4NjQxNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjUzNWI3NzQxZWE2MjhkMzVlZWY0YWEzZWYwZDg1ZTRiY2M2ZmUzMjVhMThlYzE2ZTFlZDYzY2UxZDUzYTRlYiJ9" + } + ] + }, + { + "id": "claim_98c94186e1e14e19a362334d0a52e31e", + "statement": "A completed full JSON Push sync marks previously existing entities absent from the supplied complete sequence as deleted.", + "evidence": [ + { + "resource": "repo://hub/json-push.rst#L220-L223", + "version": "repo-lines-v1:sha256:4a940a3a23e2a81e69a379c36b3fb5ba9f44ea3335e9157d0788c37227c56081:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDQ0YzZmYjI4OGE2NmJlYjg5NmY3Nzk2MWJmMTA1NzY5ODVjYWYwYzJjN2FlN2U3MzE0MTk0ZGI0Y2ZlMzQ4MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2IwYjc4YjBmMjJjZTdmMGJjZDE2MmU0MTM2NjYzZWM3Nzc3YzcwMzBlN2I2NjlmYTQwOWYyOTdlMjgxNGFlZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmVmNTQ3ZTdlOWFjM2U4OWE5YThhODYzZGYzNmI4NzQxNzkyYzhhOWUxYjc3ZTliZDU2NDRjZTNkMGNlNDMyNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGJhZjZlNmYxMzQ1ZWY2ZWNkMmExZmI2OGVjMTAxYjA0Nzg1MjAwMDA2MzM0MGY1ODJjNjE1NWVjY2U5OTI0YyJ9" + }, + { + "resource": "repo://hub/json-push.rst#L418-L421", + "version": "repo-lines-v1:sha256:7bd8b30a3c78a6d0cab6abe8c6958e77d8ee616ae3413de5ec534e6edfe023be:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWJmZGE4MjhmNzdmNGU1ZjJjNThhNDA0YzMyYzA2ODVlZTIxMzFjMWJkZGU5ZmMwMzM2M2VkYTY2OTc5YjgwMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzYwMzhhYTJmYzRlYWU0MDM5MDkwZDA2NzM1NjUxMWM4ODUwNWZhNThmMjk2NWQ4OTZkZmVmMzBmOWEwMWY2MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTNkZWVjYzJlOWE0Nzc2N2YwMzk1N2FiMDVmMjgwZDk0YzUxY2VlMDZhZTc5YTk1MjE1MDY3ZTA5YTdhYTRlYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGUzZWI4MzliNTdiNjk5ZTQzZThmNjYwNTA3Y2M4NDg3ZjZmZTMyZTVmMDJhNDExOWVhYTgzYzYyNmM5YTUyYSJ9" + }, + { + "resource": "repo://hub/json-push.rst#L494-L507", + "version": "repo-lines-v1:sha256:7e557266151050fb7749ee50d3681328e58fffd505fd4047cff1c3b2581ba9ec:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI0YmY2YjAwMjUxYjg3MjcxZTE5NmY4NWM5OTk0NTAwNTBkMjRlNDg5OTlkZmY2YzJlNGRkNmExZmMwMDRjMTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFmODA3Y2FkZmY2YzMzNjgwMzJjYWNhZTA2YjBmY2UzY2RjOTA2OTc2NzNkMzNhOTlmMjk5ZDM2ZDE5NjFiODgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImMyNmZiN2E4NTAwM2U1YmQ3MTIxYTE2MWY4Y2NhZjRkZTMxODlmYmRkNDE5MjMwNzg2MzAwNDg1MjYwNDE2NWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI3Yjc4MDc1MWFjMzY0MTZkY2Q0NDE4ZDg2YzNkNzVlOTU3YWIzOGY5OTU4MmFiMGUxMjQwYTE0ZGJkMjUwYzAifQ" + } + ] + }, + { + "id": "claim_0139a1db93db4cea9f30d924ade844a2", + "statement": "The documented JSON Push full-sync examples expose dataset updates between batch requests, so the contract examples do not represent an all-batches atomic commit.", + "evidence": [ + { + "resource": "repo://hub/json-push.rst#L239-L250", + "version": "repo-lines-v1:sha256:9969c112aa5e6b26854763b7dd884c253284f34b86a4b17c826373280ac9cf51:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMxMjU0MmMwODNmZTllZGVhYmVlNjg1MTE0ZDgzZDYzNzQ0NGVhMGU2ZTUxNzI5NDg2ZjVkNjAxYzA5MGM3NDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMxY2UyMmIyMWI3ZTJjNzJiZGYyZDUwYjFiZDYwYzQ5MzBiNmYwOWE4YWVlZjVjODRmNWQ3ZmYxYmNiMTA5ZDQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI1YzdiNDA5YmMyNTNmOWNmMjczMGYzM2U1NTVjOTI5MTJhZGMyY2IxYTQzZjFiMDU0YWQ5ZTBlMTdjMWE1YWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI3Yjc4MDc1MWFjMzY0MTZkY2Q0NDE4ZDg2YzNkNzVlOTU3YWIzOGY5OTU4MmFiMGUxMjQwYTE0ZGJkMjUwYzAifQ" + }, + { + "resource": "repo://hub/json-push.rst#L276-L285", + "version": "repo-lines-v1:sha256:6e6fa8b2e985a47bae856e965ffef0bcb1f27a534aeb1a0d8e447a2ee62299ab:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2Zjg2M2EwOTU4OThmZjAzY2IwNTViYWQxZjc1OWVmZTgwYzBkYzVjMGVmNTc2NGJlZmRlZDNjZjUxNmNhYzQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNiZGU2OWEzNzBhODU1YjljZWFmNTgxNTlmNmY2ZjhhMDBkNWMxMDM0NzYxODFjYmQwZjQ3Y2JkYmUzMmViOGEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFkMGYwNTIxMmI5MDBlZjUxMzI1ZWQ4ODFjNmI3NWE4Y2NiM2FmN2NkYmZjZGNlMmQ5YWVhNjEyMTA0MGQ1YjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY4NTU2ZDEzMjcxZmYwNjU3MDNmOWZmYmVhOGEzNWFmMTJhMjczOGI2NmVjMDVjMTM3ZGVlZDFiZjhmNzJiNTgifQ" + }, + { + "resource": "repo://hub/json-push.rst#L329-L338", + "version": "repo-lines-v1:sha256:a51d3109671703c12775a9651faff60f519c1220c416ecc1911a5855c1688579:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhZWYwYzMxNjU2ZDBhMzhlYmRmM2NjY2JjMjUzYmExNjA2Mzg1NzdmNzhlNWM5OWUxMWEzNTQwODhiZmQ3MWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdhMWNhNTRkNzgwZTU1YTI2YTMxYmNjY2RhMjhmYzM0OGU1NTkxNTAyNGM5ZGM4YWFiYmY0MWRjYjU2ZmFiNzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImMyNmZiN2E4NTAwM2U1YmQ3MTIxYTE2MWY4Y2NhZjRkZTMxODlmYmRkNDE5MjMwNzg2MzAwNDg1MjYwNDE2NWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcyZDJlNjU3YzQxMWM1OTc2Y2RjNGQzNzk0NTIzOWFiOTBhNzA5NTU5MzdmNmNlMGFiZjg5ODkzOTY0OGFhODMifQ" + } + ] + }, + { + "id": "claim_3c0f690211d248b59b2108b5c5c876c5", + "statement": "The Sesam JSON push sink defaults batch_size to 100 and always sends a final empty batch, so sending 150 entities produces batches of 100, 50, and 0; protocol clients may alternatively include entities in their is_last request.", + "evidence": [ + { + "resource": "repo://hub/custom-data-sink.rst#L91-L91", + "version": "repo-lines-v1:sha256:3be0aa23fc2771c724ac9e6dcf938ec9925da9bf0bec38d752c2a114cb3779cf:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2JlMGFhMjNmYzI3NzFjNzI0YWM5ZTZkY2Y5MzhlYzk5MjVkYTliZjBiZWMzOGQ3NTJjMmExMTRjYjM3NzljZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2JlMGFhMjNmYzI3NzFjNzI0YWM5ZTZkY2Y5MzhlYzk5MjVkYTliZjBiZWMzOGQ3NTJjMmExMTRjYjM3NzljZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTM3NjhjMmI2NzhkZmYyODFjZWMyYTAwYTVkOWQyZTI1NjVlNDA3NGY3YjU0ODMyNDdhMzNiNDliMWMyMzkyMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGNiYTJmOTgyOGM4MGEyYzM4ZTI0OTY2ODk4NGNkY2I2MzJkNzYzZDY4ZmFkZGY4ZmU1ZThlYzI5YmQzNGVlZCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-json.rst#L62-L67", + "version": "repo-lines-v1:sha256:5747bb3973879236b445ff100e639d4b07c03f495556e608e2f0de1d5e6c9627:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTlmZmE1NzFkYmFjNWVkYzhkNWUyMWM3MjIzNDZhZTdlMWI1OTg4YWU0Yzc1ZmIzOGM2YjlmN2RjMjA1YmY0YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGMyYmVlMWVhNWI2ZDFhOGI0OGY4NjgzN2IyYTdiNTQwYjhiMjkzMmQ4ZDc1MTNkMTQ5MDMzYzRlZjg4M2E1MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzBlYjFjMGZlMTQzMjY1ODlkNDM4YWFhMjlmM2YxMjExOWJmOWRjZjg4NTEwODNkNTNjOTMyMDYwMjk1ZjhjZiJ9" + }, + { + "resource": "repo://hub/json-push.rst#L329-L335", + "version": "repo-lines-v1:sha256:99779dc6b0e33cc5e13f495bf7467ec07db31934d3a5731221d38f7862df56d9:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGFlZjBjMzE2NTZkMGEzOGViZGYzY2NjYmMyNTNiYTE2MDYzODU3N2Y3OGU1Yzk5ZTExYTM1NDA4OGJmZDcxYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWZkNTNkYWZiM2FkNjAzNDZkOWJlZjgzMTc4OGU0MjhjNzQ3NWYzYWFkZDhjODJkZGE0YzcyMzE3OGFlNTM5NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzI2ZmI3YTg1MDAzZTViZDcxMjFhMTYxZjhjY2FmNGRlMzE4OWZiZGQ0MTkyMzA3ODYzMDA0ODUyNjA0MTY1YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2Y4YjgzOTFhNjBmMWExNmQ3Y2NmODVmZjQ0MTkwZWJhM2FkODM4MjEwMWU4OTZhMmYzNGMxM2Y3MmE2YTJhZSJ9" + } + ] + }, + { + "id": "claim_0f6c19e889534258a8652c8213b32abf", + "statement": "During full JSON Push, the server should return 409 for a predecessor request_id mismatch, a changed is_full within the sequence, or is_first true when it knows the request is not first.", + "evidence": [ + { + "resource": "repo://hub/json-push.rst#L74-L84", + "version": "repo-lines-v1:sha256:c22768f5fdacab284d7c03262230c085c3925de9453ceadf8f8fb91b9244d14b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNlMmVkZGJhMzlmZWQ1OTgzODg5OGUzMTU1ZjNhZDY0MDVlYmMwOTExYTVhNmRmMDhiN2UwMTczNWRmZjNlNTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY1OTQ2NjEzNGMwOWU4OTJmNTdiMWRmODBmZTUwZWFmODU3ZjJjODY1ZGZlZWY0OTI3MTVhYTA2Mjc2NjAyNDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZjM2Y0N2QyOGU2OWU0YzczZTljOTg0YTJhZDdkYTVmZGQ3OGIzNmI3NjViNzc3YzE3YjliNjY0ZDQ4MTU1MzciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVjZTVkM2FkODEwYjZjZjBiMDQ4ODgzMTI3NGI0NDA4ODk3NzA4OTg1ODVmZDI4YzExMzUzMmM4NjIwNGZlMzIifQ" + } + ] + }, + { + "id": "claim_0bccacfc37634e9294ad7d2265d3f29b", + "statement": "A JSON push sink receiving 409 must stop the active sync and try later; a full sync must restart from the beginning with a new sequence rather than just retrying the disputed batch.", + "evidence": [ + { + "resource": "repo://hub/json-push.rst#L86-L88", + "version": "repo-lines-v1:sha256:dac24793f1c6c91e8a24bc939c86b289df0e9e45d004b6829a53d3556ea69912:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDYxOTBmZGJiNDFjOTJmZWRmNjliNGQyNzAwYTkyM2M5ZWM4MDM2OWIzODRmODQzNGE4MTUyYjYwZWJkODgwOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGU5NjVmMmQwOTk3M2VmM2I3OTYwOTg0NjI4OGUxZDE5NTExZTgxYTdiYzQxOGExNDMzOWZiMjQyMzVjMjYzYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWY0MzIyYzhiZjQ2YjQxYmYxNDY4NDcwNjc2NDg3N2JiYTliZDdiMjJkMjkyMjNhMmNjZTRlMjJmYzRmZjBjMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjczYzgyYjYyZWU5MzFhMGQ2MmJhODZlZjljZDZmYjMxYmMwMDFhNzQzZWUwZmY0MDljNGRlN2QzYjgyYWJjZCJ9" + } + ] + }, + { + "id": "claim_b8f3fb9f422d4d13b0d0800284176c3d", + "statement": "A custom sink's responsibility includes making a legacy target appear idempotent and handling deletion metadata, because repeated non-idempotent target writes can produce different results.", + "evidence": [ + { + "resource": "repo://hub/custom-data-sink.rst#L7-L10", + "version": "repo-lines-v1:sha256:2df310d5a2140054f78a3221eb88f1051b7ad5758221295bbac27f85f0fb91b0:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjcwNjE5MWVkOGUwNjk1NmUyMjhlOTYwNWJlYzc3OWE3NDI5ODRlMjJhNWJhMWYwYzU2NjNjMzRlMDc2MmU3YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjRmM2NhN2MzMjBjZjBiOGNkYTY4YmJkMzk0ZjBjZGFhZDM3YWU2ODQ2YTc0MjQ3ZTg2MDdhYmI1YjczNzFkOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTJlOGU2NjJmNzJmMWYwZGQwNDdmYWQzYzY1NjQxYjMwODRiMmFiZTEyZDlmM2FkYTFkZjg4MDg3Yzg0NzI0MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTgzNmQ2YTQwMTZkMDU2MGZmMjg4M2Y4YjQ3YjAzZDNlNGUzZDM3ZmU2ODIyMzYwMDUyNTg5YjNkOGIwMjllNSJ9" + }, + { + "resource": "repo://hub/custom-data-sink.rst#L87-L89", + "version": "repo-lines-v1:sha256:ccbf5082877c835b23177c28e33cbc6451fbe86750621c5f1131038a20100a5b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjY4ZDZhZTNiZDZkZWYxODEzOGJlM2EzOGM2NzJlZjhkOWNiNDMyNGM5NWI0ZWJkZjU4YjQ0MTM4ODJkMDRhNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWQ4YmU0ZWExMTg1MjZlODZhMjJiZjMyOTEwNzY0NDZmNWIxZTIwNWI4NDk1ZWJkNmY0NjkzMTRjMzk4Njk3YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmQ5NWYxYmM5MjY4MTNmZWQ2MDc3NTRjYzViYzJkZmU1MDllMDkzMmMxZmFkMjM5MjI0MTFiZjJlMjhiMjBhMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWZkN2IxMDMwOWE1OGZlZTczZmZiY2ZkNGQwMGE1NDBhNGQ0Y2UwNjNhZjIzNTIwYTRlNTY4MjhjZGM4ZThlMCJ9" + }, + { + "resource": "repo://hub/idempotency.rst#L9-L25", + "version": "repo-lines-v1:sha256:c145851ff05d7cd1f28482c88c75aa53621a2605292f1de3ee2957fcda33ea4f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ2YTdkYmUzODg0NmUyNjgzYmRkZmNjMDAxYWQzZGQ4YjhlNDY0MmQyMjc2OTliOWE1ZjY3ZTdjMmUyNTVjNzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc2MjI5NmY5Y2Y3NWM3Y2U2NWJmZDUxMjczOTE0Mjg0ZTc3NWM1ZDgwNzk3ZjAzMDFmNDRhZGY1ODdkZTQzZTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVjMGI2Y2VkYzkyNjc1ZGZmZDU5M2U3NGU4ZjFiNzA1NDVkODQ3YmJjNjc5MmEwNTIwMzAyYWY1YmZjZWI0Y2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImIzYTI0YTEzY2RmYjFhYTZjZTE5Y2Q5YTViNWE1ZGFjYWMxOTVkZGE4OTM5ZDYyYzBiYjZkZTE5OGJiMTQyMWYifQ" + } + ] + }, + { + "id": "claim_9e9b8d0038c34c03a4c53e240776505a", + "statement": "Microservice systems require docker.image and docker.port, determine their own base address, and support private image repositories using docker.username and docker.password, separately from HTTP service credentials.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L112-L140", + "version": "repo-lines-v1:sha256:b88410db1b8c9d63124604993559308755677aaebe78330803139d5823d542be:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJhMDVmOTYwYTE3NjZkYWQ1N2VjYzFkNWVjMjM1NWJiZGJhYTUxMjQzMjIyNTExNWM2OTc2ODRhZjU3ODYzYzgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyNjBmNWQyZGNlMWFhMzhlZWE5MWUyOWU0OTI3ODZiMDk3NDEyYjkxN2U5ZjRiMmE2ZWJiZmIzZmJjYWYyMjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L197-L214", + "version": "repo-lines-v1:sha256:9a153dc43ac6753e30cbaabc3fbb95e26e70f79397a346834e1f25d5128da779:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4ZTE5YzU0YTQ0NmM5NGEzNDcxNjMwODIyMjE5NzA2MGQ3ZWJmMGFmYWJlYzk3MWY1ZGM5MzU1YWY2MWYzZDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlZTg5NmY4NDUyMWQwMTU5N2E0MDE5ZDA5MTg0MjVkMzI5YmM5ZGFmMmRlMmU0MjljOTA1MWM0NTYyZjhjZWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L6-L14", + "version": "repo-lines-v1:sha256:13bd8b12ef2fd66e858e1ec1faca02cce088f2c5ecdc01b8951dae39aec606ed:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjkzZTc0MjJjMTgxYjUzNjdiOTIyNWIwZTkwMjk4NjVkNjEwZDhiYzEzYTRiNjQxZTIyNDA0NjU1OThmNjg0ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGY0MGIwNjI0OWI0MmEyYmMyNTFmNzM5ZmNlZTQ2MzY2ZWYwNWVhY2Y1N2Q4MjNkNWNmNDBiMjE2YzA0MGU4ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmU4ZTFhNWRjNzU5ZmUxNTAwZmNhN2E4NDk2OTliOGNjMGJjODkyZTIzZGQ2Yjk3MGZmYzU0MGZiZmQ1YmVmMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjE1OTA1YWMwMDYyODc1Yjk4Njg2NmIxODFkNThmNDQwMzRhZjdhZTljY2E5NzFiNTcyNzc1YTQxZjA3OTFmNCJ9" + } + ] + }, + { + "id": "claim_4bcf8015ced0488a82e9ca04fb59ed88", + "statement": "The documented single-machine architecture provisions user microservices as individual Docker containers, while the clustered architecture provisions them as individual Kubernetes deployments; the self-hosted Kubernetes installation guide is marked draft.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L27-L41", + "version": "repo-lines-v1:sha256:0614a154580f2e371001c6269f3513fdab5d108f5294bb55bf7369dca611b245:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU3MDMzNGVkYWZjY2ZkMDhjYWVkNjBjYTBkNDk5MzhiMDUyYzZhYjUyZmQ2MGRlMzNmMjEwNGY5M2NiMDFmOTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhODNkY2Q2MmRhMDY5ZTQ1MWEwNDFlYzJhYjIyNWU3OGM0ZDFiZTZmNjFjZmRhMWZhMjVkYWFhZmJiYWY2NDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ0Yzg1ZTc5YzM1NjViYmFmOGU2ZWM1NjQ1ZGE1NWY4MWNkNTc3MTY2ODhhMWFhOTRiZTIwMTYzNjU5MDVjZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJhZGI2YzI1M2IwYjFmMjM2NDMwZmExYTdjNjdhNDEwZDhmODc5YzljZDg0OGZmODRjNTU4NDAzNDM3ODI4YjQifQ" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L55-L76", + "version": "repo-lines-v1:sha256:7511dc9ab37e846b032cb2b8f6aaa689a9e6e114d619d9f2d0d3e04a976510b5:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2ZWYzZjlmNjQwZTYyZDk0NWQxNjNiY2MwNThjZDQ0YTFkNjZkZjYyMmFiZWIwYzY3ZjZhYjMwM2JiYTA0ZjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEzZDE5OTQ5ZThjZTJhMTMxMTI0YTk4NGNkMDJjZWYzOGRhYWYyYjE4MzA2ZmQ4OGZlMDljZjg0YTBmNTlkNDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNlZWI0MzU2MGYwYTQzYjdmZWRhYmY0NjM0OTZhOGE1OGUxNmUwOTdlZjc0NzE4NjUwNGNkMzVmZDM2NGMxNGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ2NjU0ODJmZjk0ZTExNzlhZmMzZDNhY2I0NTk1MTljZWY4NjI2MjBiNjU1ODU0NGY0ZDRmNzlkNjcwODJjMTAifQ" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted-k8s.rst#L7-L15", + "version": "repo-lines-v1:sha256:ab329771d88db0b72eb5f8569f98a95fb04ff2ae6ac02c42c6917903129824b5:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2Y1MDYyYmU0OWI2MGZhNjI0Zjg2NDY5M2IzNTBkZDkwNjEzZWZmNzgzYWMzMDQ0NmE5MjIzNzQ0YmQ2ODA4NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzNkNjk2YWQwYjBjMGU5MzMyNDE4MzlmMDk5M2Q5MjY0YjA5ZGQ1YjhlZTZiYjU0NjllY2FlNzA2ODhkNTIzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTAzODE2Yjg4YzM0NzQzYzU0MjM4OTVkNWE3M2Q3MTBkMjUxZTJkNmU3YjJkNzM0ZGEyOGI3NmJhNDdmNzY4MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2MyNTRkMjlkMTllZTU4MGY0ODZhZDg0OWYyMWI0MzEyNjUxZDRmMjMzYzQxMjA4MDMwZmIwMzgzMzYwNTQxYiJ9" + } + ] + }, + { + "id": "claim_b7414e4882b2462ca83cab84578c9314", + "statement": "Managed microservices use HTTP by default and use_https enables HTTPS; URL and microservice certificate verification defaults false, and URL custom_ca_pem_chain supplies verification certificates when verify_ssl is true.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L184-L194", + "version": "repo-lines-v1:sha256:a47729788ec8663af61e7d41a26aeff6c6958a9300c725329937fc48cb1bc7eb:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM5YjVlNjg1ZDU1MTliZDY5ODY1NzhjNmUzZmM4ZGY5YjM3OGM5ZTJlMmUwYjc1N2EyNzUwODg1YTY1NmViMDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY1NTg5OWZmN2NkNDVlMTJmZWU4YzAzNTdkMTNmYjE1MTVhYjIwZTY3N2NhNTQ3ODk3MTkxY2JmODEzOTQ5ODciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJiYWJhOWViNjA4NWJjNDdlNGI0Y2EzZDgwZmFhZTgyYTQ4YjNkMmE3YjdiMGVmZjEyNDYwN2ZmMGFiMmMwMjAifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L86-L97", + "version": "repo-lines-v1:sha256:261a57a04c1daf72643c05df723a612f3338d12c0aa633951b81b59091ff98e4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg1YzFjODk0MDBkYzVjYjE5NzM5NjM2ZWMzM2YzN2Y1ZDBhMTY1MTY5YzAxODE3ZjdjYmQxNTBiMDA4NmJhODEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJiNGIyODEyMDY2YmMwOTAwOTNjNDU3MmE4ZDRkYTMwNDM4NGRkMWYyY2QzYWM1MmM1ZjBjMTY1ODgxZDQxODkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_7afd53a4e0874bf5b9c0c468ba78c5c9", + "statement": "Microservice IDs are local-network domain names constrained to 2–63 characters, an ASCII letter or number initially, and letters, numbers, underscores or hyphens thereafter; lower-case letters are advised to avoid DNS lookup errors.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L90-L97", + "version": "repo-lines-v1:sha256:a80925d34453c27b769a11ac62c8fb56a4405b5d3d6543323fa2837c535dda96:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWU1MmE1YjlhMThiZDdiMjZkZTBlYmQ5ZTZhODAyOTJmZTkyOTkyZjk1YzI3NjJkYjIzNTZmOTkzODFlNGI0NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDNjOTI2NTRlOGNkODUyOTQyYzc0YmI0Y2IwMTQ4MWVmZDQ5MzEwNmYyMTJlMjJjZGYyYzY5MWFhODg5ZDE1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjc5OTY5ZmEwZjE0YWI3ODEwMWY1ZTllMTY5MzdlZDYwNTYwZGU5MzNiMDBmNjU4MTQ0ZjFjNjkxZjZkNjRhZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + } + ] + }, + { + "id": "claim_97458699bb2449cfb378b875e10be039", + "statement": "Microservice docker.hosts provides container-local hostname/IP mappings, URL systems support HTTP(S)/SOCKS5 proxies, and the Service API proxy forwards requests to managed routes at /api/systems/{system_id}/proxy/{rest_of_path}.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L162-L166", + "version": "repo-lines-v1:sha256:de4ee79b6459b024e9ee465c9521cc65692379cca1724c6ec459d6d8d7051520:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTc0NmIzZmQzMDdjMDgyNGEwMjllMjYzNzZmMTZiM2JhNWIzMTE0NDI1NWMxMWEzOGE2MTg3MjI5ZjQyODQzZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWQwNzBiOWMwZTNjM2FhN2M5ZmUwMzIxMDcyYmFlM2Q2OTY3ZGFiOWViYWY4N2IzMDkzYjQzOWI0YTU1NzZlYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTRlZWExNmZhYmRkYjRhMDZkZmQ5N2VhZWI3OGI4NDU3YzlmNzIwZDdlMDZhOGZkNDM2MTVjZTE5NTJiZTAxZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDE5ZTc0NWY0ZWQ0ZjEzMzQ3ZTcxN2ExMTkwNjNhZDhmMDM1MGRkZmZmYTRjZTU4YjA1MzhkNGExNTFlOWIyNSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L167-L174", + "version": "repo-lines-v1:sha256:c7ed218f4357937be9f96123fe11e0826d6ceb57a877c1fe62583e21225b81fa:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTAxMTVkN2U3MTRhOGIzM2Y3ZmNjZTdmYmM1NGE1MGYyOWU3MDU1ZWNmYmU3OGY5YjYxZTFhYzY2NTg4ZTBmMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2U4NjlhYjY5N2UwZmZmZWJmNjkyOWNjNTQ0YmZiNGFjNGUxMzk0NDA5NTY0ZTNmNGY1MGYwODRjNGQwZjE2YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2401-L2440", + "version": "repo-lines-v1:sha256:7d47477b296e00ffb7e4f41f0a397295c66cb49383f5eeb9ae1fe02e50fb01df:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1ZjBiNWIzMWYzNWFmN2EzNjJkN2I5OGM0NmZkN2Q4MWRiOWNiZDBmMzA5ODE1ZjY2ZTE4Yzg4Yzc5NmNkOWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhlM2U5ODBkYzc4MjE5NGFmZmVjMTk1MDc3Y2JmZTE3OTc4Y2I0YTFmMTNkNDY5NzdlZGZlOTQ0M2NkYzQ0ZjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY2Y2IwOTY1YWRlYmUwOTZkMmJjMTBlMTUzZjA0YTdhN2VjNDdkMWE1Y2JlMDdjMTQzMzJkMjc3ZTI5ZTc5MjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImViYzQwYTc4NTcxNjhlNTYyODYwYWM3Njk1OThkYjEyYTNhNmFhMWU2MTE2NDI0Y2I4MDYwMWM2MDM5MDZjNDcifQ" + } + ] + }, + { + "id": "claim_f2583b1d8f184068802515d15376dbb7", + "statement": "docker.skip_pull defaults false and microservice restarts, including configuration changes, attempt to pull an image; docker.pull_image_cron_expression schedules image pulls and restarts the container if a newer version is pulled.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L169-L181", + "version": "repo-lines-v1:sha256:14939252847de3ce2797c5b488ae37372cb3830458850e6663c814c65ffeaea1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFlMzhiNzhiMTMyNzVkNGZiZTgwNWM0ZTYxYTFhZWQ1ZTg3NzgzN2ZlOGRjNmUxZmZlMDA0Y2M3YjFkZGUxN2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4N2E5YzQ5OWE0YmZjNjA0NTIzZmY4Mzc3ODZlODlkNTE2OWIwZGJkMjMwMzY3NTM1MGI5ZmU2MmE2MzJkYzgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImIyNDdhODI5ZThkMGM5YmQ4Mjk1ZGExYjE0NzU0Y2YwNjQ3NDBiYjU0OGJlYzNmZGM3YzhjYzZhYzZhNWNhNGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ4YjhhZTQxYWUyNmM4ZDYyMjg5ZTJmYWIwYWE3MjdlODk3M2YyNGRlMDIzOGQ0MTdiOGY3NDhlM2ExNjUwZTYifQ" + } + ] + }, + { + "id": "claim_0f73ed0dbb1f4b5baf92b929da6bb318", + "statement": "Microservice eager_load false permits delaying startup when no pipes reference the service, while true forces startup and overrides service metadata; its documented default is true except false on developer subscriptions.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L230-L237", + "version": "repo-lines-v1:sha256:a08f70875665743a29d5a149374b012b597ec4c3de64c99701c67036fc15ccb7:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2QzNmZlZWQ2NjI0YjAwMzllYjEyODgxYWU1NTQ5ZThmOGZlMTg2ODc4MmNlOTBkYTFlYTgyNjAyMmUzZjc2NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQwYjM2MmQ4MWNkMDhjMTYzZjM1Mzc0NTQ4NjI3Y2FjNGVmYWRkODA3M2QyZDA4YTc3ZGRhNjc3OTNiNWFhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNGFiOWQ5N2Y2YjdhMzJhNTIxZmNkYzA1ZDBjMzY3NjYwNjk3YmE5NGYyMzg1YjcyNjY3MTU1Yjc4YjgwNGNiZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTYxY2JjMDQ3NzU3NjgyNGQxMDQ2Yjg3NTU4ZTI4YWY2MWIxMTI2ZjA5ZTY3ZmE5MzE2ZTU4ZTE5NDljMjMxZiJ9" + } + ] + }, + { + "id": "claim_fd6120655c3b41e29da479d7b8483850", + "statement": "Microservice docker.memory defaults to 128 MB, and the documentation warns that container resource use affects the node and recommends small containers and streaming rather than storing complete transfers in adapter memory.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L144-L147", + "version": "repo-lines-v1:sha256:6574de099a17b4c48f9722f4b4c35056a6fc8132dc1f15c789476940a0637b1e:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDkzODRiZDk2MjU5MDUyMzRkNGZiY2Y0YTBiMjk3MzE2YjI5MWNlYzMwMjUxYmM1YmU5MzA0NmRmMjBiMmY2MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDVkNWVkNWVkYjhiYzQ3MmUwNmU1MGEyODgzZGEyODUwY2UyNDhkNzc4ODliZDBmMjY0MTVjMzc0MzFjZGE2ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjU4MjljNWYwZWMxMmQyYzhhZjM3MWY3ODJhYjAwY2I1ZWFiZWQ3ODIwOGZkM2UwYTc1NTMyMGJiNzc2NGM5ZiJ9" + }, + { + "resource": "repo://hub/microservices-in-sesam.rst#L31-L36", + "version": "repo-lines-v1:sha256:c15db431391b4cdb7bb282f2327f3f099233113a152d00f867200f6eb29b34cd:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTBhZmZkNTk5YzVkZjE3MDExOTZhMjJlNjhmYjc3NTlhYjQ5ZTNlOGVkMzEwN2JjMzZlYThlNTFmYTk3MjdjMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTI3MmY0NDA2OWY2NWQ0MjMzYjAzY2QwMjg2NmYxMWQ3YWVjY2Q3OWY3NjYxMzBkMWJlOWU1ZjQ0NDUyZGNjMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTI5YmIwMDNmYjI2MTVlZTQ3ZTJkMTc1MjBmMGRlYWFmMDE5OWIxYWY0MzdhMDRjMjM1M2I5MjFjMDQ2YTE0OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWM2YTYxMzgzODYwYTJjYjJlYWRjOWIzNzI0ODgxM2Y3NjgzYzkzZjg5NGIzYzg4NTg5ZWQxODhmN2MxMDMzYSJ9" + } + ] + }, + { + "id": "claim_8720be2fd2834e648b274a7763cc5aac", + "statement": "Configuration values can reference $ENV and $SECRET, and docker.environment passes strings unchanged but serializes non-string values as JSON strings; adapter-wide values, endpoint-specific URL values, and protocol state parameters serve distinct configuration scopes.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/secrets.rst#L6-L8", + "version": "repo-lines-v1:sha256:dc8c2cbde8550b40bb113bfaf8b31dd020e2ca274ae05bbf41854ae63cf39364:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWQ5MWUwYmZkNDQ1NjVhMzE2NGNjNGQzNjE0ZjJmM2I3YzAxZDQxZTcxY2IyOGJjNzdkZTdmZTVkNzZjNjQ3NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzI4NWJhYjBhY2ZjZGMzNjdmNGMzOGQyMjNkYmZjZmFiOThmMTEyOGQ2MGZjMjM4Y2UyYTgyNWYzODRmZWE2ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjhjMDNhYzdiNTgzNmNmNTQwMTRjMTBlNzlhNDZlOGY5ZjJjODdkZTUzNTE4ZjdiZTM2YjcyMmZjYTg2OWMwYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjIsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjIyN2E2ODA3ODQ3NWFkZjMzZjQ5YmQ2NDQzMWJlODMzZTI2ZmM3MDY3YTExYTBmOGIxOWViM2EwYjE5MDMzNSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/environment-variables/environment-variables.rst#L6-L7", + "version": "repo-lines-v1:sha256:22e6498fc33987acd7fde82f619ba8dc2e9811dcf0b14f0ebd5f898f41c56b26:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWFiM2MwNTZkOWJmZDk0NGQxM2FiZGI3YTEyODkwNjBlYTc1MGUzMzhlMWFiZWFjYzgxNjIwZjdkNGQ2ZDg0YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGRmMzg0ZTlmYTZhMmYxMDg4ODAyODQ5ODhlNmQ2MTkyNmJkZWFhNDVmNDAzYzQzNmQ5Mzc3NDA0ZjY0MDRlNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2QxM2Y5YzdjYTVlYjQ2ZTFkZjZhMzVmOWYwMjk2ZTZkZGIyMDQ0YTczOTlkNjY1NTNkYTljMTcxM2I3NWNiNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWRlZTkyOTFhZWZlYTM4ODcwZTkxNGRjNmY0OTBjOGEwODJiYmZhYzI3ZGI2NDAxZmFkM2NiOTgyMmI3ZGJjZSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L124-L128", + "version": "repo-lines-v1:sha256:2d02254198821d395f8601dd8f0e46757f9dfc18378f00efd480a9bb0078c7ee:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODUzZjUxOGQ5MTdjZmY1M2I3YmJlMDNiMDA0MDAwYzFmNzlmZGVjZjIwNGFhNDM5YWVkNWZkOGEwZDQxYTVlNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDBiMTAzOWUwZWUyZDE1OWQ1NGY4ZjhhZTk3MTg5NGNiYzQ4OThiY2YwOTdmZDBhYjRiZmM3Yjg5ZGZhMDBlMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + }, + { + "resource": "repo://hub/microservices-in-sesam.rst#L14-L24", + "version": "repo-lines-v1:sha256:7feea41159109da62ba3e2996d5d4de6d76ab349a2e384532dacb56eef887cd3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjNGU2ZDNkZGQxZWYyMTY3ZWUwYWY0NTljNzY0MTNkMmE0ZGQwMzI3NDJiODA1OTE4YzdmMDg2ZGU3YmM1ODQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk3MzNhZDc5MjNkZmVjYTg0MDRhMTUyNjg5NzYwOGJhM2Y2YTMzODI4YWExMDljMTUyNGJhYWJiOTIzOTA2NzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY1MWUyNWMyZTcyN2M0MmYzM2Q1NzA5NjI2ODM3ZjQ1NmQxYTE5ZmQxMTk1N2YzMjhhZDJlMDEyMjRkZmY1MTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQxMjBiYTExMjEyMDA5OTFmMDUwODhjYTBjMjE5YjI2N2U5ZGIwOTQwZDVlZGFkOTdiYzliMjdjMDU2ODA2MmYifQ" + } + ] + }, + { + "id": "claim_96cdbc85dc444b7babf066181ca5f8e9", + "statement": "Secrets are write-only and intended for credentials, with local secrets recommended; deleting and re-adding a system removes its system-local secrets, requiring re-upload.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/secrets.rst#L6-L10", + "version": "repo-lines-v1:sha256:d22d17c95c8159d3de42a67f87a74605774655a02fc85a60c296e52cd9fdb56f:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWQ5MWUwYmZkNDQ1NjVhMzE2NGNjNGQzNjE0ZjJmM2I3YzAxZDQxZTcxY2IyOGJjNzdkZTdmZTVkNzZjNjQ3NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjc4MmY0NjRkZGYwN2RjOTZmZWUyMTNhNDdhYWE5MDZhNDFiMzA0ZWNlMzMyOTMyN2EwMGViMmEwOWEzOTY1MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjhjMDNhYzdiNTgzNmNmNTQwMTRjMTBlNzlhNDZlOGY5ZjJjODdkZTUzNTE4ZjdiZTM2YjcyMmZjYTg2OWMwYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/security.rst#L176-L187", + "version": "repo-lines-v1:sha256:8a699b0ffecb2619d78e0b1d761b1416fd79b6cc24f6cab5b8957a93789bbe26:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg5YzdkMTU5M2NkMTViNjEwNjY1Yjk1NDI3YWI0ZmMyYTE2NzM5MmVmM2U3ZDYxZTAyZTRlYmQxMDRhZTEwYjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkNDE0OTczOGE3ZjJmYTgxNTU2ZGYzYWNmODE2YjIwOTRmNTVjMGJiMDYzZjgzM2Y5NGE4MzU2ZjI3MzA5ODIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImMxNGE2NjA3ODdmYzdmZjVhMDYyOWQwY2ZmMWE0YTQ3MGI4ZmU2Y2RlMTFjMDRkZGUyMDBjNjYzMjg4MWM0NDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAwZmQ0ODNkOGQxYzVkOTVkMWE3NmNkNGY5ZDM5ZWRhOTZmODcwYjNiZWJjY2YyYzZkOTNjYmI3ZGViZTUxMDgifQ" + } + ] + }, + { + "id": "claim_9b185da0c3f64d858c45349923534c47", + "statement": "Most Service API calls use a JWT supplied as Authorization: Bearer followed by the token, and actions are controlled by permissions; Pull and Push examples use the equivalent lowercase bearer scheme.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L22-L49", + "version": "repo-lines-v1:sha256:6ee3c279afa2d38047b73da7bb7607f03baf346d71a271a2f9cc871794bea2c8:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhNjEzYjEyMThmN2UzMThiYTM0YzdlMmFhZWEzNjQxMDJiMDAwYjY1YzRiZTViMTA4MzA5Y2VjZGJkMDU4ZTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRkNTNjNzhjZDYzNGZmZjlkZGFkMjEzNzYwNzBlMjQ4YTk5NjBmODdhYTk5ZjU1MTc4ZTU3OGQ3YTE5NmZlM2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjEyNGI0YThiMTFlMGJjNzEzNTc1MjIxMGEyYmNjZWJmNGY4ZTVjNDc1Y2E1YmE0NzlmNzFlMTUyODFmYjA3NmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY4NTU2ZDEzMjcxZmYwNjU3MDNmOWZmYmVhOGEzNWFmMTJhMjczOGI2NmVjMDVjMTM3ZGVlZDFiZjhmNzJiNTgifQ" + }, + { + "resource": "repo://hub/documentation/operations/security.rst#L30-L63", + "version": "repo-lines-v1:sha256:83bd6116ee75641a1e3d9e3e68ced8121415062033cb33a7b008e13447ecdb59:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNzMwZjc0MjE0MmViMzM5MzU1MDM5ZjU5OGJkZTU1YjY5MTRhNWFkMTY5NTVkYTIxYTk3OGY5Yzk0OGZkN2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU2ZDg2YjdjNGIyNmE1MGU1YjVjY2Q3ZjRiZTIxNzdkZGNkY2I1OTU0MjY1ZGYyYzQwZmY2Zjk1MGRiYzk3NDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzNTkwYjRhYTAwZmU2NmExZTJlN2Q0YjdlMWU1ZDU3OWRjMTdiMjc1NjU0NGU2YmRjYjhmZGQwNTE3Nzg5MjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhiOTc1Y2Y3OTBiNGMwNTRhNjQxMTFhODgwM2UwNWExYTk2ZjU0NWNlZWRhNzUzNjAzYTU3ZDA1OWEwNzIwMWIifQ" + }, + { + "resource": "repo://hub/json-pull.rst#L166-L172", + "version": "repo-lines-v1:sha256:002f91c2d81b7405190e1eebaaebc0cdf3ce119857a4adba40a5e5159e409547:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTYyM2FiMzI1NGVhZmRmYmM2YmVlYmM4N2M4OTk0YjI1MjZmY2M1Zjc4ZTg1YjdkYjY0YTY4NzcwNDdlNmZjMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTllNDA4NGU2MjFiOTViNTNhMTJjYTI0NWNiZjUzNTRmMWM3MjA1ZjllMTcwODk0Zjk2ZmFiNzg2Zjk2MGRhMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2E2ZmNjZGEwNzIyNzU1NzJhZmZhM2NkM2RhODhhYTY0ODhkNDgyZGZiMDRhMjlkNjIzNGQ0NDE2YTA4ZGE1MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmZmN2QwMTdhZTI1MjhiZTE4ZTA3MzA0YTIxY2IyODE2MWY5Yzg1MTgxNjUwNGJiMzcxNWU0ZmMxMDFhZjhkMiJ9" + }, + { + "resource": "repo://hub/json-push.rst#L117-L123", + "version": "repo-lines-v1:sha256:67beb743bfbc9ef8f90a5d2c26d7e26d685879b5c5714e76b5bd734435c793fc:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTYyM2FiMzI1NGVhZmRmYmM2YmVlYmM4N2M4OTk0YjI1MjZmY2M1Zjc4ZTg1YjdkYjY0YTY4NzcwNDdlNmZjMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTllNDA4NGU2MjFiOTViNTNhMTJjYTI0NWNiZjUzNTRmMWM3MjA1ZjllMTcwODk0Zjk2ZmFiNzg2Zjk2MGRhMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmU4YjM3MDZkZTU0NDFhMjU5YzIxODY2ZDVkZmVlMTg4N2M3OWY3MGIxMzYzNDgwNThkM2IzYWU2YmJhMTJkMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTc2NDE3ODg2ZmYzNWE0M2Y2YzZmMzBlYzFkMGIyNDk5Yjk4MDc5YTY3NTU1ZTU5MzgyMmM5YTgwMmE5ZWQ4OSJ9" + } + ] + }, + { + "id": "claim_482f68da18dc480dabc286c689dc896c", + "statement": "URL authentication is opt-in with basic, digest, ntlm, tripletex, or jwt, requires scheme-appropriate credentials, and JWT authentication requires jwt_token and overwrites Authorization set through system headers.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L101-L135", + "version": "repo-lines-v1:sha256:cc6b1414b03523c7f4947281c87866289028f1b609e960bb0b6589951cfa6857:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4ZTE5YzU0YTQ0NmM5NGEzNDcxNjMwODIyMjE5NzA2MGQ3ZWJmMGFmYWJlYzk3MWY1ZGM5MzU1YWY2MWYzZDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1NWNhMjJlMzY1Y2I4YWQ0NjkzMmY0ODY3NDVmODllOWEzMmYyNmJkN2IwZGE1YjFlY2ZiNGNlZWNjMmMwYTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_6d56f1c9ff52413ab76b9ba890361395", + "statement": "Microservice HTTP authentication is opt-in with basic or digest, and username/password have no effect without selecting authentication; adapter upstream authentication remains custom implementation logic supplied with its own credentials.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L197-L214", + "version": "repo-lines-v1:sha256:9a153dc43ac6753e30cbaabc3fbb95e26e70f79397a346834e1f25d5128da779:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4ZTE5YzU0YTQ0NmM5NGEzNDcxNjMwODIyMjE5NzA2MGQ3ZWJmMGFmYWJlYzk3MWY1ZGM5MzU1YWY2MWYzZDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlZTg5NmY4NDUyMWQwMTU5N2E0MDE5ZDA5MTg0MjVkMzI5YmM5ZGFmMmRlMmU0MjljOTA1MWM0NTYyZjhjZWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + }, + { + "resource": "repo://hub/tutorial-custom-data-source-microservice.rst#L120-L136", + "version": "repo-lines-v1:sha256:7fe9a631e5063b3854984b61eee737ce6a0632a10879be8aaa499e00d688bd81:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5MTMxMmM1MzcyNmNlOWQzZTIxYTc0YWMwMzM3ZDA4NWMwNjlkOGM0ZDRiODgzMjg0ZmIwM2QzZTlkMGQyNDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZTgyZjljNzYyMjcxMTRlZGQyNDljMzRmOTc1NGE2ZDNjMTUwNDkyOTg0MDQwMTRmMDlhMmQ4MzQwMDBhM2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU4NDRiNzYyNTA1MWQxZGNiZTEzYTI3MGQxMWQ4Yzg1NGI1MjkxNzRmOGQ2NjcwN2FhN2ZmODliZWMzZmI2NGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMzMjJlNWQ3OTliMGVhYWU1NTg3ZDI5YjhiYzNkNWJhZmU2MTI1MzY0NzAzM2RmNTY4ZWU2YTFjYzVhMmYzYTcifQ" + }, + { + "resource": "repo://hub/tutorial-custom-data-source-microservice.rst#L70-L76", + "version": "repo-lines-v1:sha256:2491898a2e190d4c148b63d8d928d292564ad955297d76a3a157f63a3f28ee09:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjY3MGQ1NjU0OTc5YzQwNDYwZWUyMmY4YzUzOGYxZmZkMzMxMzU2ZTQ1YjE0ZjYxOWY3ZDJlMjE5MWIyN2NjMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTM1MWM1MzBlM2IzNTg3N2ViNjM3YzkwMjVjMzI2Mjk4NGViZTQwZjMzMWJhMGRmMDRkMTI0NTYyOWFiMDczZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGNiN2NkOGQxM2Y4NTM3ZGNkZDU5NTQ2ODAwNWFiYjg3YmNkYjQxYjE0NTI0MjQ0ZmFjNDI1ZmFlMDViMjgzYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGU0NTYwNmE3NGQ3M2E0N2JjNGZmYzc4YWU0YmMyYTg0MzU0YWIwMDkyNmE4NzYxMzI4ZWRmNzYwYjNkZjk5ZCJ9" + } + ] + }, + { + "id": "claim_c58d4b212a8645a0a2baf817674f9468", + "statement": "URL OAuth2 supports client-credentials and refresh-token grants, cannot be combined with JWT authentication or jwt_token, requires TLS token and target endpoints, and defaults refresh_window to 30 seconds before expiry.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L141-L152", + "version": "repo-lines-v1:sha256:adf67eadf978b476846d16488df9b9a689238c4d347beaaa01618283617d7f05:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJlMDQyZDI4MDc4NTNiYTQ3MDNiN2EzNzUxNzBhNzIwMTUyYjMwZjVkOGVkMThiNTM0MjRhMjg3NzNhMzkxODkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxODk2MmVjMTM4YzU2MTg3YmY3MzJiZWI1NzljMWEwYjhhZDI4ODY4YTU1MDQ1NTUxN2JiNDIxYTdhN2VjNjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgzYmEyOWMxY2ExMmQ1YmM3Y2M5MDUyZTUwMTk0ODhmMzk1ZTcyYTY0MGViYzNhNDRlY2FiZTQxMjk2MmJhZDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_269e0a10cc1243f8ae5118b42fc21fdb", + "statement": "Receiver validation_expression renders a Jinja template on each request, accepts empty output and reports nonempty output as an error, and exposes url, request_params, request_headers, secret access, and filters such as decode_jwt.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L153-L168", + "version": "repo-lines-v1:sha256:9f5bda6ee8f5424cc3eb3d91e9c2ffaa43bbc370d3671dea46ef956002fff410:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYyZTQyNTU0NjNlNjY5NGMwZjk5ODEyZmFlMzVjY2I0YjkzZTY3YzYzMzA4MzllNTMzMjU1MzA3MjM5MjJjMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhNTMyNDc3M2YxZjI1ZDYxNzBhY2UyMDRlNGEzZDc3MDEzMjdjN2MyZTAyZDUzYzkzODZjZDMzMDY1YTMzNTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5YWQwNzZkMzdlNjE1ZWYyZGY2MThjNzk2NmU5Njg4M2I3ZWJmZDE5ODhhY2U1Mjg2ODBiMTM5YjVmMjlkNDIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ5ZjAyZTZhMDFhNDA0Y2Y2Y2Q1MzM4YzhhMDlmMGM0ODg2NTU4NjYyMGZiNmM2NGI3YzFhYWYyYzI3NTU1MDAifQ" + } + ] + }, + { + "id": "claim_45726e2d80d74c1386c12cdae01d66e6", + "statement": "Receiver custom validation without JWT assumes write_data permission granted to group:Anonymous; system secrets take precedence over same-named global secrets, and using them requires the pipe to have permission to read the system.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L160-L172", + "version": "repo-lines-v1:sha256:c54e7d5c4ab7723c00c334e726296b49119b2725c27827beb89c4edd105c8fdc:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNiOGJiNzA4YTVlZGZiMmY2OTcyODIwNWZjMjg2NzM0YWRiYjg0YjIwOTIzM2ZlN2NmODZjYWZhNmFiZmZkZjciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQwM2QzNTM5MzUxNGU3YzQyNjJiZTAxODM5NTVjYzgwMmUwYTk1ZmNiMmNlNzFjZjM5ZjA2ZDhjZDU0MTIzYjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNDA1N2MzOGVmYzE2MWE1OGQ2M2M3NzAxNGZjNDU0NGQwY2UyZjU3MzA1ODJhZTFiMDhmMTNiNjE1NTU1NmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQifQ" + } + ] + }, + { + "id": "claim_8448927a94bf4ba3bbf633eeee9802cb", + "statement": "Receiver POSTs set sink-dataset completeness to current time by default, but a positive integer X-Dataset-Completeness header overrides it, with microseconds since epoch recommended.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L177-L182", + "version": "repo-lines-v1:sha256:fb8675dbe6d30c3a472fec1d08514645e2eda94ebd4737bec9a30f64330f97ac:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjg3OGZjNGUyNWU5NjYwNDEwNGE1NTMwNDQ4MmJmZWIwYjYyNzhjNTE5ZWVhYTkxODZmNTYxNTZmZmRkNTlmZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDMwNjAyNzNhODNmYzMyMmE0MWQ1YTMyYThlYmU5ZTUzNTQzN2MwYjExNTE1ZDJiYmJhNzU4NTgzZjJkOTZlMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGY1ZmRlZmRhMGI4NDY2NDRiMDE2MjNiN2Q4NGRhZGEyMmQ1ZTc2YTc4NzcyZjJlZjc1ZTYzOTM0MDI3NDk3OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjJhYTcxZjM4NjY2ZWY3YjcyMGE4ZmIwOGNlMTQ4NzJlYjI3MWM4ZjU4ZjYzODY2NmUwZmUzMGE3OTI3MjgwMyJ9" + } + ] + }, + { + "id": "claim_2c312e555b3c4c908e1ed10c0ffc9e36", + "statement": "HTTP endpoint source auto_populate_dataset defaults true, initially marking the sink dataset populated, and can only be specified for dataset sinks.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L83-L88", + "version": "repo-lines-v1:sha256:deb684b57e3a791b937214bae05e880f06a4641b73c0b1c298d32e928bc2e27e:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTZjMWExZTg1MmU4MmI3Y2M5YTg3ODFiYzM3YjFlOWE3ZWRjOWQxZDYyZjY1M2IxYTBkMmJlYzczNWQ3OWI5MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzcxZmY4MTEzNzg0ODQwMDhkZjJhZWNhMWE3MGZkMjVkM2VkMzk3ZjQzMmU2MGViMzdmMjIwMDY5YTU3ZTY2OCJ9" + } + ] + }, + { + "id": "claim_9f4c193eea1d46c6a1b0c61eb8ac4c55", + "statement": "URL and microservice systems default connect_timeout to 60 seconds and read_timeout to 1800 seconds for their HTTP connections to the service.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L218-L227", + "version": "repo-lines-v1:sha256:6dc9ee870fc9dcc609d0102c297192cf696bc1deadbeda8cccbad246c71d32f7:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU3MzQ3YzZlZDUwZjA1NWJkNmMxNDJhMGVjNGZkZjFmMjNmMDNlZTk0YTEwNmYwNWI0MDQzNjdkYWI4NjYxOWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlYjA2ZmFkNTc4NzIxOGEzZDBkNjNkNzI3NGQwYzc0MGI1OWQ0OTQ4NzljYzRjMjljMTZjOGE1YzcyYmRiYWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZmZTRjM2U0NDZmYjc3OWNmZjI4NGJlYjVkYTZiMTg1ZWViOTZlMGVmYWEwZmU3YjU1NWQ4ZmRkNjE5ODk0MzcifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L178-L187", + "version": "repo-lines-v1:sha256:9236741a4d00c18183293e32bcd517fac84c56f55152d3d057d3115da2b28c86:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU3MzQ3YzZlZDUwZjA1NWJkNmMxNDJhMGVjNGZkZjFmMjNmMDNlZTk0YTEwNmYwNWI0MDQzNjdkYWI4NjYxOWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlYjA2ZmFkNTc4NzIxOGEzZDBkNjNkNzI3NGQwYzc0MGI1OWQ0OTQ4NzljYzRjMjljMTZjOGE1YzcyYmRiYWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNlYmMyMzI2ZmU3ODViNTMxYTg4NWY4MzAzMDM4OWM3ZmI2YjAyN2E4N2FiMzg1Mzg5NDhmNzIxZDJlYjRkMjcifQ" + } + ] + }, + { + "id": "claim_cb43d41f4213498c9e0f1bd17ae57cbd", + "statement": "URL retry_strategy, also referenced by microservice systems, sets status-code-dependent pump defaults using codes, ranges, lists, or default, with directly configured pump values taking priority; it supports max_read_retries, read_retry_delay, write_retry_delay, max_retries_per_entity, max_consecutive_write_errors, max_write_errors_in_retry_dataset, and batch_retries.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L240-L243", + "version": "repo-lines-v1:sha256:c167b24f8152a26a0113885c51a3cf29fe057a94274ea851a5c008492fbb07fa:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzZhMmQ0MzVkOWZjOGRmZjRlZWViMjJjMWRhZDVlYTQxODM0MDE0OTY0YmU4MThmMzQ1ZjM0MjMyZmNhNzU1MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzY4ZDViZDk4ZGZhMWJlN2U0ZjQxNDE3YzFlNDFhNmY1NTZkMzgzY2E3ZDNjZjI2YzQ3NTZmYzYwZGQyZDNjOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTIxMTUzMWYxOTZhY2NhZjAyYzEwYjc2YWMwNjg2NTQzZmY1NzJjZTIxYzMxNTg2NWZiYzJiODg3YWRlN2NhNSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L198-L208", + "version": "repo-lines-v1:sha256:e2234e1397e52e0ab1b48365d0df09d7c2ca8df2f8cdeba36984281fe9bec2b5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ2MjcyYzIxNWNhMjI3OWJhMmZmMTExNjkyNmRlMzVkNTdhNmNhMDQ2ZGZhNTg1MDM4NWQyMjg1ZGVhYWRkNWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA0YzcyYzA3ZmZlNzcwNDE1NzVkY2ZkNjk4ZmI0ZWZiY2IxM2I2MmMyMGI0NGZkZjc2YjE3YjY2ODdhZWZmNTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJiNDc0NDgxYjJiNDE2MzhhYzlhZjBlZmI2MDE3MWM0NzM1NWUwMTJmNjY1N2FjMDJhOWE5ZmE5NGY4MDA2YTYifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L248-L277", + "version": "repo-lines-v1:sha256:873660eb7c8502df4d64683267b1dda99fb149d4120024710a9c6cc0aff58207:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI1ZDdjODUxODVhYjUxZmY0NGZiYWYyMjgxNzUxMzA4NmE1Y2Y3OTI1M2JhODkxMTVkZDgxZjhjNzU2MmNiOGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2YjA0NDkxNDY5NzIyZTgzNjNhOTRlNDA0NDUzOGUwMTNhMmEyMTdlMzZiMWU1NjhiYTYwYWNiN2I0YzhmMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdhZDNlM2I2ZmQ2NTdlMDg2NjYyY2ZhMDk4ZDJiM2EyMTNkMzllODhhYTc3YWJlNDMwMDM0MjZlODJkZDg2ZjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI4ZDg2Nzc4NjE1ZjZhZjQ3YmIxYmM0ZjQwZmFjZTc1Njc0OTc2OGU1MTExZjExNGNmYTIzNGE1MDYwYzI1YWYifQ" + } + ] + }, + { + "id": "claim_9af0dd6c59534fc59045fecdd707c44c", + "statement": "The documented retry_strategy example disables retries for 400-428 writes, delays 429 retries by 30 seconds, and delays selected 500/502/504 retries by 60 seconds; these are example policies rather than defaults.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L248-L277", + "version": "repo-lines-v1:sha256:873660eb7c8502df4d64683267b1dda99fb149d4120024710a9c6cc0aff58207:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI1ZDdjODUxODVhYjUxZmY0NGZiYWYyMjgxNzUxMzA4NmE1Y2Y3OTI1M2JhODkxMTVkZDgxZjhjNzU2MmNiOGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2YjA0NDkxNDY5NzIyZTgzNjNhOTRlNDA0NDUzOGUwMTNhMmEyMTdlMzZiMWU1NjhiYTYwYWNiN2I0YzhmMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdhZDNlM2I2ZmQ2NTdlMDg2NjYyY2ZhMDk4ZDJiM2EyMTNkMzllODhhYTc3YWJlNDMwMDM0MjZlODJkZDg2ZjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI4ZDg2Nzc4NjE1ZjZhZjQ3YmIxYmM0ZjQwZmFjZTc1Njc0OTc2OGU1MTExZjExNGNmYTIzNGE1MDYwYzI1YWYifQ" + } + ] + }, + { + "id": "claim_d00eb6e3dc8841049b1fca76ad93cc99", + "statement": "Pumps own entity processing, failed-write retries, execution logging, and optional dead letters; defaults include zero read retries, termination at the first consecutive write error, and zero accepted retry-dataset write errors, which effectively disables failed-write retries there.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L208-L213", + "version": "repo-lines-v1:sha256:5e657e9067929e0c0efbb2724239145e97034e3127aeb0f2bfa639cfe5feeda1:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTc3NTIyMzgzMDhlMzY0ZjlhOTMwMzdmMDA1MWNmZDI3MjZlMjFmNmY4Y2Q1OTAxMjc3OWZjZmRhN2RjMjVlNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWE5MThlNTIwYzM4ZGZlN2RlNTRlNTg5NjBkOWY4MTI0ZjQ5NzcxNjUwYTNmNWY1MTgzZjI0MzM4MTRjMTY0YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzYyZGQ1NDRjZmQ4NDNlMjViZTQ3N2NjMjA4MjljOWViYzZjMzk3N2I1MWJiZGJmN2NjY2RlNTIyYjg0ZTAyZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjcxZDlkZGI2MTk2ZWY2ZTQ5NzJlMjE2MWNkZTI3N2VkZTkzYzZjNWQzNTA1ZjI3OTQ4MmVkMDY4MTliMzRhOCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L244-L268", + "version": "repo-lines-v1:sha256:3f77f387f26fdb760c95dbc6874266d0e9493a6dfc050c6d6fd296184e86cc83:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkODI3MDkyYmE0OGU2YTJmM2NjYjZlOTVlZDg5NWE0NDUyYjQyODQ5MGIyZjkxMGQ1MTcwNGViMjQzOWZkMGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhOTE4ZTUyMGMzOGRmZTdkZTU0ZTU4OTYwZDlmODEyNGY0OTc3MTY1MGEzZjVmNTE4M2YyNDMzODE0YzE2NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNhMDU3Yzc1YmZiOWVlMWNjNDdlZjZhMDQzZjhmNGQ5YWRhMGEzYzc1NDgzMmIxODNjMTM1MTY1OTZlMjNhZDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBlNzA5OThhMTI5ODQ3NjNhOTJhMDk2ZjNiYTVkMmUzZTMxZDg4OTdlMmRhN2NiNDc2MzYzNWY0NTI4MGQ4OGIifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L6-L11", + "version": "repo-lines-v1:sha256:e4438d6c78f02bb8733dc5f3386246a7f2cd3df0c70d20ba92f3218fe3360be2:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGExMTA0Mzc4ZmYzZjg2MzhlYTI1NzU2YmUyYjZiNmVjODM5ZjUyMWFjYjI0NzU2NDg3YzUyZDA3NzE3MmZlMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjYyNDVhYTRiZjg3ZTc0NWFiNzZlOTcyN2RhZGFkMTE4YTZmNGMyYzEyMjc3YjZiODU0YzAxMDNhNGI3ZmVmZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWEzYTVlODc3MDg1OGE4OWU1MjEzNzkyMDQwMzY5NzY2MjliNTM0ZTI2Y2E0MDI2ODYyNjBjMzdkOTI1MDdhNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWNjMGUxM2U5MzYzNmZjZmI5Njk0NTU1ZTY1OTllMjBjYjkwY2NmZTRkOWNiNmRjZjRmZDRhMTczNWIyMjVlYiJ9" + } + ] + }, + { + "id": "claim_f5161c7ca64749898e93f0c05b4d7bef", + "statement": "For batched writes, pump batch_retries defaults to 3 and fallback_to_single_entities_on_batch_fail defaults true, allowing single-entity fallback when a batch fails.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L271-L283", + "version": "repo-lines-v1:sha256:7fb971c3fb57a955cee5d0ea083c236be1e31b62981c84906b9abcb72a99af61:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAzMDViOTdjZDYzMDI0YTZiM2FkNGMxYzE3ODE1ZWRiZGY2MzJhYzJkZjA0ZWFmNzc2NjI1MmY3YTJiNTBhMWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJkOTk5YWI5MmNjMjNkZjA2NmM3YmY0NDdkY2NiNWE1ZmU0ZGZjOWIyMWMzN2I0NTJhMGVhYmFkNzRiNWVmZjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNhMDU3Yzc1YmZiOWVlMWNjNDdlZjZhMDQzZjhmNGQ5YWRhMGEzYzc1NDgzMmIxODNjMTM1MTY1OTZlMjNhZDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5NjlkNTFkNGM5YzhmYWZjZTlmNDc5OGYzZWQ3OGM0OThlNTJlYmFkYzFjZjEzZmQ0MDAwOTM0MGE4YjdmMDQifQ" + } + ] + }, + { + "id": "claim_9c2f4b44e93b4c4ca807c79ab7e92055", + "statement": "Managed adapter logs can be inspected in the system Status page, while system APIs expose logs, status, reload, and proxy; pipe execution logs provide failures and continuation diagnostics such as pipe_offset and processed_last_run.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst#L250-L259", + "version": "repo-lines-v1:sha256:b110b1866f80374851ddd2f74852a3bbd5815c253c444f386128579884658a61:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhMTA5Y2FmMzRkN2E2Yzk3ZTNjNDY3NGY1YmNjMjI1ODQyZDdkZjA2MDMyYTUyMDcxYWEyYjViNjAxZGYzNWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIxMDE1MTBmN2U0NWQ4MWQxYWJmNjViNWRiZTI5N2EwNTg5OGMyNmYzNmYzNjEwNTY2MWU1ZWM5OWY4MGRmYzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjliNzJkYmY3YmJmYTAxNDlkNWEzZTQ2ZDgxZGU4YTY3NTcwODViMWNiM2ZhZmE4ZTEyMmZkODk0MzE4NThiNjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRiNjcxNmZkODg4ZGM3MTkwODFkNThjNjdkZTI2ODBlYjRiOGUzMmU0MWZmM2ZkMGZiODI4NmRmZWY5MDcxZDAifQ" + }, + { + "resource": "repo://hub/microservices-in-sesam.rst#L26-L29", + "version": "repo-lines-v1:sha256:1f645316770e64870f9ee9165b65eb58c338bbc3b899e9aaf1c10d27a7241c64:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTkzMGExODM1MzQxZTdhNjgxOTk0Mzc5MWUzZTcwN2IwNTVjYzAzNzYwYzQ4NGJjYTk0NmMwMjNhNWQzMWYwYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTBkODFiM2E3ODBhZTMwMmZhY2M0OGZiMjM4NTg5N2I3YTZjM2MyMjU4MWJlNmRmYTM5ZmE0NmYzZTg5YWVmOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWU2NjQ2NzcwNjU1M2E2MGY3YTUwOTExMzBiMTQ5ODZiMWJiN2U1N2IyMGE4ZTg1ODlmMTNhMjA3ODYxNGRhNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjEzNWZlOGYxNWY0OTRkM2I0ZmZmNzA3MWQyZDhjZDFhYTFkMWQ2Yjc4MzQxZDU3NjhhYWFkNTU4Y2ZjMGU5YSJ9" + }, + { + "resource": "repo://hub/tutorial-microservice-continuation-support.rst#L226-L230", + "version": "repo-lines-v1:sha256:11550d4849f759699c0c8728a864db2c6d8c08c5d1f77101ef4f6d40ce205b85:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlYTg4OTZlNGQzNDdlNTBkNDIwNWUwOWZmY2E4YTU4N2NlNTdlN2RiMTNiY2Y0MGE0ZWJlOTJjMTUwMzljYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWFjZjkzZmIyMTQxNDE4YzNhMDJlYzM2YmNmNjliNjc1MGEwOWJhYTAwYjU5YjUwNTMzNTQ3MDIwMDk5MDIxOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGEwZTRjMzhhYjVlNGE5Yzk3OWQwYjEyMzIyM2RlNzNhMDhjZTdiYTMzZmVhNDMxOGRlMTNlOWE5MmJiYTA3ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2M1M2IzMDE3OTMzM2Q0ZDY2NzQ3NWZkNjAxZmI0ZDQwMTUxOTdjNTUyZTM4Y2I5Y2RkZDU0NDFkYTdhMDIxMCJ9" + } + ] + }, + { + "id": "claim_f5e2945c798d45a18ca85f4efb7ac394", + "statement": "Receiver trace defaults off and can log request/response headers and body prefixes in execution events; body prefix defaults are 100 bytes, Authorization redaction defaults to 600 bytes, and log_secret_redacted_bytes -1 redacts the whole Authorization header.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L105-L150", + "version": "repo-lines-v1:sha256:f06cb180d887aabec167ba9408a4a50881977c90f6dcdd54952b9c4b43d3e126:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjOTk3MGI2M2RiYTI0OGVkMDBmYWJlZWMzNTFmODQ3NjQwMzZhN2I0YTVkMmRkMmQwZWRkZDhiMTQ5ZWNlYmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBjMmJlZTFlYTViNmQxYThiNDhmODY4MzdiMmE3YjU0MGI4YjI5MzJkOGQ3NTEzZDE0OTAzM2M0ZWY4ODNhNTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYyMmYzYjhlODgwMmQzNGUwMTRlZDk2Y2E0NjQzODk3MzRiOGQyMWM4YTI3N2FhNWE2ODBmMGY0ZTUwMDE1MWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdjNzVkNzBjMTA1NGJjZGIxNTU2NDUyODIwYmQyZjQ1ZTA0ZWRkMjVjM2U1ODVjMWZhNzZiMzgxMzIxM2JiMzcifQ" + } + ] + }, + { + "id": "claim_0f0e02886872462f8aa75416991af157", + "statement": "This documentation hands custom-adapter implementation off to external starter repositories, including Python source, transform, and sink templates and ASP.NET, Java, and NodeJS source templates, rather than providing validated current implementations in this repository.", + "evidence": [ + { + "resource": "repo://hub/custom-data-sink.rst#L81-L85", + "version": "repo-lines-v1:sha256:83ac32284f8bac61b44928a7fcfd6b527c45ac431a3c20ac7c7223c6e7977aa0:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODVmMGEyZDBkYmJhYTFmZmFjOGUwYjRiOTY4NDQxZDE5MWUzOTlmMjQxNDNjMWI5ZTY5MTExNTcyZmViM2FmMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWJhYjkwOWVlNzE0MmJhOWQ3NWQ3NmFmYzg4ZDJlOTNiNDNhMTIzYjAyOTZjY2IxODgwODI5OGE4ZjIxYWFmNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNGZiZDAwOTMxNGJjMjcwODQxNjczNGEwMmFlNWZmMzlhMWU0OGEwNTBiZTkxZjQzYjJmYWE5MjAwMmM2MmJmYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTM2MGNjNDA1YTM0YjYyZjgzOTVjYzgzNDBhMTNkZDgxMTVhM2U0MzU2OTU3ZjZkYzdhZjhhZjY2MTY0YWZiYSJ9" + }, + { + "resource": "repo://hub/custom-data-source.rst#L134-L147", + "version": "repo-lines-v1:sha256:b734509a5f1fe13b5055c28dec76ceb3fa3e633fcbfe389a1cd5e3e337c119ef:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVkY2VhNDAyNzE1NzQyYjNhN2I4MTZjYTk3NmZkYjBmZTczZWNlOWNkN2ZlNjJmMTQ3NGM2M2JhMGMyZWU5MmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIzYmVjMDhjM2Q3OWVmNGQ2YmRmOGM3ZWNmZTkwOGIzZmJlZTRlZjc1ZTMxNzNhMmMxYzNlZDgwNzdkNTQyZTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBjYmEyZjk4MjhjODBhMmMzOGUyNDk2Njg5ODRjZGNiNjMyZDc2M2Q2OGZhZGRmOGZlNWU4ZWMyOWJkMzRlZWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk3NjcwNDYxOWMyNjRiMjk0YWY2YWQ2YWIzYzMwZjIwMGU0NjYyODY4ZWFhMmU0NDRjNDI4MmUwNGM5Zjk1OTYifQ" + }, + { + "resource": "repo://hub/custom-data-transform.rst#L70-L74", + "version": "repo-lines-v1:sha256:d363673bfbf9889dd514736aec0f7b4cfad54d1b88144586b8e9bd7b44358df4:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWZlMjExOTU4YWMzZDEwMzA0NTcxOTA0MmU4ZjQyNTQ5YTc5YmM4OGU2YWFlMWRhNGRiZDNkOTk5YTk3MmU2YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGUzNmY3YjYyNjVkNTk0ZTA2ODFjNDk3YWVjODY5ZWE4OGI2NDA2ZDk1MDEzN2IyZDhjOTlhMGQ0YmYzNDgzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDRiOWEwYjE2Yjk5MTBiYWE1ZDBhNGRjYWZmOGE2MGM0Mjk2MzNiZjJhZTNjYmFjYzgyMDI5MDc1ODBkMTBjYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGNiYTJmOTgyOGM4MGEyYzM4ZTI0OTY2ODk4NGNkY2I2MzJkNzYzZDY4ZmFkZGY4ZmU1ZThlYzI5YmQzNGVlZCJ9" + }, + { + "resource": "repo://hub/tutorial-custom-data-source-microservice.rst#L30-L31", + "version": "repo-lines-v1:sha256:a3f679c5a45bba838d4b8828504a0638c3e5951c3dee976431fdaae208227584:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTMwYzZiZWUyZGEyMTA4YmUyMTRjZDhmYzU5Y2U0MGQ5NDM4MGM2NDhkM2Y5Mjg2MjA3MDZiMDhmOTBmODU1ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYmM3MDhlMjUwZDk3ZDhiN2ZiMzRiMmNhMDM4OTdiN2EwZGNjZGNmODk4ZTMxNjcxYmUzMzg1NDlkYjkzYTZhYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTBiZGQ2OTQ2ZmM1OTVkZGMxMzNkNWI1Yjk3ZDJmMzc4NjEyMzVmMTJlMTU0YTMwMjQ1YjRhNDY4MTg3MDgwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmFlYTZiOTRhMjc2MTE0MDdjNWMxODMxNWRkZDMzODAxZWQxMGQ0MzEwYjRmZTA2ZTJkZDAxZjI0NDQ3ZDVlZCJ9" + } + ] + }, + { + "id": "claim_c9def30d1cae4457a63f32ef4f0739bc", + "statement": "The documented Sesam client test workflow uses expected/.json and expected/.test.json fixtures and sesam -vv test to verify endpoint-pipe output, recommending that output pipes be disabled or unable to write to real target systems during tests.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L21", + "version": "repo-lines-v1:sha256:d728920650b733582762cd2916dd09f6f0f0af185fdda8c3774bd133cdd1ef38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/operations/deployment-and-durability.json b/openwiki/.claims/operations/deployment-and-durability.json new file mode 100644 index 00000000000..8d139f9d6ee --- /dev/null +++ b/openwiki/.claims/operations/deployment-and-durability.json @@ -0,0 +1,874 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:73450040740314dad6edd355160a3cc8b8ae49a8c99eee75b59e3ec7fd5d0315", + "claims": [ + { + "id": "claim_9e7e53509a3047278aac854c06b35efa", + "statement": "Developer and Developer Pro subscriptions are cloud-only restricted environments for a single developer or CI, with no backup, VPN, or SLA support, and cannot host test, staging, or production environments.", + "evidence": [ + { + "resource": "repo://pricing.rst#L10-L28", + "version": "repo-lines-v1:sha256:893644c3d1b1397833fe1139257046e76d99848e3aeb7bede0d997af158af49f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwYTZiYTRmYjRhOGMwYWIzN2E2OWQ5Njg2MzAwYjlkZGUyYjc0MzQwZmQ2YjY3MDYyYzM3NGU3ZWQ4NGY0OGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM5MjZjMzQ5Yjc4YWY3YmFhNzc4Y2U1NTI5ZmZmYmE5MGU4MGRlYjNkY2VhMzM0MWEyMGI0YTlmZmViZjE3OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg2MTBjNjYxMDZlM2YzYTg0NzM0OGNhMWRkZjY3MWJhOWU5NTZiZjI0NTdhZTJkODI5MmQ3YTg1YjhlOGQwYTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY5OWIyZThkNjhlNTY2YzNmM2ZjOWU0YzU1MGQxODEwZDM0OTJhOGJjZjFmZjc0NzBhNDAyYWE0ODgxNDQxOGIifQ" + } + ] + }, + { + "id": "claim_1a6e5b4f85ce4ad9af6fced150d0e2d6", + "statement": "Production and test pricing includes automated backup and support for SLA and VPN, with geo-replicated backup included in cloud environments; Single compute is limited to four engines and Flexi is recommended for scalable production workloads.", + "evidence": [ + { + "resource": "repo://pricing.rst#L30-L48", + "version": "repo-lines-v1:sha256:e63100e7f45aca797f7a81290176d35782b8793e860e96e911b1db62e9914cce:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc0NDdkZWNiYTI1ZTIxYTBmZGQ1YmIzOWNmZTQ3YzA5NGFhYTY0ZGIzNTE1YTFkYmM2NmI3YjZjM2E1MGJiNjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc0NTg2NjE3NDI5NDU1NTIwNThkZjliMzlmYzg3MzNiYmZmODNmZmY3ZGYwOTNjMjA0ZDMyNzNjNGYyOTZhZDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJiNzM0NjFhOTQwOWU5ZjExMTliNzI2ZDEwZmJmNWYwZTNjM2Y1ZGU3YWFhY2ZlY2YzZDZhZGZlNTZkODMwMDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBmNzM2M2JhZWRmNGFjMWQyZDBhMzRjOTM0ZWJhMWVjMDBlYzg4MDE1NDRlMTJkNTAyMzVlMWU3Y2I0NGIxNTEifQ" + }, + { + "resource": "repo://pricing.rst#L74-L79", + "version": "repo-lines-v1:sha256:76311635aac8733fb1572a313e1681cb2299258965d68be69591107bac88555e:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTc3OWRiMmMwODYzMWIwNTQ2ZDY0NGMwYjJlMTFlY2FiNDI3NzQ4NWQyZGJkNjk2MWYyZWRiMWU4NjExZjhkZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTRjMTI1MDBiZDY3MzYwZTQ2ZWFjYjcxMzA1MTEyZGM1NzU3M2E4ZDAzNzA0MDZjZTRjZWZmNTM2OTE2OTk4OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzdkNjkwYWVlNTIwY2Y2M2MwMTdjNTYxZDA3OTc0MWNiN2VmNjgyZGJiYjdjYWZjZWUzMzI4OGQ5NWFmMTRmOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmEzY2Y1MTkyMzU0ZjcxNjE1YWM1MTAzNGIzZTk3YzIwZWRhOTk2NDNmY2FmNWJiZTZkNDFhZDU5YmQxMjE2NyJ9" + } + ] + }, + { + "id": "claim_ac7b0fca578b4fbca04a500b67f424aa", + "statement": "The architecture overview documents both a single-machine containerized service associated with Developer/Single compute and a Kubernetes clustered service associated with Multi compute that can scale across machines.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L25-L27", + "version": "repo-lines-v1:sha256:4be5c91ff7a00266b5fdb933c390ca8afd3c54f022c808d3265bd53eee1c76ef:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjdjZWMxMWE3YzIwZTEyNjcwMGQxZTJlN2FjN2NmZjhmYmZlZDZhYTI4YmM2YWM3YTQwYTQ0NGJkZmI1MmFhNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTcwMzM0ZWRhZmNjZmQwOGNhZWQ2MGNhMGQ0OTkzOGIwNTJjNmFiNTJmZDYwZGUzM2YyMTA0ZjkzY2IwMWY5MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDQxZjgyZGRjNzc5OTEyNzgyZDIwNGY5NmRkYzJiNGI3NzQ1Zjg5NTBiZGNmNTEzNjBhNWIyNjYwMDQ2NGZkYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODg1YTI3YTc4YTE2YWZmNzBhYzIzOTI2NGM0YzlkN2EzYmFmYmY5ZDMyMzk2MTY3ZTc4ODEwYzY2MDg5OTkxNSJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L55-L58", + "version": "repo-lines-v1:sha256:a72daac34bba032b72a7499363ae2ff2e4f7219c49df941c9538747b4fcbb4d0:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDZlZjNmOWY2NDBlNjJkOTQ1ZDE2M2JjYzA1OGNkNDRhMWQ2NmRmNjIyYWJlYjBjNjdmNmFiMzAzYmJhMDRmOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDRjY2YxMDBjZjlkNGRjN2UzNjFhZTEwYzA4OGRiM2UwM2VmYmRjZGU0NzdmZDczMGRiNDk5M2I2MmFhYTBkOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2VlYjQzNTYwZjBhNDNiN2ZlZGFiZjQ2MzQ5NmE4YTU4ZTE2ZTA5N2VmNzQ3MTg2NTA0Y2QzNWZkMzY0YzE0YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTc1N2QxM2ZjMDhjYzkzOGM0YjhhNjJhZmU4NjliMzY1ZTg5YTQ5YjMwYzMxNDU4NGQ5Nzc5ZjVjMmUyYmFhNCJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L8-L11", + "version": "repo-lines-v1:sha256:b103594defd9e8a4c4a0a5e1dcb4e71b8cc34f524deb19e9cb1fee95d34dafc3:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODNjM2Q1ODVjNTU1N2Y5MDI3ZGRmMGQxYjY2Mzg5M2QzNWQ0MThmMTZiOTlmY2QxNTk1YTE0OTM4Yjk3NDY3ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2RlYzY1MGEzNWI1NjFlMjFjYmIyM2FlMGQwNGRjNDU4ZjI2ZGZjYjUzOWU1NWI5MWM5OGEzZmVjOGRhMWU1MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2JlZjY2ZTY3YWU1YWQ1ZjkxZGUwNzgwNDlkZjdkZjhkOGQxYjIxOGVmOTUzMTJiMzg1ODNkNDRhZjc3N2ZmYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDEyNTZlMjI1YmFjOTI0MzY4MzVlYTllYTU0MjFjN2I2MzUyY2Y4MzRhY2I4ZTI5MzM2ZDM4YzVlYjBjZjVhYyJ9" + } + ] + }, + { + "id": "claim_e694dd7bd7be422c8e758b8c2fa0d641", + "statement": "Hosted software is distributed as OCI/Docker images in a private Docker Hub repository, and the infrastructure overview describes Terraform provisioning on Microsoft Azure.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L13-L15", + "version": "repo-lines-v1:sha256:edf904bf939668d32e717e946982a7d9bf7453e5333b63870c0def93ad43687d:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTE5MGVhYzMxMjE5ZjUxZjFhMTBiMTQ0YTViNDA1MjkzYWEyZDNhZDdiNmY4YzBkNmM1YWJhMzBhNDRiNjdiZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjUwY2FmYTY0NmFjYjNlMWJmNzI1OGYwMTM0N2IwMTNjMDlmMmRjNzQ5OGY2YjMyYjg2NmMyYzg0MWRkMjg1MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGQ5ODc5MmEzMTgwMzg4YjVkMTM2NjYxOTAxNGZiNTQwNDI0NjIxZWY3OTNiNzc1NTBmMTQ2ZWRmMmYwMTNkNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGJmYWYwNDViMzUwN2MyY2Q0ZTliMzM1ODc5MjMyNjFhNTUzMzNkMDRlZmMyZWEwNWRiYzFlOWVjZDI0OTM1NyJ9" + } + ] + }, + { + "id": "claim_d6d1094e6b0f4472bdf93a0d145f0c42", + "statement": "The single-machine layout uses individual resource groups in a shared Azure subscription and managed network disks; the clustered layout uses an Azure subscription per customer and local NVMe and/or managed network disks, with a Network Security Group for each subscription.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L27-L27", + "version": "repo-lines-v1:sha256:e70334edafccfd08caed60ca0d49938b052c6ab52fd60de33f2104f93cb01f92:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTcwMzM0ZWRhZmNjZmQwOGNhZWQ2MGNhMGQ0OTkzOGIwNTJjNmFiNTJmZDYwZGUzM2YyMTA0ZjkzY2IwMWY5MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTcwMzM0ZWRhZmNjZmQwOGNhZWQ2MGNhMGQ0OTkzOGIwNTJjNmFiNTJmZDYwZGUzM2YyMTA0ZjkzY2IwMWY5MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDRjODVlNzljMzU2NWJiYWY4ZTZlYzU2NDVkYTU1ZjgxY2Q1NzcxNjY4OGExYWE5NGJlMjAxNjM2NTkwNWNlOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODg1YTI3YTc4YTE2YWZmNzBhYzIzOTI2NGM0YzlkN2EzYmFmYmY5ZDMyMzk2MTY3ZTc4ODEwYzY2MDg5OTkxNSJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L58-L58", + "version": "repo-lines-v1:sha256:04ccf100cf9d4dc7e361ae10c088db3e03efbdcde477fd730db4993b62aaa0d9:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDRjY2YxMDBjZjlkNGRjN2UzNjFhZTEwYzA4OGRiM2UwM2VmYmRjZGU0NzdmZDczMGRiNDk5M2I2MmFhYTBkOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDRjY2YxMDBjZjlkNGRjN2UzNjFhZTEwYzA4OGRiM2UwM2VmYmRjZGU0NzdmZDczMGRiNDk5M2I2MmFhYTBkOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2VhMTQ4M2YyYmVmNzM0OWFkNDQ0Y2E4ZGEwMTI3MTJjOTZhZGQzN2NhZWIyMGEwZDUzYmU2YjE3YmZhYWFhOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTc1N2QxM2ZjMDhjYzkzOGM0YjhhNjJhZmU4NjliMzY1ZTg5YTQ5YjMwYzMxNDU4NGQ5Nzc5ZjVjMmUyYmFhNCJ9" + } + ] + }, + { + "id": "claim_b2b139e714734600972fc7d7d22af866", + "statement": "Subscription groups share a common network, and a clustered subscription group exists inside its own Azure subscription.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L108-L111", + "version": "repo-lines-v1:sha256:05b4bb3107530085634dbacaf161485344e5579f0a1cbe3dce88b90c7425b5e5:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDk1ZDkwODk3NGJkYjQzYTI4OGE0ZjUyZmMyMzhmNjdlMTU0ODMwNmZmMjRiNzYzNzBkNjE3ZTlmNTZiOTg5YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGFhMzVkYjQwN2Q3MjNhNDJhOTUzYjVjMzA1NTc1M2JhNjM0OTk0NDcxMGY2ZDI1OWM0ZTdjYzUyMTY2YzVhZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjNhYjgyOTM4MmVhNWI2OTMzZTM5ZDNjNjZmNzY2ZDA3ZTc0NDFjNGQzMWFmZTNjYzAyMzExMjBlOTY1OTEyMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTc5NTk0ODY3Yzg1NTMzMjNiY2YzOGRkYzEzOGNlMjcyNjhiN2ZkYzcxYmU0M2I5YWU2MzYxZWNiNjcyNDM0YSJ9" + } + ] + }, + { + "id": "claim_d152e8f319464dbe923fdb4d857197cd", + "statement": "In the single-machine overview, all software except the agent runs as Docker containers; the host agent self-updates, supervises the other components, and automatically upgrades them.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L27-L31", + "version": "repo-lines-v1:sha256:deec350cbc0fc4804e93bd0bb3f6650ee71c20b821a89f08fd194906ba61e7b8:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTcwMzM0ZWRhZmNjZmQwOGNhZWQ2MGNhMGQ0OTkzOGIwNTJjNmFiNTJmZDYwZGUzM2YyMTA0ZjkzY2IwMWY5MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmVjYzMyYzU5ZWUwM2E4YzM3YzZjMDc3NGFlZGRkNmI1NzczNDU0N2QyZTVhOTU2YzcxNWI3ZGE1ZDY4NDc4YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDRjODVlNzljMzU2NWJiYWY4ZTZlYzU2NDVkYTU1ZjgxY2Q1NzcxNjY4OGExYWE5NGJlMjAxNjM2NTkwNWNlOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDIwZWQ3YzBkNjM0NWEyNGRhYzViYzljODBjM2UzOTMzZDM4OWZiMzE1YTYwOTgwMTJhMzQ2OGNkMjU4ZDllYiJ9" + } + ] + }, + { + "id": "claim_68b9115d91a34efe8c79dcdcc5961c3b", + "statement": "Both overview layouts use a TLS-terminating, traffic-managing reverse proxy on port 443 with automatically managed Let's Encrypt certificates; the single-machine layout also permits operator-provided certificates.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L33-L35", + "version": "repo-lines-v1:sha256:bca295255690034751044b12efdfd93d1b05ef1bbc0abe1043bda4af880124c9:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzUxZTE5Y2YxMGYxYzRkNzI1YjFmZjQ2Nzk3ZjRmMWRmZmQ1YThiZGZkNjFkZWM0ODllZTBmNTk4ZGIyOWRjNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTczMzNkNWE3NTliMjE2NzZiZWMwZDIzYjdmODI0MWY0NzA5YTFlMjA5NmY5ZjQ5NmNkZmUxZWU5MjdhMjUyNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTc5OGY3NjM5M2IwNzNlYTJhNzQwNTJjODgwYTVhNmZlZDU3NTZhM2FiMmVlOGNkMDMxNWE3NDU5NTI1OGZjNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTliYTQ4YzIzMzIwNmFhY2UwMTQ3NjIwMjYyYmVhMjZiYTFkMTUzODFjNDQ0YjlmNTUxYTZlZmNhNThkYWQ2NCJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L62-L64", + "version": "repo-lines-v1:sha256:e02b24ab984de0f97b7060f47fbec64cb1567dfa57204271474684f64ed349ca:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTUwZjY4Y2I1NzNkNGRiYjUzNzI3MzUwZjc0NWNlZGRlNzk0YzE3MWM4Yjc4ZTliMDdhYTI2ZTJhNjVlMDg3OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWQxMjk5YTZiM2FmOTU4MDQyZGMyOGMyM2Q1NTViMWEzMTZhZjdjM2IzZDMzNDczN2Q1Yjc4YTE3NzFiNTVlZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTc1N2QxM2ZjMDhjYzkzOGM0YjhhNjJhZmU4NjliMzY1ZTg5YTQ5YjMwYzMxNDU4NGQ5Nzc5ZjVjMmUyYmFhNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzhmNmM4NWQ3MTE3MGIyZDM0NGM2MGQwYjc4MzY0YmVlYjViMGFhMDk5NzQ4NmI1ODJmMTE3YjRlZmU3MjFiYyJ9" + } + ] + }, + { + "id": "claim_fc596605b7fa4c239057f27eca4571fb", + "statement": "The single-machine node hosts the service API; the clustered aggregator hosts the service API, a storage node stores configuration and provisioner topology, a Kubernetes-operator provisioner provisions processing pipes, and execution nodes run one or more pipes.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L35-L35", + "version": "repo-lines-v1:sha256:17333d5a759b21676bec0d23b7f8241f4709a1e2096f9f496cdfe1ee927a2527:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTczMzNkNWE3NTliMjE2NzZiZWMwZDIzYjdmODI0MWY0NzA5YTFlMjA5NmY5ZjQ5NmNkZmUxZWU5MjdhMjUyNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTczMzNkNWE3NTliMjE2NzZiZWMwZDIzYjdmODI0MWY0NzA5YTFlMjA5NmY5ZjQ5NmNkZmUxZWU5MjdhMjUyNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDIwZWQ3YzBkNjM0NWEyNGRhYzViYzljODBjM2UzOTMzZDM4OWZiMzE1YTYwOTgwMTJhMzQ2OGNkMjU4ZDllYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTliYTQ4YzIzMzIwNmFhY2UwMTQ3NjIwMjYyYmVhMjZiYTFkMTUzODFjNDQ0YjlmNTUxYTZlZmNhNThkYWQ2NCJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L64-L70", + "version": "repo-lines-v1:sha256:06ca8ac4488e44fd922425f78768dd1b78f304e26abeaf7ce56f4d18a8a9bf5e:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWQxMjk5YTZiM2FmOTU4MDQyZGMyOGMyM2Q1NTViMWEzMTZhZjdjM2IzZDMzNDczN2Q1Yjc4YTE3NzFiNTVlZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDllN2ViOTA4NGQ3MGYwNzE1NzE0YzExZDE3ZmYwYTFmOGMzMjQ5YTIzOWE5MjNhNTllODE1NDM3YmU5OGQ2MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNWYxMDJlZTk1OTFjYWFhYzY5Y2ZiZTk3ODExZjM5ODM2NzQwMDFlYjhhYzRlZjkzMjhlZjdjYmYzM2NkNTUwOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDgyZTMxY2E3MDNkYWEwMzM0MTA3OTcwZDZlZWNiZjA1MzU3YzJiNTUwOGMwZDY0ZTdmNGYwOThjOGNmMGY5MCJ9" + } + ] + }, + { + "id": "claim_b98f9e1ade9a40de9153b37b03174534", + "statement": "User-defined microservices run as individual Docker containers in the single-machine overview and individual Kubernetes deployments in the clustered overview.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L41-L41", + "version": "repo-lines-v1:sha256:da83dcd62da069e451a041ec2ab225e78c4d1be6f61cfda1fa25daaafbbaf645:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGE4M2RjZDYyZGEwNjllNDUxYTA0MWVjMmFiMjI1ZTc4YzRkMWJlNmY2MWNmZGExZmEyNWRhYWFmYmJhZjY0NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGE4M2RjZDYyZGEwNjllNDUxYTA0MWVjMmFiMjI1ZTc4YzRkMWJlNmY2MWNmZGExZmEyNWRhYWFmYmJhZjY0NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzkzYTM2OWViZDRiN2I0YjNiNzNiMDZlNmQwMTkwNDg0MThjNjgyMTIxMzk5YWNlYzMwYTg5ZDViODJkZDdjNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMmFkYjZjMjUzYjBiMWYyMzY0MzBmYTFhN2M2N2E0MTBkOGY4NzljOWNkODQ4ZmY4NGM1NTg0MDM0Mzc4MjhiNCJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L76-L76", + "version": "repo-lines-v1:sha256:a3d19949e8ce2a131124a984cd02cef38daaf2b18306fd88fe09cf84a0f59d45:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTNkMTk5NDllOGNlMmExMzExMjRhOTg0Y2QwMmNlZjM4ZGFhZjJiMTgzMDZmZDg4ZmUwOWNmODRhMGY1OWQ0NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTNkMTk5NDllOGNlMmExMzExMjRhOTg0Y2QwMmNlZjM4ZGFhZjJiMTgzMDZmZDg4ZmUwOWNmODRhMGY1OWQ0NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzkzYTM2OWViZDRiN2I0YjNiNzNiMDZlNmQwMTkwNDg0MThjNjgyMTIxMzk5YWNlYzMwYTg5ZDViODJkZDdjNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDY2NTQ4MmZmOTRlMTE3OWFmYzNkM2FjYjQ1OTUxOWNlZjg2MjYyMGI2NTU4NTQ0ZjRkNGY3OWQ2NzA4MmMxMCJ9" + } + ] + }, + { + "id": "claim_f8bf0ff91f9341bebc9cf2318314c117", + "statement": "Both documented layouts have log shippers and metrics agents sending telemetry to Sesam for operational monitoring, with log shipping also serving billing purposes.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L37-L39", + "version": "repo-lines-v1:sha256:da9455a8bd330f25d79d0bd2886981adc4f17319bb32f01a9f87fa25f780e387:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2NmMDE5MjMwMDg2NGUxYjkzYjUzY2EwMmY1YTA5YjIxM2NlZDUxZGQ3NmE1MWNiMzZiMmM4YjkzNTkxODk3ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzUxYjQ5YWQ2NGZjZGVmOWI3ODhlYmU4NTQ3ZDgzYThlMjAzZGVjYzE4YTE2OTExMDlkY2JmOTBhYWJlMzBhMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTA0NjIxYTdjZDVhNDc5NTEwYmE3YzhiOWJmNzAyNmUxNjhhOTkxNGY3MGVlMThiMjg4N2Q0OTVhMTViOTZlYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjgzZjFmOGQwNGVjOGMxN2Q4ZjhlNTQwNTA0NWI1MjM5ODcwMTZmYWNiZDA2OTA4MDE0YzMyMDk1ZjM1MDY1YSJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L72-L74", + "version": "repo-lines-v1:sha256:05efc2093045e9a1d719a1694f7dbe1ae3c3b5416bcaf979cf99f24198b5651d:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWNjMjI3YmYwYzU0MTdiY2YwY2IzMWQ1YjExOTAwYTQ1YzQzNzk4OGRjZWVlNzg0NTVlYzJiZDYxMDYxYWI4ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzUxYjQ5YWQ2NGZjZGVmOWI3ODhlYmU4NTQ3ZDgzYThlMjAzZGVjYzE4YTE2OTExMDlkY2JmOTBhYWJlMzBhMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODIzODNjMWJjZjRhMDlmNTk5MjdlNzBlZjBjYWY2NWQ1MjYxNGFjYmNhMGU1YmRkZDAyMGU5NWVjZDAwYzFlZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTk0YWRmYTkwNmY4ZWFhODE2NWY0YTNlYzMyNTIzODQyMjYyNTNkZTFhNjE1ZDA0ZDhlYzg3YTdmYTFjYjdkZCJ9" + } + ] + }, + { + "id": "claim_2ca679c3648249e8947b93eeb867dd47", + "statement": "Sesam persists data in embedded RocksDB using MessagePack and RocksDB's default compression settings.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L17-L19", + "version": "repo-lines-v1:sha256:3d50c012947660b1e0566416504965040182aa7b00560937e65326ab13c9df11:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWU1MDk0OTMzMmZmODU4NDc4M2M4ZTljOTkwZTFiZDZiOWVkNDgzMjA1MTVjNWMxZDYwODJiOWM1NDdjNmEwMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzdmZjFiOTYwNTgyNzQ2ZjY4N2MxMTMzMjk4OWRiNGViMWZmMTVjNTMwMzNmNGZkNjE4OGJlNDFkN2ZjYzk4ZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzBjNzFhMTRjNzZiMWMwMTcyY2RjMjc1NjY3NGU3ZThhNmM5Mzg1ODg1MmFhNDA2ZmY2OGZhNzVkYTg2YmQ4NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2Q0MTIyM2YxMTE5NmQ2M2Y4YjQzNTU2MDBjZDJkMzY5OGU3ZWEzNjM5ZjNjNTE0YzE2Y2Y2ODlhYjg4Y2I4ZSJ9" + } + ] + }, + { + "id": "claim_2420881196d74086bca96f218937289b", + "statement": "The overview's claim that data never leaves North Europe (Dublin, Ireland) is in unresolved scope tension with its geo-redundant backup sections and the pricing/BYOK descriptions of geo-replicated backup storage; these sources do not establish a specific secondary region or an all-copies residency guarantee.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L15-L15", + "version": "repo-lines-v1:sha256:b50cafa646acb3e1bf7258f01347b013c09f2dc7498f6b32b866c2c841dd2853:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjUwY2FmYTY0NmFjYjNlMWJmNzI1OGYwMTM0N2IwMTNjMDlmMmRjNzQ5OGY2YjMyYjg2NmMyYzg0MWRkMjg1MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjUwY2FmYTY0NmFjYjNlMWJmNzI1OGYwMTM0N2IwMTNjMDlmMmRjNzQ5OGY2YjMyYjg2NmMyYzg0MWRkMjg1MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDEyNTZlMjI1YmFjOTI0MzY4MzVlYTllYTU0MjFjN2I2MzUyY2Y4MzRhY2I4ZTI5MzM2ZDM4YzVlYjBjZjVhYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGJmYWYwNDViMzUwN2MyY2Q0ZTliMzM1ODc5MjMyNjFhNTUzMzNkMDRlZmMyZWEwNWRiYzFlOWVjZDI0OTM1NyJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L48-L51", + "version": "repo-lines-v1:sha256:aaed43ba29c6ddda197dbffb3c109662fda7c11428324f474fe22f4112f62de7:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWMzODQ5MDkwMmI4NzZmOWM4N2QyOGIyMzllODE4MTQ4NDk3MDA5MTAxNjYwNDdiOWFmNGM1YjAzZGY3MTdjOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyM2M3ZDRjNzhkOGFlNTg1N2ExYmY3NTMxZmMwYTdlMWYxNjBjOGExZmJjMGRiYmVkNTYzMGQwNmRlNmVhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWU3ZGIzMWY3YjZiMTFjNDRhMmQ2NzBlN2I0OThmMThmZjJmOTI0Y2E0MDAyM2IxNDkzMTVhYmIxNGEzMGQ5ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2VlYjQzNTYwZjBhNDNiN2ZlZGFiZjQ2MzQ5NmE4YTU4ZTE2ZTA5N2VmNzQ3MTg2NTA0Y2QzNWZkMzY0YzE0YyJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L81-L81", + "version": "repo-lines-v1:sha256:0bece764015e369b2d4d4700cb3c0f443273fb397b865394fd0a56f4e8a7a907:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGJlY2U3NjQwMTVlMzY5YjJkNGQ0NzAwY2IzYzBmNDQzMjczZmIzOTdiODY1Mzk0ZmQwYTU2ZjRlOGE3YTkwNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGJlY2U3NjQwMTVlMzY5YjJkNGQ0NzAwY2IzYzBmNDQzMjczZmIzOTdiODY1Mzk0ZmQwYTU2ZjRlOGE3YTkwNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWU3ZGIzMWY3YjZiMTFjNDRhMmQ2NzBlN2I0OThmMThmZjJmOTI0Y2E0MDAyM2IxNDkzMTVhYmIxNGEzMGQ5ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzRhNjk3ZTc2ZTJiZDQ5MTMzNmM2Nzc2YTE0YTZlZDM3NjU5ZjU0NWFkM2E3ZTgzOWVlM2U3OGJlNjA2MjUwOSJ9" + }, + { + "resource": "repo://hub/features/bring-your-own-key.rst#L9-L9", + "version": "repo-lines-v1:sha256:d5d342cf2d48977364851018358d9956b27c7bf8867b3e88163c3612ffc51eb9:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDVkMzQyY2YyZDQ4OTc3MzY0ODUxMDE4MzU4ZDk5NTZiMjdjN2JmODg2N2IzZTg4MTYzYzM2MTJmZmM1MWViOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDVkMzQyY2YyZDQ4OTc3MzY0ODUxMDE4MzU4ZDk5NTZiMjdjN2JmODg2N2IzZTg4MTYzYzM2MTJmZmM1MWViOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjliYWUwMWM4YWI4ZDBjOTVjY2I1MmFlMzVjMmNhOTAzY2ZjYjQwMTdlZjIwZmY1YTk1OTNhZTdlYmIwMWVjMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://pricing.rst#L74-L74", + "version": "repo-lines-v1:sha256:5779db2c08631b0546d644c0b2e11ecab4277485d2dbd6961f2edb1e8611f8de:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTc3OWRiMmMwODYzMWIwNTQ2ZDY0NGMwYjJlMTFlY2FiNDI3NzQ4NWQyZGJkNjk2MWYyZWRiMWU4NjExZjhkZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTc3OWRiMmMwODYzMWIwNTQ2ZDY0NGMwYjJlMTFlY2FiNDI3NzQ4NWQyZGJkNjk2MWYyZWRiMWU4NjExZjhkZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzdkNjkwYWVlNTIwY2Y2M2MwMTdjNTYxZDA3OTc0MWNiN2VmNjgyZGJiYjdjYWZjZWUzMzI4OGQ5NWFmMTRmOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzQyOGZjODE1YzRkMTU2YTIxMzhjZGMyZjFiNTg0MmEyMDY0MWIyMWFhOTNmNjk4OGUyYmFiOTBhZWNlZTYyNyJ9" + } + ] + }, + { + "id": "claim_acf3b00df1b341c8aa07e7676ff83f63", + "statement": "The overview says BYOK is unsupported, but the focused BYOK feature documents support-owned opt-in setup for new single subscriptions and says multi subscriptions are not supported.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L15-L15", + "version": "repo-lines-v1:sha256:b50cafa646acb3e1bf7258f01347b013c09f2dc7498f6b32b866c2c841dd2853:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjUwY2FmYTY0NmFjYjNlMWJmNzI1OGYwMTM0N2IwMTNjMDlmMmRjNzQ5OGY2YjMyYjg2NmMyYzg0MWRkMjg1MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjUwY2FmYTY0NmFjYjNlMWJmNzI1OGYwMTM0N2IwMTNjMDlmMmRjNzQ5OGY2YjMyYjg2NmMyYzg0MWRkMjg1MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDEyNTZlMjI1YmFjOTI0MzY4MzVlYTllYTU0MjFjN2I2MzUyY2Y4MzRhY2I4ZTI5MzM2ZDM4YzVlYjBjZjVhYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGJmYWYwNDViMzUwN2MyY2Q0ZTliMzM1ODc5MjMyNjFhNTUzMzNkMDRlZmMyZWEwNWRiYzFlOWVjZDI0OTM1NyJ9" + }, + { + "resource": "repo://hub/features/bring-your-own-key.rst#L9-L9", + "version": "repo-lines-v1:sha256:d5d342cf2d48977364851018358d9956b27c7bf8867b3e88163c3612ffc51eb9:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDVkMzQyY2YyZDQ4OTc3MzY0ODUxMDE4MzU4ZDk5NTZiMjdjN2JmODg2N2IzZTg4MTYzYzM2MTJmZmM1MWViOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDVkMzQyY2YyZDQ4OTc3MzY0ODUxMDE4MzU4ZDk5NTZiMjdjN2JmODg2N2IzZTg4MTYzYzM2MTJmZmM1MWViOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjliYWUwMWM4YWI4ZDBjOTVjY2I1MmFlMzVjMmNhOTAzY2ZjYjQwMTdlZjIwZmY1YTk1OTNhZTdlYmIwMWVjMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_23f5ba2862c94812aee7bbfc6854b2e8", + "statement": "The focused BYOK reference describes platform-managed encryption of hosted disks and backup storage by default; with BYOK, Sesam manages the key and the customer can decide to revoke it, generally requiring the data to be reloadable afterwards.", + "evidence": [ + { + "resource": "repo://hub/features/bring-your-own-key.rst#L9-L9", + "version": "repo-lines-v1:sha256:d5d342cf2d48977364851018358d9956b27c7bf8867b3e88163c3612ffc51eb9:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDVkMzQyY2YyZDQ4OTc3MzY0ODUxMDE4MzU4ZDk5NTZiMjdjN2JmODg2N2IzZTg4MTYzYzM2MTJmZmM1MWViOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDVkMzQyY2YyZDQ4OTc3MzY0ODUxMDE4MzU4ZDk5NTZiMjdjN2JmODg2N2IzZTg4MTYzYzM2MTJmZmM1MWViOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjliYWUwMWM4YWI4ZDBjOTVjY2I1MmFlMzVjMmNhOTAzY2ZjYjQwMTdlZjIwZmY1YTk1OTNhZTdlYmIwMWVjMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_738bea66f2f94f8bbe6f39817aea1653", + "statement": "BYOK pricing documentation conflicts: the feature is badged free, whereas the portal API schema says enabling byok incurs additional costs and defaults it to false.", + "evidence": [ + { + "resource": "repo://hub/features/bring-your-own-key.rst#L4-L9", + "version": "repo-lines-v1:sha256:059ce0e05b7fc6061630e0988d30fa63c706d8d5d00aa0f0953506b6c258ebe7:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzhhZjYyYWZjYjk3MzczYTRkNTJkNWZiN2RlMWM0NjYxMDJiNjk1OWYzMzk0ZjhjYWMxZDQ5ZWVjYjQ4OWZiMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDVkMzQyY2YyZDQ4OTc3MzY0ODUxMDE4MzU4ZDk5NTZiMjdjN2JmODg2N2IzZTg4MTYzYzM2MTJmZmM1MWViOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNWMwYWI3YmNhMzY1ZmU1ZGE4NGI3YzM4MmIyNTQ5N2ExNjE5NWJlNTMyYTdkYzQ5M2Q5NTI1ZmU2NzY2MDA3YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L4206-L4213", + "version": "repo-lines-v1:sha256:f475b389cadcb1e7c646de0639855865e6309ae7bce3b345e097d9df2e7ae084:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjFlNGRmODMzNGExOGRhMWJmODEyOGY3ZjE1ODU3MzNjMDY3NjgyZjM3NDQwMGNlYjFmZjA3NWU3NmFmN2UxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWE1YjY0MWExNThjMzg2MTVmNzQ1ZjUyMmE0ODI1ODk3NTdjY2M2YjMzYmM1OGQ3OWM5ZWNkZjA0MDUyYzljOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjQyNzk2YzdkZWZlODkzYTA0MjM2ZDQ0MjNmZTNlOGVlOWVkODIwMWEwZWE2Njg0MDk3M2M2NDI0MDdiZjU5NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTRmYWYwMzgzMTgzYTg2MjBjMGE2YTFjMjZjNmJjNmFiODY1YTk5MGY0MmEzYTk2ZWNlZDE0OTBiYzE3ZDk4ZCJ9" + } + ] + }, + { + "id": "claim_2713f56242bc45839e0957eec34d4e85", + "statement": "Plan-to-topology mapping is version-sensitive: the 2022-02-11 changelog describes cloud migration and inspecting Subscription > Basics for version 1 single-machine, version 2 clustered, or self-hosted; the 2022-03-24 entry says portal-created subscriptions use clustered provisioning, and the roadmap says all cloud subscriptions now run clustered.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L914-L919", + "version": "repo-lines-v1:sha256:cbc52b9134668832fa084612a61fdcfbb9b976103d90ca8de5061d44fdfcaed9:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjA5NGMwNjQ1N2U0YThiZmJjZTU1MmE5NTM5ZTcwNWVhODhmYjQ3NDFhYTAxYWFhZTM3ZWY1MDgwMDEyNTA1NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzU0NjNiNWRlYjc3MWU0ZDE3NTExNTMyM2Q5NDY0NmMwYjQ3Y2VlMTg2YTQxYTQ2NmFmMjAwODRkNzIyY2U2ZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODQ5M2ZlODFlMTE3YWExY2FmM2NmOWQzNzUyMzg5NTk2MjVmZmU5NDA5Y2UxYjc4YjU2NzZiM2NkNjUzNjBhMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWI4N2E4MjY2NWUyZDQxMzgxNWEwYjBmOGFkNjMyOTY2MjUxMjViYjA1NGY3NDRkNjJhY2ZlYzg5NmJkYWE5ZiJ9" + }, + { + "resource": "repo://hub/changelog.rst#L946-L956", + "version": "repo-lines-v1:sha256:5a0952332a2eac2d16f4a4faaf54ade833f907341d8c4dd70b6ef4cc5b14e6e7:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ2NjI1OGQyNWUzMjIxZWVmMTdmYTZiZmJjNzUwNGY0NmRmMWE3MWQ1ZjQ3YjYzZmRkYzhhOWM0ODA0ZGNkNjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzZmNiYzZiZTAzN2E1YjIxYjQxM2E5NmEyNjU4N2M4MDJhMGEyMzlmMDRkMjkwMjUxOGJlYTJlOWQ2MmZlMjAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZlZWY4YzQ1YjljMzllZDk2YmYwODI5MWY4ZGU4YjUzNDc5ODUzYWEzZDMwMDc2MjFjZDIyZjQwMGYyMTM3N2QiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc4MmZjNmYyNTI5YzA5NGI5YjFhMTYwMDg1NTMzODc4MWMzZmY1NjI1ZDg4YTNmMjE2YWVkY2ZhMjVlY2VkMzYifQ" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L8-L11", + "version": "repo-lines-v1:sha256:b103594defd9e8a4c4a0a5e1dcb4e71b8cc34f524deb19e9cb1fee95d34dafc3:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODNjM2Q1ODVjNTU1N2Y5MDI3ZGRmMGQxYjY2Mzg5M2QzNWQ0MThmMTZiOTlmY2QxNTk1YTE0OTM4Yjk3NDY3ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2RlYzY1MGEzNWI1NjFlMjFjYmIyM2FlMGQwNGRjNDU4ZjI2ZGZjYjUzOWU1NWI5MWM5OGEzZmVjOGRhMWU1MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2JlZjY2ZTY3YWU1YWQ1ZjkxZGUwNzgwNDlkZjdkZjhkOGQxYjIxOGVmOTUzMTJiMzg1ODNkNDRhZjc3N2ZmYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDEyNTZlMjI1YmFjOTI0MzY4MzVlYTllYTU0MjFjN2I2MzUyY2Y4MzRhY2I4ZTI5MzM2ZDM4YzVlYjBjZjVhYyJ9" + }, + { + "resource": "repo://hub/roadmap.rst#L129-L141", + "version": "repo-lines-v1:sha256:c409030a405fa6adca73c74db4caa4fa5d0c6b3bd03f3df2e75f3435474912a6:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhYzJmOGI5NDgyMTY0Njc5MDU0MmNlOTIzZjYyOTIzMzM3MTc3ZWUyZjQ0ODJmZjUzOWIyYWE4ZjIwZGUwNWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImViMGRlZjE3NTM1YTUzNmUzYzk2MmVmNTg4YWU0ZDQ4NThmZjk0NTA0OTVhMTgwZmI5MDcxY2Q0ZjQ0Y2E2MDEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjExMWI1OGJiNjhiMGFlMTA2YzFmMGRhM2MyYjVjNGZiODI3ZWNkYTJlMmMwZTFiY2FiMGQzNDM3N2Y0NDMxOGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ1ZDViZjIyOWRlNzA3ZjhlNDY5Y2IyYWJkY2VlMjY5MmQxY2YwOTIzMWNiNWZmYWI4MTBlMDcxMzMwMWJlZWIifQ" + } + ] + }, + { + "id": "claim_a67319eea68e4e6a80a18191232bbc23", + "statement": "Self-hosted cluster support is not consistently described: the roadmap says self-hosting is single-machine only and clustering is planned, while the Kubernetes installation guide explicitly remains a subject-to-change draft and ends with support assistance for licenses, secrets, and charts.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/self-hosted-k8s.rst#L7-L18", + "version": "repo-lines-v1:sha256:5191a243ffa77e6c0cf3f2de24b116f4d907454337f052b7b8125fccadc8596e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdmNTA2MmJlNDliNjBmYTYyNGY4NjQ2OTNiMzUwZGQ5MDYxM2VmZjc4M2FjMzA0NDZhOTIyMzc0NGJkNjgwODYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2MDFmNmM5N2FhNjY5NTA2ZmQ4MThlZTE0Nzg1NzFhMTM0NDc2ZjVlNzBlODdiNTlmZDA3N2Q0ZmM1YzJjM2MiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUwMzgxNmI4OGMzNDc0M2M1NDIzODk1ZDVhNzNkNzEwZDI1MWUyZDZlN2IyZDczNGRhMjhiNzZiYTQ3Zjc2ODIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVlOTdhZjk3NTdlNTQzZjFhYmIwNjM1ZjFjMTJiMDY2ZTViNTU5ZTBlNDA1ZWQ0MThhODRlNzQwYjc4MWQ4ZGIifQ" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted-k8s.rst#L83-L85", + "version": "repo-lines-v1:sha256:7076ea198afbb5cef88260a06d18cc0a2be0f6a59859d9bd25ed2050ef5125a7:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2Q2NzQ2Y2ViNjEyM2FhMjI3MjgyNzY0MjcxNDE2ZTdjYzZhY2QwNWM3Y2M2MjYyODgwYjllMjU2NWQ1YTVhMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGNjNTBiN2FhZWNiNDljNDAzYTAxODkyYzQ5ODFlN2M2Y2UxYTNkYTI5YWNlZjMzYjZhODQ4OGFiNDllYWYxNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDY0ZTQ3MDkzZDU2NGY1NTk4N2UwZTExNWU4YjMwYzk2ZTE4YTBkODI4MDBmZTIxMWM0NDVkMWQwNjY1MjI5OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjEsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiJ9" + }, + { + "resource": "repo://hub/roadmap.rst#L13-L18", + "version": "repo-lines-v1:sha256:49d66c3f194467a11c7370549845aa5e30b3e8154258647b0a7208337101d0c5:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzBlMTQ4ODk3NWIwN2RlNGFkM2M5NDU5OWVhYTBmN2Y5Yjg4ZjQ2M2U0MTllNDAwMWMzNTQwMGIzMTdhMDUwMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGQzMjIxOTlhNjMzYTIwZDgwYWY5OTRiODY5ZTU4YmJjZGE0YWQwMDU0ZWE0NmFmYjQ1Nzg1ZDUyY2JlZTYwYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTg1NjkxOTkxMzNmZjkyMzJmNzVjMDZlY2ZkMjA2NmUzMTAxNjRmOTE5MTJmN2IzNTQ0YjJiNDEwZTliOTQ2NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDllYzVmMzIzNzg4YTFhZDBhNTc2ZTBmZTZjMWIzNjI3ZGM4ZTdiZWJmYzZjNzUzZTNkMzNjNDVjODVlMDgwMSJ9" + } + ] + }, + { + "id": "claim_34ced6397e1f4c8ba8ed70cbc1411b0b", + "statement": "The self-hosted guide's referenced files/env artifact is absent from the checked-in operations files directory, despite the Compose templates depending on environment variables for image tags, user IDs, and host configuration.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/files/selfcert/docker-compose.yaml#L1-L17", + "version": "repo-lines-v1:sha256:b539b4d7281e53467b5c4de9a2952b76328dc036c4eb5b7fd38405f906ef97cf:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUwNWYxYTI4NDBlZWYzMDc3ZDJmZGM1Y2UzMGZkOTdmZWVkMzhlNDk4NmU2M2ZjOGFhMjg2N2MxZDBlNDJlYTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhN2I1OWY3ZGI1OTk5YWVlYjhkMjFmOTIzODdlMWViNzhhM2UwYTY1NGVjNDU5OGI3ZWU3ODM5NzllNWRjMjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZmNDE4ZTg3Y2VkYjYyNjg0MmM5ZjE5OTY2MTEzZjYxYmE2MGQyYTkyZmJkNDg2ZmMzMGJlZDVjZTBhNjA2MDMifQ" + }, + { + "resource": "repo://hub/documentation/operations/files/standard/docker-compose.yaml#L1-L17", + "version": "repo-lines-v1:sha256:b539b4d7281e53467b5c4de9a2952b76328dc036c4eb5b7fd38405f906ef97cf:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUwNWYxYTI4NDBlZWYzMDc3ZDJmZGM1Y2UzMGZkOTdmZWVkMzhlNDk4NmU2M2ZjOGFhMjg2N2MxZDBlNDJlYTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhN2I1OWY3ZGI1OTk5YWVlYjhkMjFmOTIzODdlMWViNzhhM2UwYTY1NGVjNDU5OGI3ZWU3ODM5NzllNWRjMjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZmNDE4ZTg3Y2VkYjYyNjg0MmM5ZjE5OTY2MTEzZjYxYmE2MGQyYTkyZmJkNDg2ZmMzMGJlZDVjZTBhNjA2MDMifQ" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L203-L220", + "version": "repo-lines-v1:sha256:dc09749a638243c0c7ec4764331b311acee4546ae1f7bad4dad3612eee90c653:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYyNTZkNzhlZjNiZTJkNWM3NDg1YTk0MmI3ZTZmNTI3ZjM3NDVmNDYxMjJiNThjNzc3MDI0ZjBlN2Q3MDI4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVkYTM0ZmU3NWVmYmIxOWQ5YTU0OTE1NTZlYzE3Y2JlODYwNDhjOTkyYmVhYjdmZGQ0YzFmZmJjOTI3YWMzYWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiZmM0ZTEwYmZhM2ViMWRmYjY4YjRjNjlmMDhkMTQxYzJhMDVhMDJmZWZmNzRiMmY4ZDIzMmE0NDJlYmY1MWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI4OWM2MWY3MTFhNTkwNDg1YjMyZjFmYmFiNzc5ZWFhOWZlMWQwNzA0ZDE2YzhiNDdlMWVmM2I2MDU3Yzk5M2QifQ" + } + ] + }, + { + "id": "claim_b3fa30ad8b314c438d1ee77bb1010b41", + "statement": "Self-hosted example paths are inconsistent: the guide instructs traefik.yaml but the selfcert Compose template mounts traefik.yml, certificate filenames differ between the guide and Traefik template, and the guide spells base-path concatenation differently across directory and symlink examples.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/files/selfcert/docker-compose.yaml#L21-L34", + "version": "repo-lines-v1:sha256:9dcff963f2c7f91ba13b5e128b8bbf32a50e244981de70ccb2fc3f5ff4d61061:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRiZDMzNjQ0NTBiOTIwMjU3OTIzYzUwNWI1ZWI4YmU0YzA1Yzg2NDI4MWI5MWYzNjlhYWEwMjVjMGQ1YzUxZmEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwOWQxNWQyMzMzZTBmMjgxYjI5ZDA3YWFhZjJlNDhhNmEyYzA5M2RhMjcwNzQ0MTM2ZWExNTlkZTIxNzg0NWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZmNDE4ZTg3Y2VkYjYyNjg0MmM5ZjE5OTY2MTEzZjYxYmE2MGQyYTkyZmJkNDg2ZmMzMGJlZDVjZTBhNjA2MDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMzMzE4ZWY1ZGRhY2QxZmI2MzQ0OGU3ZjI0M2UyNmNkYjAyYWVmMzIzZjk3YWFiZmVjYjJlYjk1ZmVhNTFjMjUifQ" + }, + { + "resource": "repo://hub/documentation/operations/files/selfcert/traefik.yaml#L9-L12", + "version": "repo-lines-v1:sha256:5c7f995263b210e6d98540c98e7e4ca79b38bf891cdcd5c69b7efc07ca690176:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzFkYjYzMTExY2FkZjAzMGQ3NTc1M2I3NTJkNmJhMDE0ZWI0N2M2ODM2YjJlNDBhY2JiNDRlZGE3ZmM2YTAyYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMxYzc0OTMwNmZjNzk0YzQ3M2FlNDIyMmQ1ODQxZTZmZjhhMWRkZmRmZWMyZDhjMzEwYzEwYmI5Njk2YjNiNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTJiMDVjOWU1NmIxNDlkYzczZDVlMDg4OWFmYzRmMzAwMDNjNDcxODhhMjQwNDdlNWRjODcyZGE3Y2Y4MjY2MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L137-L144", + "version": "repo-lines-v1:sha256:9908b961c45bbfd8edfcc2d34c47f0cfb50d05ffbf70f86bae8e1fb291706808:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTlkMThiZGNjZmZkYmE5NDZhZTQzNWFjMDhhM2I0MDkxNjg5MDZlODVkYjg3Y2FmYWY1MzUwZWFjZmYwMDhiNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2RhMWIzZjA1MTNjNDBjODEyYzUxNWYzYjVjYjNiOTE3Y2M4NjUxZmFkNDgwY2RiMTlkYTU2YmVhYzBiY2UxYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWE4NDZjNTc1Y2Y5NWJhMWIxMjA4YTQwNmQ5ODk2YzI1YmMwZDc5MDdiNzAxZDhlMTcyY2RkY2IyMzI4NzY2ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODhjZjE3MGEyOTZkOWJmYjI4ZTFmYmE0ZjdmZTcwZDZhZDY4ZWM0Y2RkZGNlMjM4ZWUwYzgxOTE5OGRlNTU3MyJ9" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L162-L179", + "version": "repo-lines-v1:sha256:931717d80161735828631ee06fcc83407a75e03880024c445ffc816075929193:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYwZTE1MTFmMTY5Y2QyMWRmMjYyZGY2MGU5MzNiYjgyN2Y1ZDU2ZjljM2I4MzI5ZTBkYmEwNzEwMDFiMmM3MzciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJkNmNiOTllMzhlNDc5MTkyOGI3NTUxYzdhZTgwM2EwNmJmNzgwYTYyNzRmMmRiNDQ4NDgyNmVhZjg2NjdmYzIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgzZThjZGEyMjViYWE5ZmJmMDVkNmUxMTA5YzNhYWNhYmZjOTI2NjUxMWMxNDI1YTc4YmVlYWYzNDM0YzAxYzYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY2Y2VmZWQyNmNlYjhiODUxMmEzMDM4ZDYxOTIyOTNiNWY5OWM5OWFiMjNiZjI5ZmU2ZWM5YzViNmZjNWI2ZGEifQ" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L235-L243", + "version": "repo-lines-v1:sha256:500ed3a14d68d3af916f806350cdaf272225312d5b43d0f30e1d5025aa0824ec:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTc1ZjIwMjE3ZWUzMTQ5NWRhNGE2OTc1OTU4OTNiZmU3ZmQxZTAyNTJiZDJlZmFkZmNiODY5Yjc4Yjc0YzdjYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTdjNDMzZmI4YmZmNzRlMzBjYzk4MjY3MjI2ODQyZDhiNzI2OGUyMjJhMjU4ZmNhNTY5YWU1YjBjNGQ3MzNkZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWFhY2UyOGRiYjc2ZTFmMDI3YjQzYTkzMTJmNjU3MjQ2MmIxNzMwN2ZjNTVjYzIwY2MyZGI1ODFiMjMyYzlmNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGRhNWI3YTExMmUyMTAzYzIwZGUzMmU3MjJhOTE0MWVlMGJjZDk0YjdmMThlMjY3YjE5NTNkY2U5OGI0NDc2NSJ9" + } + ] + }, + { + "id": "claim_cd076f0c540a47ae8bda6e438bbd841a", + "statement": "The draft Kubernetes guide contains a Sesam Helm repository URL with a duplicated https:// prefix and does not provide a complete chart installation recipe, instead directing operators needing a license and secrets to support.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/self-hosted-k8s.rst#L70-L85", + "version": "repo-lines-v1:sha256:22800b73e534eb44afb5a091dfc89706ae64fd102927719a0e8dd8af3086d3cc:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5YWEzNjZjMWQ0ODUzMjg2NWU0NjVjYzAwNDkwM2MzMDc2ZDg5MGI5NjlmYjI1YzhiMDE1NjI3NDE4MzVlNjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjYzUwYjdhYWVjYjQ5YzQwM2EwMTg5MmM0OTgxZTdjNmNlMWEzZGEyOWFjZWYzM2I2YTg0ODhhYjQ5ZWFmMTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjlmOGI3Njg5MDhiMjI2NzNmZGJmZjZmMmJjM2ZlYjI5YTQ4OTEyYTU5ZmVjZGY5YzYwMTIyMjM5ZjU3NjI1MTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIifQ" + } + ] + }, + { + "id": "claim_a86533551a7a4288aac6f4525f19e077", + "statement": "Self-hosted subscriptions are required to run the latest image of their chosen software channel, which is not the same requirement as selecting the channel named latest.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/self-hosted-k8s.rst#L17-L18", + "version": "repo-lines-v1:sha256:f4c4992529f0d5802a9e63509c56a3a8bfab266ff8204c1345b1bf480b86fb03:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2Y1MDYyYmU0OWI2MGZhNjI0Zjg2NDY5M2IzNTBkZDkwNjEzZWZmNzgzYWMzMDQ0NmE5MjIzNzQ0YmQ2ODA4NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDYwMWY2Yzk3YWE2Njk1MDZmZDgxOGVlMTQ3ODU3MWExMzQ0NzZmNWU3MGU4N2I1OWZkMDc3ZDRmYzVjMmMzYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzBjNGIwY2EwNjI0ODRlZjRhNzVhODZhM2NmMTEyMDMyODY0Y2NhZWE3MGFjNTcwNDExNGQ4ZGJmMWE4YjZiNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWU5N2FmOTc1N2U1NDNmMWFiYjA2MzVmMWMxMmIwNjZlNWI1NTllMGU0MDVlZDQxOGE4NGU3NDBiNzgxZDhkYiJ9" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L12-L13", + "version": "repo-lines-v1:sha256:f4c4992529f0d5802a9e63509c56a3a8bfab266ff8204c1345b1bf480b86fb03:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2Y1MDYyYmU0OWI2MGZhNjI0Zjg2NDY5M2IzNTBkZDkwNjEzZWZmNzgzYWMzMDQ0NmE5MjIzNzQ0YmQ2ODA4NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDYwMWY2Yzk3YWE2Njk1MDZmZDgxOGVlMTQ3ODU3MWExMzQ0NzZmNWU3MGU4N2I1OWZkMDc3ZDRmYzVjMmMzYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWY1MmE2OTJhOWJiYzJkZDk4YTJkYTRlNGVkOWFkNzU0MjE5YWI3NDUwMzQyMTM3Y2EyMDgzM2NlNzJmNTFmOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWU5N2FmOTc1N2U1NDNmMWFiYjA2MzVmMWMxMmIwNjZlNWI1NTllMGU0MDVlZDQxOGE4NGU3NDBiNzgxZDhkYiJ9" + }, + { + "resource": "repo://hub/features/software-channels.rst#L11-L16", + "version": "repo-lines-v1:sha256:65d232d8a214b977882f30e3b36c7c6d935165932b9a90c3438c56c7fa76b7fa:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmUxOWM0MmQ5NmQ2OGU1ZGRhODRlYjkxZDYxMTc4ODRiZjg0NGY4Y2Q4MTFhNWUwNDk0OTRkMzQ1ZDEyMmU5ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTgxMjRiMGEwNTdlYWFiN2YyNWE0ODFmZGZhOTNjMDhlZWI0N2E5ZWZkOGIyYjFlYzFkYTNiN2Q2MDJkNDlmNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGY2ZGVkNGE5YjBhYmE3MmFmYmRjZDY1YjE3YzliMGFkM2IxNjBlN2ViODM5MDNjNDUyNDlmMGM3NjczNmNkZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzdkZmI2OWY5NTI3YTI1YmY2MjVjNTE1ZjA5N2Q5OTQ4YmY1ZTIyYTQwOWRmOWU5MmNjMjlhMjRkYTM0MmNhOSJ9" + } + ] + }, + { + "id": "claim_98b17b7e91c54acc83a4c88ca22fcd2f", + "statement": "Sesam's phased software channels assign weekly-prod to production two weeks behind nightly, weekly to staging one week behind nightly, nightly to development, and latest to expert development with a release for every merged pull request.", + "evidence": [ + { + "resource": "repo://hub/features/software-channels.rst#L9-L16", + "version": "repo-lines-v1:sha256:d91e297e77e6abfc90d2b82faf82df506c39fa3f1b324bfb0e825a9fca2120e4:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTZlMWEyMjE2NmE0YWZjMDdiY2Y2Zjc1YmE4YTRjMzhkZmZkOWIyMWM4NmU2YWNiZTAzMzcwOTk2MTNkZDJkMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTgxMjRiMGEwNTdlYWFiN2YyNWE0ODFmZGZhOTNjMDhlZWI0N2E5ZWZkOGIyYjFlYzFkYTNiN2Q2MDJkNDlmNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2QyMTBiZTdjYzBmNzJjYmY2OTRmNmJlNzhlNmUwODE2NzA0ODk4MTJmZjI5NDRmZWExYzVhNDRlNjRhNGRmMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzdkZmI2OWY5NTI3YTI1YmY2MjVjNTE1ZjA5N2Q5OTQ4YmY1ZTIyYTQwOWRmOWU5MmNjMjlhMjRkYTM0MmNhOSJ9" + } + ] + }, + { + "id": "claim_f8fce2885c6a4ad58dfc6702d238722a", + "statement": "Weekly/nightly upgrades are scheduled for 00–03 CET with weekly upgrades on the night to Monday; promotions can be withheld, security hotfixes can bypass the window, and downgrades are unsupported.", + "evidence": [ + { + "resource": "repo://hub/features/software-channels.rst#L18-L22", + "version": "repo-lines-v1:sha256:213b16e3ceba2fc4162eedd47d5630d84467b182abd09a227536380a9da7d63b:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2Y1MDYyYmU0OWI2MGZhNjI0Zjg2NDY5M2IzNTBkZDkwNjEzZWZmNzgzYWMzMDQ0NmE5MjIzNzQ0YmQ2ODA4NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTdhMDg5N2Q2ODdmZTdmYTE4YmM0ODZhOTUyNGNlNTI1OTcyMDM5ZjUzMmUwODU4YzM4Zjc5ODIxMTQ5NGEzOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjhiZWI5MWNjOGNmNGI5MjliNjI2NDY0YWYzNzAwMTkxMzc3NTRiNTk1NTY0N2Q2MTA0ZjE3Mjc5NTJmNjZjNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_3a7ad92572c14eb494b94783f33f883b", + "statement": "The single-machine self-hosted guide recommends at least four CPUs, 16 GB RAM, and a 350 GB fast-storage data partition and requires Docker on Ubuntu >= 20.04 or RHEL >= 8, preferring Ubuntu.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L16-L27", + "version": "repo-lines-v1:sha256:7c02e5c8c6d4ecb14b5d0422e1cb787bb9f03bc7b0519b64dd347e2775ca762c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1MmQxM2ZhMzM4MTViZjZiZmM1NDVkN2ZjNDFmZGUyZGNlMzg1YmNiOTdkMjFlMGJmMmMwYTcwNWUwN2E0NmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMwNWFkNDI0ZjA4OTgwYTI1NTdlMWNmZjJhNjNkZTE5ZGIwYTFiNWEyNTQ0YTgzYjIxYzIzYTRkYmQyZmVhZWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI4ZDFhNTAzMjAzM2UyZWYzNThhZDg5NWY1Y2U3OWRmNDEyNTJiYWM1ODQ4MThjYTUxMTZjNzI3MWFiMjY3ZmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYTc0MDg4YzZiYTJkY2E0YzQ4MTJlZTY2YjY2YmZhZWIwNjBiZGViZWUyZGE2YmUwMDMwMDA1NDBhNGRlODYifQ" + } + ] + }, + { + "id": "claim_4386dcd82d6a468794920b1eac3be518", + "statement": "Single-machine self-hosting requires a portal subscription, license key, support-provided Docker repository login, and sesam VM user; the guide's data layout uses /srv/data/sesam/node-00/data linked to /sesam/node-00/data with a documented root-disk alternative.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L122-L144", + "version": "repo-lines-v1:sha256:831eee4d6745c5b8d14517372dfc609eed66e8498db3b2f866eeeabbdad4ceb4:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNjZTdjMTkzZTlkNmJmMTAwOWRjMGJjZTNhN2VmMTVjMjA4MDYxODcwNzBhZmI1MmQyZGVmN2RmZTMwOTlmMzAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdkYTFiM2YwNTEzYzQwYzgxMmM1MTVmM2I1Y2IzYjkxN2NjODY1MWZhZDQ4MGNkYjE5ZGE1NmJlYWMwYmNlMWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI0NzQ1OTIzMzk4ZGMwNGZlNDNhNWQ3YTZiYjM3OGMxNzk1NTk4ZjA1N2QwNmJhM2RkNTk1MDIwYjUxYjFmNWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg4Y2YxNzBhMjk2ZDliZmIyOGUxZmJhNGY3ZmU3MGQ2YWQ2OGVjNGNkZGRjZTIzOGVlMGM4MTkxOThkZTU1NzMifQ" + } + ] + }, + { + "id": "claim_31002644517f482e89390aaabba455e8", + "statement": "Sesam requires a valid license for pipes to run; the self-hosted guide stores license.key in the data directory and finishes setup by adding the node URL in the portal network tab and uploading the license.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L146-L151", + "version": "repo-lines-v1:sha256:4eb2cb5eb82fb7cf33bf388f3f9d4ba90e08edd740db861d6e33af1abd87ad64:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmU3YzJmZjIzMDE5M2Y5YmQ2M2I1MDVmZjI1MDRiOGM5OWZhMjIwYjY1MmNjNTk4ODk0OThlZTQ1NWFjMmQ5NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjdkZDA1MmJkNDI3ZDk4MTIzZmNkMGU4NTFhMmVkYmYyZGViNTg2ZGQxNjc4NjI1ZTU1YWYwOGUwMWZkMWVmNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTYxNGE4ZDhmMjMyOGFiNzc1MDhmYTNkZWM5YzA4NjE3ZTBhMzhiZGU0N2JkZjczZDhmMmUzZWU2OGFjNmE3ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2ZkNjljZGJlNGU2YzQyNmRlMmI4ODQ2MzUxN2ZhNTJmYWQxNWRjMjJlY2VmYjE4MmI3YTIwNmJhMGRlZGNlMCJ9" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L283-L283", + "version": "repo-lines-v1:sha256:ebe94fcf3f9d2670fe7784eca679b43c3782daebcf1c2a8888c7533a6380c16f:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWJlOTRmY2YzZjlkMjY3MGZlNzc4NGVjYTY3OWI0M2MzNzgyZGFlYmNmMWMyYTg4ODhjNzUzM2E2MzgwYzE2ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZWJlOTRmY2YzZjlkMjY3MGZlNzc4NGVjYTY3OWI0M2MzNzgyZGFlYmNmMWMyYTg4ODhjNzUzM2E2MzgwYzE2ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmIwOGJmYzRmMmZkMWYyYjljYmY5MmUwMzU4NGNiMDQ4NTZlMDg4MWNlMDdmMDdhOTY1ZmY5MjlkZWEzM2IxYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2M5ZTgzM2EyZDRiOTU2MmRjNDAyNGI3MTUxY2JmYTYyOWRjZDBjMjA0MDgzNjIwYmJkMTYwM2FiMGU1MmQxNSJ9" + } + ] + }, + { + "id": "claim_849fb1571eb6430f99ecb515737a5121", + "statement": "Migration of an old self-hosted installation to Compose is documented to require backing up data first, then stopping/removing running containers and copying or moving the store and license to the configured data location.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L286-L293", + "version": "repo-lines-v1:sha256:48b209d751cc40721e3c2564f785601c0dfd65e303f690a6ca5192562c45f03d:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWQ0YmZhMDcwMzRhNDc2NDZmNjgyZGVhOTMyZTVhNmRmMjllYzQ1MzAwYzI0NDRhNmU5N2IzZGE5YTJlNjQ3ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2IzMzM0ODUzZjE3M2Y1ODY3ZTdjYjcxZDhkMzhmYWFhNDA3MDZlYWIxNjkwZTRjZGFjNjNhMDFmMDVjY2YyMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2E1OTgwMGRkYzk3OTUxMDU1ZDAxOWY5ZTI3Y2M2MmFkODBkNTE5MmJjZGNiZGUyMDg4NThkY2QyZjJiMDNkMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_429db21d7caf45ffb8e51bc7eb93e578", + "statement": "The supplied self-hosted Compose templates use Watchtower rather than the overview's host-agent layout: they define Watchtower, Traefik, sesam-node, and Fluent Bit, with Watchtower polling hourly and targeting the node, Fluent Bit, and Traefik.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L27-L39", + "version": "repo-lines-v1:sha256:a11a5c0151600a17981f33179a88272a3f0a028835fdc5a8628c09f3ad06c7f1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU3MDMzNGVkYWZjY2ZkMDhjYWVkNjBjYTBkNDk5MzhiMDUyYzZhYjUyZmQ2MGRlMzNmMjEwNGY5M2NiMDFmOTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1MWI0OWFkNjRmY2RlZjliNzg4ZWJlODU0N2Q4M2E4ZTIwM2RlY2MxOGExNjkxMTA5ZGNiZjkwYWFiZTMwYTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ0Yzg1ZTc5YzM1NjViYmFmOGU2ZWM1NjQ1ZGE1NWY4MWNkNTc3MTY2ODhhMWFhOTRiZTIwMTYzNjU5MDVjZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4M2YxZjhkMDRlYzhjMTdkOGY4ZTU0MDUwNDViNTIzOTg3MDE2ZmFjYmQwNjkwODAxNGMzMjA5NWYzNTA2NWEifQ" + }, + { + "resource": "repo://hub/documentation/operations/files/selfcert/docker-compose.yaml#L2-L16", + "version": "repo-lines-v1:sha256:acb16a6e323e7b58be4b78c0e27384dd3db56caa291673b83a2d233aaeaf86b9:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhNzNmY2NkYzk5ZWE4MzU5NjdjN2RlZTdlZmJlZDFmM2NhODcyNjBkOTI5MzE4NTBmZGQ2NmRhOGNiMTJmMWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRlNDE5NzlmMjA4ODYxYmMwNDBlNWYwZDg0Njk0ZjQwMzkyODJmNTA2ZjU0OGZjNzk5ZTk4NzEzYWVkYTYyYjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjoxLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUwNWYxYTI4NDBlZWYzMDc3ZDJmZGM1Y2UzMGZkOTdmZWVkMzhlNDk4NmU2M2ZjOGFhMjg2N2MxZDBlNDJlYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEwY2NkMWY5M2E1MmIzMjA1YjM3NDdhOGI4YWU4YWUyNGFkNWU4MDE2YWZkM2FjY2UwOTZhNWEwMTJkN2FjM2EifQ" + }, + { + "resource": "repo://hub/documentation/operations/files/selfcert/docker-compose.yaml#L39-L67", + "version": "repo-lines-v1:sha256:03a1744967e6220cdf2c1f0df5019b07c758b5e74c4a06bbefd2cfd72fc5c4f7:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM3MDlkZmEzNDA1NTE0OTg5YTg2MDU1MGI4ZWEwMTA4YmNkNDI0MjIwYTk4OGQzZTY5OWZjZmM1MGY0MjIwOTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE0MGY1Yzg0NGFlNzQxMDlhYmJiZWZlYjdkNTUwZTBiNjFlN2VjYjFlNTJiNGFjZjg5OTMxMzk5NDNjN2I3MjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY0ZTMxMzI0NTgwOGFkYzNhYTVjNzAxN2Q5M2E3NmY0MTQ4MWFjMWE3MjE2NTZjYTg1ODY0NjU0NDM2MTE5NjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY0Y2U2ODVkMDY2MWFjN2M2ZmQ1MGFiMjViZDcyNGIwNmU2NGM4MDg4MWUxZjhiNzVkYTUyMzUzMGNjOGY1MzEifQ" + }, + { + "resource": "repo://hub/documentation/operations/files/standard/docker-compose.yaml#L2-L17", + "version": "repo-lines-v1:sha256:3f9bf9d2a497083a3871f8fa54ffc3fb028589eef9c862ebd2592c860492e923:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhNzNmY2NkYzk5ZWE4MzU5NjdjN2RlZTdlZmJlZDFmM2NhODcyNjBkOTI5MzE4NTBmZGQ2NmRhOGNiMTJmMWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhN2I1OWY3ZGI1OTk5YWVlYjhkMjFmOTIzODdlMWViNzhhM2UwYTY1NGVjNDU5OGI3ZWU3ODM5NzllNWRjMjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjoxLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUwNWYxYTI4NDBlZWYzMDc3ZDJmZGM1Y2UzMGZkOTdmZWVkMzhlNDk4NmU2M2ZjOGFhMjg2N2MxZDBlNDJlYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZmNDE4ZTg3Y2VkYjYyNjg0MmM5ZjE5OTY2MTEzZjYxYmE2MGQyYTkyZmJkNDg2ZmMzMGJlZDVjZTBhNjA2MDMifQ" + }, + { + "resource": "repo://hub/documentation/operations/files/standard/docker-compose.yaml#L41-L70", + "version": "repo-lines-v1:sha256:9f30ce119736d0fdf2d6403448a52a931dd2867748c4e81c25ac65c850c693f5:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM3MDlkZmEzNDA1NTE0OTg5YTg2MDU1MGI4ZWEwMTA4YmNkNDI0MjIwYTk4OGQzZTY5OWZjZmM1MGY0MjIwOTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE0MGY1Yzg0NGFlNzQxMDlhYmJiZWZlYjdkNTUwZTBiNjFlN2VjYjFlNTJiNGFjZjg5OTMxMzk5NDNjN2I3MjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY0ZTMxMzI0NTgwOGFkYzNhYTVjNzAxN2Q5M2E3NmY0MTQ4MWFjMWE3MjE2NTZjYTg1ODY0NjU0NDM2MTE5NjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY0Y2U2ODVkMDY2MWFjN2M2ZmQ1MGFiMjViZDcyNGIwNmU2NGM4MDg4MWUxZjhiNzVkYTUyMzUzMGNjOGY1MzEifQ" + } + ] + }, + { + "id": "claim_60abfa91664e49479257939015e3e395", + "statement": "Both self-hosted Compose node configurations mount host data into /sesam/data, enforce licensing, use engine-managed microservices, select checkpoint backups under /sesam/data/backup, share external sesam/microservices networks, and expose the node through Traefik's internal port 9042 routing.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/files/selfcert/docker-compose.yaml#L39-L64", + "version": "repo-lines-v1:sha256:6d4e154b73a53a9f83baf45503eed07743119cd4c365a241c8f8053f42dc09b8:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM3MDlkZmEzNDA1NTE0OTg5YTg2MDU1MGI4ZWEwMTA4YmNkNDI0MjIwYTk4OGQzZTY5OWZjZmM1MGY0MjIwOTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjOTlhZjdjNmE1M2JjNmI1NGI5ZTdlYmQzNjBlOWUyM2Y0MTdkYjE5MzA0MmRiOTVmMzRjMzBlMGU3NWVjZGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY0ZTMxMzI0NTgwOGFkYzNhYTVjNzAxN2Q5M2E3NmY0MTQ4MWFjMWE3MjE2NTZjYTg1ODY0NjU0NDM2MTE5NjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJjYmQ4MjBjZmUzMjcwNDMzYTViMjVmZWYwMTA4MzE0NTFmMDA0ZGY0MWM4ZGEyNjVkY2E3NjMxMGVkNzEyMjQifQ" + }, + { + "resource": "repo://hub/documentation/operations/files/selfcert/docker-compose.yaml#L89-L93", + "version": "repo-lines-v1:sha256:2f29a60b3ec121d00ba7cd3ab64e321b6ea583951a6fb63fc5b7e1995ed839f0:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGUxODhlMDVhNzBjYzkwZDdjZTg4ZjMwYzdlYWI0N2NmMzgyMWE1MDljZmQ0NDU0NmU3ZmYyN2Y5YWIwYTg1YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGJhZWI2OTNjNGU4NzBmYzg4YmRkYjdhZjdjMjA5YWE4OWI5YTgzN2NlNWQyOTM0OWUzNDEyOWVhNTBjMTRhNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTA2Yzc4YmYwMjE2MmI2N2ZlMjJjN2M5MDZmMTIxMmYxOTQzNTUwYzA1OTFmNjczMGMxYjJhNWVlZmUxOTlhMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/files/standard/docker-compose.yaml#L41-L67", + "version": "repo-lines-v1:sha256:d6823078d3bf14de48dc246fb0f95f69fe1d37acb7ee82888348534e4c66ecd6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM3MDlkZmEzNDA1NTE0OTg5YTg2MDU1MGI4ZWEwMTA4YmNkNDI0MjIwYTk4OGQzZTY5OWZjZmM1MGY0MjIwOTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjOTlhZjdjNmE1M2JjNmI1NGI5ZTdlYmQzNjBlOWUyM2Y0MTdkYjE5MzA0MmRiOTVmMzRjMzBlMGU3NWVjZGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY0ZTMxMzI0NTgwOGFkYzNhYTVjNzAxN2Q5M2E3NmY0MTQ4MWFjMWE3MjE2NTZjYTg1ODY0NjU0NDM2MTE5NjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJjYmQ4MjBjZmUzMjcwNDMzYTViMjVmZWYwMTA4MzE0NTFmMDA0ZGY0MWM4ZGEyNjVkY2E3NjMxMGVkNzEyMjQifQ" + }, + { + "resource": "repo://hub/documentation/operations/files/standard/docker-compose.yaml#L92-L96", + "version": "repo-lines-v1:sha256:2f29a60b3ec121d00ba7cd3ab64e321b6ea583951a6fb63fc5b7e1995ed839f0:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGUxODhlMDVhNzBjYzkwZDdjZTg4ZjMwYzdlYWI0N2NmMzgyMWE1MDljZmQ0NDU0NmU3ZmYyN2Y5YWIwYTg1YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGJhZWI2OTNjNGU4NzBmYzg4YmRkYjdhZjdjMjA5YWE4OWI5YTgzN2NlNWQyOTM0OWUzNDEyOWVhNTBjMTRhNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTA2Yzc4YmYwMjE2MmI2N2ZlMjJjN2M5MDZmMTIxMmYxOTQzNTUwYzA1OTFmNjczMGMxYjJhNWVlZmUxOTlhMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_7a22903323094ae599afb75fb23f0135", + "statement": "The draft self-hosted Kubernetes guide requires Kubernetes >= 1.22 and at least one worker with eight CPU cores and 32 GB RAM; its GKE example recommends a dedicated n2-standard-8 node pool labeled sesam.io/nodepool: primary, kubectl access, namespace sesam, and a 512Gi ReadWriteOnce PVC with storage class standard.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/self-hosted-k8s.rst#L21-L68", + "version": "repo-lines-v1:sha256:80217a39eb084ec146c976d3e3b328fa97826d88c17a3c004be78eb61fc3c7e6:eyJzZWxlY3RlZExpbmVDb3VudCI6NDgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1MmQxM2ZhMzM4MTViZjZiZmM1NDVkN2ZjNDFmZGUyZGNlMzg1YmNiOTdkMjFlMGJmMmMwYTcwNWUwN2E0NmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM2MWNkZWZjODkwYzUxYWJhNmUxMDM3ZjViNzk5YWE1MzNiODEwMWJjZTE5YWZiMWFkYjY1NDQ2YmYzN2IzMjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI4ZDFhNTAzMjAzM2UyZWYzNThhZDg5NWY1Y2U3OWRmNDEyNTJiYWM1ODQ4MThjYTUxMTZjNzI3MWFiMjY3ZmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYxNTYyMGM3YTk2M2U1N2YyYWIzM2JkNzllNjY5YzU1ZTYyNDU2MDM3ZDljYmU5YjNkNWY4ZGEwMTJjNWZmZDcifQ" + } + ] + }, + { + "id": "claim_206f74b9302346bf8e3c596511784246", + "statement": "The draft Kubernetes guide supports only Azure Storage Accounts as the cluster backup backend at its authored stage, including in its GKE deployment example; its PVC requirement addresses persistence separately from backups.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/self-hosted-k8s.rst#L31-L35", + "version": "repo-lines-v1:sha256:aa191ccff1508cf2f2778da27b2eb0e607506d3c8e98c3a68188bca51f6784e9:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdlYTA1NDg0M2I1ZjAwYWVhZTY2YTI2Nzg0MWE2OWQ2MDRlOTEyNTJjN2JhOTRmN2ZjOGNiMTgzYmQ5MDRmZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGI0YzRmODg5MDdiNWE3MmFlOTliZDk2MjhlYTMyZmM1ZDgyZTg2MDU3MzMzNjYxYzZiMTY3NjViN2I2MDBlMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODA3ZTFmNDAyN2Y3ZWI5NTNmMDNjMTY3NDllOTJiZTY4NWE5MTRhNTNiN2FjOGVjMjE3YzRiN2Y2MDRiMDU0OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWUzMWY3YmQ2Y2E4NTUyYzZjMTYwOTMwZjJhZmY5ZTYzODdjZmY3OWUxYjk3NWE2NTQzZTMxMDc1YmQ3OGQ2YiJ9" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted-k8s.rst#L48-L68", + "version": "repo-lines-v1:sha256:5d084a2d57a438317f44bb10a2a4ce09dc5250c675a24ae7d486e111d760a84f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFlNzA4ODdkNGUyNjM4NDZmYjBiZjc3MGRmMmRhYTYxMDQzYzA1MWQ1MWNhZmU5ZGEyM2VmYjZiNTgwYTQ5OGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM2MWNkZWZjODkwYzUxYWJhNmUxMDM3ZjViNzk5YWE1MzNiODEwMWJjZTE5YWZiMWFkYjY1NDQ2YmYzN2IzMjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY0ZDZkZDQxNTk3NjZlODkwODEzZDMxMjJhYmJlMjA2ZjJiZGMzZGY2ZDg2NDIzZjhhMWVkYWExYmQyMDVmNTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYxNTYyMGM3YTk2M2U1N2YyYWIzM2JkNzllNjY5YzU1ZTYyNDU2MDM3ZDljYmU5YjNkNWY4ZGEwMTJjNWZmZDcifQ" + } + ] + }, + { + "id": "claim_564c7c422d3b427d9046a70aacd67da1", + "statement": "Self-hosted API clients require inbound 443, which can be accessible over a local network/VPN; automatic certificate HTTP challenges require public inbound 80 from any source, while the guide allows skipping that opening for operator-provided or self-signed certificates even though selfcert Compose still publishes 80.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/files/selfcert/docker-compose.yaml#L24-L30", + "version": "repo-lines-v1:sha256:cf42d0c20f2835ea4152c322cdd7466ad0df1b2f7fc713cee5bdd01cd392ae28:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjQ1NGRmYjQ1MWJmZGYyM2ZjMzY5NmU0YjI1MjZjZjUxNjA3MzViMGJhYmY0ZDdjNzUzMzkwM2QzNWRjNWUyMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDNhZTM2ZDQ3NWJhNDFlMDA1MmNhYzYxNDNmYTM1MGYyOWY1MmU1YmIyM2RkOWJkMDA4NWExMDY2ODU4YjJhOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWUxMzNhYWQ3MWZjMzkzOTYyNThiZTliYzZkZDlkOWFkYzA5NDY5MGRjMjY2MWU5NDBiNWM3YWYwNDNhYzdiOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmU4YmYwOGE2YTYzY2MyMDQyY2MyOWY4NGYyNDE1OGFiODZiZTM3NjFkZjMyZDQ5YjcwZGY2MWEwMzlkMWNkMiJ9" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L49-L57", + "version": "repo-lines-v1:sha256:ec9e1b676b1cf4532a2f82e65e12ee05d8c69491c33269dd6789f28798ee3378:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU3YTllYmI4ODA4ZDE1MTVkN2JlMDNkZTYwMTE0MzJlODZlZmY3ZTg3YThlYjZjMTAzMWY2MzA3MjRhMTZjMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzEyYTlhNjRiYzI5MDRkOTdhMTdjYWU5ODRmOTdiM2NhYjQ0ZDRkYjMyMDFlM2IwNDI0MzEwMWYxMzY4YmIxZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzhhNDczYzUyMTRlNTVmY2I1MTA2ZWQ1YmQ0NmQ4NjVkODNlMjg4N2Y2ZDJkOGQzZmQwZmNjMDU5YTExZWFiYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGQ4MmU4ZGQ0NDBjMWQ0YmY1NGI5YmMxZjA4MGYwZTJiMDQ3Njk4YWQzNzNhYTMyNGRkN2Q2Njg1MDUzNTc5MSJ9" + } + ] + }, + { + "id": "claim_12e02f035c744be595cdecf90f8ae1e2", + "statement": "The self-hosted guide requires outbound HTTPS to Docker domains for image updates, Let's Encrypt when using managed certificates, Sesam domains for portal/telemetry/agent services, and PyPI domains for agent dependencies; blocking these prevents updates or renewal and disrupts portal retrieval, notifications, or billing telemetry as applicable.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L77-L113", + "version": "repo-lines-v1:sha256:eb32025dbfe798334831b7d387fd045fb4e79a2a90afe83b099e6605f3cb0112:eyJzZWxlY3RlZExpbmVDb3VudCI6MzcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNlMGNiODFhNThmMDgzNDFhZjAxYTBhNGVhODJjN2Y0OTU5MGUwZjVhZjYwYTYyZjliZmZhNTdhZTI0OWI5NmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE0MmNmMTcwNjBjNjc1YjFjZTllY2EyNDFlNmNiOGEyOGYxMDc3ZGI2NTM2MWRkNWQ5ODM4OWI5YzE5Y2VlYmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc4YTQ3M2M1MjE0ZTU1ZmNiNTEwNmVkNWJkNDZkODY1ZDgzZTI4ODdmNmQyZDhkM2ZkMGZjYzA1OWExMWVhYmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNkNjEyNzE0ODk5YTc1NmM1MTMyYTZkNWY2OWJhMGI1OGZkNGQxY2Y5MWVlODg1Y2E3Zjc2M2NiZjJmMzNmMTYifQ" + } + ] + }, + { + "id": "claim_7e2bd19dc2934c73987b76608ff92d3b", + "statement": "Self-hosted outbound firewall openings are documented as necessary to operate under the terms of service, with domain/wildcard rules or a proxy favored over fixed addresses because CDN IPs can change.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L115-L117", + "version": "repo-lines-v1:sha256:b441d34b534cdbcb8c15e78e6098924c828b00867769ee8634e437ba68d8264b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTAwNDAxMjJiMjNhMzk0YjI2ZGE3YTdjODBkYTZhNTE4ZmE3Yzk0MjI5ZDJmOTk0Y2E2NWRjYjg5NGY1OWIwZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODIxYWYwMjk1ZWM2NjRiODI0NDhlZjE4Nzc2MTM4NmRlNDZkZTdjMmQwMTBiOTdkOThiNDZmNjMwNjBkYjgyMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGY1NzFmMWE2ZTU1NmJlMzNjMTk5NjA0MmVjMGVlZDQ0NjNlZDcxMGI5ZGFjMjdiYTU1OTE4NGY2ZTMwNGI3YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjAxN2I4ZGMxNzQwODhiN2EwNDRiNGU2MWI2MTJmZDhiZTgwMjA0MmY3N2IxZjRmMzA2ODg3ZDQ0NGI0NDVkMSJ9" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L30-L33", + "version": "repo-lines-v1:sha256:b1fb124fbeafa4d1441f1346366630d91f92f8ad5f652ff5bc8931b4a04f01d0:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjJlNmU3MDEyODUzOTdiN2Y3NjQxNzQ2MDhlMDU5YjA4YWEyZjgxNjgyZjM1MDUyMjAxNjgyMjUyMGQ2YWQzYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGMyNDYyZWE5MDcwN2JhOGEyM2ViZjMwNDdkOTM1Zjc3ZDNjYWZjNzljZTJjMmMwOGViMTUxYmMyMmRlOTk0MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmRhNDY5M2M2YmNmNDlkNzdhYzllZTA1ZmY4ZWZmYjE0MjQ5OTlmNDcxYTU2NThlZjM0ZjRlODdmMDhlYTcwMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjE5ZTRkYjQwYWIxZjlkM2I2NWE5NmQxOTc5MTQ0NDcyYWM2YjU4YzU0YWY4NTQ5YjNhYTU4YWZmMzUyYmJjYSJ9" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L64-L66", + "version": "repo-lines-v1:sha256:9fa78f710a77f8fe3b43e53d3c52f41292d39c79b37d3daa7139476d7dcd007a:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTAwNDAxMjJiMjNhMzk0YjI2ZGE3YTdjODBkYTZhNTE4ZmE3Yzk0MjI5ZDJmOTk0Y2E2NWRjYjg5NGY1OWIwZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjkzZDBjZGJhMmUwNjc1ZWI3OTBhMGFhODg2ZGI1YjczZTA0Mjk4YzVhNmNkMzFlY2ViMmQ1YjNlMGU0YjJmNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWE3MjEzNmM3YjUxMGIyZjY3MWY3M2E1MGNkN2Q0ODEwNjkyMWMzNjUzZTBmNzQ0ZGFiOTgyODQyMzQ5YzY5NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2ExNzAwYmYwM2JmZDc4MjRkZTNlYTg4MmNhYTI2YWQyMzkxODA3ZTFhYmFiZGM5NmI0ZjRlM2QzODE3MzdmOSJ9" + } + ] + }, + { + "id": "claim_1640eecdc88e4bdfa0895fddd17b6809", + "statement": "Hosted cloud NSGs expose only port 443 according to the architecture overview, while the network-policy feature supports public-access blocking or allowlists, new-architecture proxy/per-pipe access rules, and currently unrestricted outgoing traffic; this differs from self-hosted certificate and egress requirements.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L113-L116", + "version": "repo-lines-v1:sha256:8125117c88cf0e1da14cf32f6eaecdb22ee183a3e074481eed5dcdc0588431cc:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTM4OGNiZjQyYzRlNTZlOThmNTQwOGZmMjk0ZDIzM2RjMjBkOTc4Y2U1Y2ZjOTY0Zjc4ZjZjMjUzOGU5NWI1MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjE1MDBhNTIzYjNjZjFhNzc3YTY3ZGQ4ZWRjOTIxZDI1NzU5MGRhYWM5NmQ5MDQ4Mjc4YjM4NGE5MGI1NDZhMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjQ2ZmNmMDVlZjdmNmFiYzU3M2Y5MGEzZTEwMGYzY2IzMmY4NzdjOWY5MTc5NDNjNWJmZmMxMzE1NTI0NzNiZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmIwYzc0NWZkZWZmMzdhOGQ3NzNlZGUxMDlhMjlhYmUwYzJjNjlkMzE4NjRmZmRiOTA0MmUyYzJjOGMzZDFjZCJ9" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L49-L66", + "version": "repo-lines-v1:sha256:d8ab2ca759d7e155bd7cf6322829a8fa5acfa9821dff87a2dd617c1b0e54b51d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlN2E5ZWJiODgwOGQxNTE1ZDdiZTAzZGU2MDExNDMyZTg2ZWZmN2U4N2E4ZWI2YzEwMzFmNjMwNzI0YTE2YzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY5M2QwY2RiYTJlMDY3NWViNzkwYTBhYTg4NmRiNWI3M2UwNDI5OGM1YTZjZDMxZWNlYjJkNWIzZTBlNGIyZjUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc4YTQ3M2M1MjE0ZTU1ZmNiNTEwNmVkNWJkNDZkODY1ZDgzZTI4ODdmNmQyZDhkM2ZkMGZjYzA1OWExMWVhYmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + }, + { + "resource": "repo://hub/features/network-policy.rst#L9-L9", + "version": "repo-lines-v1:sha256:1a21f3c79dc2a002ce4b29634314f681d95de803817e1e7a0d19fdda1d2af675:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWEyMWYzYzc5ZGMyYTAwMmNlNGIyOTYzNDMxNGY2ODFkOTVkZTgwMzgxN2UxZTdhMGQxOWZkZGExZDJhZjY3NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWEyMWYzYzc5ZGMyYTAwMmNlNGIyOTYzNDMxNGY2ODFkOTVkZTgwMzgxN2UxZTdhMGQxOWZkZGExZDJhZjY3NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjM2NTFjYTZkZjgxZDBlYzU5NjM4YTNmYzY4NWYzOTI1ZGYxZTk4ZDhmZDVlNDg5OTExOTE3YWQxNzBmNTdhMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_0716df9fbadc428aa8208a4e15965b7e", + "statement": "VPN is a paid IPSec feature enabled through portal Products/VPN settings using customer gateway, address spaces, and authentication details; Multi and Flexi support highly available BGP/redundant connections and custom IPSec rules arranged by support.", + "evidence": [ + { + "resource": "repo://hub/features/vpn.rst#L8-L38", + "version": "repo-lines-v1:sha256:6414719eb7b28b3e63ef8fb2d8ad5ae9d34c8920255e6485c2c7be9d917ac030:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ2Nzk4YTdlYTI3YTM5ZTQyYzgwNGQ3YTA3ZDAwZGY4YWE3MWZlYjNhZTg5YWQwNTBhMWZhMWM3ZjlkMjRhODkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxYzM1Y2QzY2NjOGJjYzA1YjZmMzQ4ZWJhYzBlMGZjMTg5OGFjMjAxMjgyMDVhYjVmZTMwNTg4YzhjNzJjMDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJiY2JkYWZlZjZiY2JmMDc4YmIwZjE4N2M0MzFkNWQ1ZjI1ZDNjMTZiYmUxZGYyZWQ5ZDEzNWM5ODcwNTk4MjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_72253fdfab5b4d808a0b5c7bb2aafa88", + "statement": "In the overview's single-machine Local backup scope, backups run every 24 hours and seven daily checkpoints are retained on local disk; self-hosted owners are responsible for off-site checkpoint-directory or VM backups.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L43-L51", + "version": "repo-lines-v1:sha256:446bd9abc682596207dd7d2e6d24be143d83811aa701e23c7c306a00597395fa:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2RiY2U1YzI0N2IyNjY5OTU5Y2M2ZjUyOTU4NzEwOGVlYmFmMTNkOWZiMzdkODJkODA2MWE2NzBlNDY0YWY2ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyM2M3ZDRjNzhkOGFlNTg1N2ExYmY3NTMxZmMwYTdlMWYxNjBjOGExZmJjMGRiYmVkNTYzMGQwNmRlNmVhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjgzZjFmOGQwNGVjOGMxN2Q4ZjhlNTQwNTA0NWI1MjM5ODcwMTZmYWNiZDA2OTA4MDE0YzMyMDk1ZjM1MDY1YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2VlYjQzNTYwZjBhNDNiN2ZlZGFiZjQ2MzQ5NmE4YTU4ZTE2ZTA5N2VmNzQ3MTg2NTA0Y2QzNWZkMzY0YzE0YyJ9" + } + ] + }, + { + "id": "claim_306f64ead84a4c378dc66d653a877967", + "statement": "The overview specifies daily Azure VM Geo-redundant backups for all Sesam-hosted Single compute subscriptions, retaining the last backup, seven daily backups, four weekly backups, and four monthly backups.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L48-L49", + "version": "repo-lines-v1:sha256:de6808a8a5f9b62498c5a126bee589205017b58ed3f1bb60b57bcb2cb6bb3be2:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWMzODQ5MDkwMmI4NzZmOWM4N2QyOGIyMzllODE4MTQ4NDk3MDA5MTAxNjYwNDdiOWFmNGM1YjAzZGY3MTdjOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYThjOTBjNTc4OWNlYzBjMzkxNDhlMmNjZWMyYTNmYWI2MGMwMTRlM2UzODRhNWU2Y2ExOGI5NmVhYTM2MzRhZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWU3ZGIzMWY3YjZiMTFjNDRhMmQ2NzBlN2I0OThmMThmZjJmOTI0Y2E0MDAyM2IxNDkzMTVhYmIxNGEzMGQ5ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2YzNGY5YjM2NmYxNzY5NDIxNzdlZTNlNDhkYWJiZGQyODAwMmU5OTRjMGZjZWY1M2Y2M2ZkMThkZDk2NDk1NyJ9" + } + ] + }, + { + "id": "claim_6f04bc459b6b4e4c9efa8d029f2192f9", + "statement": "The clustered overview specifies backups every 24 hours with a simultaneous Geo-redundant copy to the Azure subscription's storage account, retaining the last backup, seven daily backups, four weekly backups, and four monthly backups.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L78-L81", + "version": "repo-lines-v1:sha256:00aef67e38c4eab617a22b04154411d527d0fe57d3224fa9dba9c6e046ee424d:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTlmNTlmMjIyNjZjZTNlMDNhZjViN2ZhNGIxN2Q4MjkxNmZhNDMwMjFhMjQ4NTA2NzNkOTY3NDMxOGVlNTRiOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGJlY2U3NjQwMTVlMzY5YjJkNGQ0NzAwY2IzYzBmNDQzMjczZmIzOTdiODY1Mzk0ZmQwYTU2ZjRlOGE3YTkwNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTk0YWRmYTkwNmY4ZWFhODE2NWY0YTNlYzMyNTIzODQyMjYyNTNkZTFhNjE1ZDA0ZDhlYzg3YTdmYTFjYjdkZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzRhNjk3ZTc2ZTJiZDQ5MTMzNmM2Nzc2YTE0YTZlZDM3NjU5ZjU0NWFkM2E3ZTgzOWVlM2U3OGJlNjA2MjUwOSJ9" + } + ] + }, + { + "id": "claim_3f23e505b3324f60b48d88aace277fa4", + "statement": "Termination deletes subscription data and backups, but the overview's single-machine Azure-backup exception retains backups for 30 days after deletion as mandated by Azure; this retention exception is not specified for every deployment store.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L118-L121", + "version": "repo-lines-v1:sha256:7f2fd85dbb1a678b83d58ec9245bf319100e9d5666f78ebde089d5b705fce560:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWE1OGQ0Y2I1NWVhOTNmYjVmYjYxNzk2OGUwYzU0NjcwNzIyZTdlMGJhOWU2MGRhM2FiZWExYzEyYzU1OTg5ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2I0ZDQ3ZDUzOTNlMGE0MzEzN2RlNzJmODMxNTBlNDZmYjg5ZGMwZDViNmJjYjg0NjM0YTk5NjY3NWRhMmQ3ZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGY0ZGY5Y2JhMDFmNjE1ZWFmNWI5MGFiZWFlMjE5ODRiMTM0ODZjMjAyZGY0MmE3MWU0MTRhODliODhkMDhhNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODczNDEwNDI2MDc3Y2Q3NDEwMWNmNWUwYzAxMWZiYmU0ZDhjZjg1OWQ2OTZmZDBmMGI4YzNiYmQ2YThmZmJjZSJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L51-L51", + "version": "repo-lines-v1:sha256:4123c7d4c78d8ae5857a1bf7531fc0a7e1f160c8a1fbc0dbbed5630d06de6ea7:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyM2M3ZDRjNzhkOGFlNTg1N2ExYmY3NTMxZmMwYTdlMWYxNjBjOGExZmJjMGRiYmVkNTYzMGQwNmRlNmVhNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyM2M3ZDRjNzhkOGFlNTg1N2ExYmY3NTMxZmMwYTdlMWYxNjBjOGExZmJjMGRiYmVkNTYzMGQwNmRlNmVhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMThmYjE4NDQ2NmNhOGRkYjNmYWU2MjFkMzdlMjJkYmFiN2EwNDA3NmZkYmEyMzdiNTNmZDAyNjhlZjk0ZWNhZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2VlYjQzNTYwZjBhNDNiN2ZlZGFiZjQ2MzQ5NmE4YTU4ZTE2ZTA5N2VmNzQ3MTg2NTA0Y2QzNWZkMzY0YzE0YyJ9" + } + ] + }, + { + "id": "claim_6eba87aa1d3a4f8b9ea9b264a01c958b", + "statement": "In the durable-data guide's daily cloud-backup recovery scenario, the last 24 hours of writes may be lost; pull sources may supply the lost data again, but pushed HTTP endpoint data may lack an automated resend path.", + "evidence": [ + { + "resource": "repo://hub/features/durable-data.rst#L15-L15", + "version": "repo-lines-v1:sha256:43d190e219b8b22dd4389d65f8b83e8cca68dd5a159eac2332166645638dc599:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDNkMTkwZTIxOWI4YjIyZGQ0Mzg5ZDY1ZjhiODNlOGNjYTY4ZGQ1YTE1OWVhYzIzMzIxNjY2NDU2MzhkYzU5OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDNkMTkwZTIxOWI4YjIyZGQ0Mzg5ZDY1ZjhiODNlOGNjYTY4ZGQ1YTE1OWVhYzIzMzIxNjY2NDU2MzhkYzU5OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzg4YWExYzFmNmJiN2RiMGI2NjEwM2MxOTNhMDI4NTdlZGNlNmIyNTFmOTVlZDg2NGIzMmEyZThkODczNmQwZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDM3ODUxMzZkMjUwZGM1MmU5MjE2MDdkOWM3MDI3M2FmMmYxNmRhYTUxNzk1Nzg2N2M5MjUzYjE0NWE2M2RlMyJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L27-L29", + "version": "repo-lines-v1:sha256:8a93ea6b2727a8649554363cea4c3744f65be144e1dbe9fd9bad5365632eff4f:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTE3NjJmMTRkOTkyNGUzN2IzMmYxYzgxZGZkMjU2NDEwYWY0NjJmNTEzNjQxNWM5Njg3N2VmYThjODAzNDVkMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYmIzNGE1MDI3NWQwMzNkZmIzMzYyZDEzM2I5NjZlYWNmZGRhNTYwYWM4MzBmNDhhNWI0YjI1YjYyMTcxOGViZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDMwNzZiNGNiMGMwMzM1NjA0NjFmY2JmY2VmNzJkYTk1MGM3Y2NjYTQ5YjQ5NjAwYTU0MmYxYzMxZjg3NzMxZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWRiNDcyZjVjMTUyNGE0M2UyMjQ3MjU5NmJiNWViOTdlZWQ0YzNkMGIyMzQxYTM0MTI5M2Q0M2VjMDhhYjM1OSJ9" + } + ] + }, + { + "id": "claim_1d023432f6f6423c977142225276f66f", + "statement": "Restoring Sesam to an earlier backup can replay outputs already delivered to external systems, producing duplicate side effects at non-idempotent targets; the durable-data guide illustrates this with an invoice sent after a checkpoint and sent again after recovery.", + "evidence": [ + { + "resource": "repo://hub/features/durable-data.rst#L31-L33", + "version": "repo-lines-v1:sha256:6a6e88c991a3da643bff88abb05d697d615d60c2bcef7521755879c5f6add049:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTUyZGNiZDg0NDM1YTJkZGRhOGI1NWFmY2E3YzhjOWI3ZjhjMjgxNTQ3MzMwNDk4ZDU2NmQ3ODI5M2RlZmVkMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDIzNjg2MWJlN2M1YjJjMjNhZTJmZjk2MTBlMmM0ZmNhYWVmMTk3YWU5NTZiOTZmYTE2MTM4MjMwNDAyZTUwOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGNkMzUxODA5ODljMGQ1MGNjNzgyMTMwYTQxZmM2YzY2NzI0MzdkZWRiM2I1NDQ1OTZjZjlmOTI5YmQwN2Q0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODEwZTNkZDQzM2M0Mzc2MTJkNTZiOWNkY2U5N2ZhZTI0NTJmZjZmNDY4ODA2NjExZDI4OTRlYzJmYTk4OGQ2ZCJ9" + }, + { + "resource": "repo://hub/idempotency.rst#L9-L14", + "version": "repo-lines-v1:sha256:2d930b04f934e890169428f4a97259d34f5a8016ce833293c349dacd0c3329a2:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDZhN2RiZTM4ODQ2ZTI2ODNiZGRmY2MwMDFhZDNkZDhiOGU0NjQyZDIyNzY5OWI5YTVmNjdlN2MyZTI1NWM3MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWQ1OTMxNmNhMmUyZWZiM2FmYTNmNzM2NTMwMDc2NThlMjM5MTkxNTlmNTQzMTY1M2EwNmY2ODg5NTA1ODY2OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWMwYjZjZWRjOTI2NzVkZmZkNTkzZTc0ZThmMWI3MDU0NWQ4NDdiYmM2NzkyYTA1MjAzMDJhZjViZmNlYjRjYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzFhYzY2NmUxNjdmZDU2YTZiNjQ5YTA5ZDU2MTNjMjM5MjYxYmY0ZDQ5ZDI4ZjE0MjA5YzlkYjkxYTNkOWM0NiJ9" + } + ] + }, + { + "id": "claim_ba903334e99b4233be0ac09fbaf74ac0", + "statement": "metadata.durable defaults to false; setting it true stores a pipe's data and state on high-durability disk, with the guide describing replicas and durable storage as reducing loss risk rather than guaranteeing zero loss or replay-free recovery.", + "evidence": [ + { + "resource": "repo://hub/features/durable-data.rst#L36-L38", + "version": "repo-lines-v1:sha256:ef64a2ba6793d71e7405451a3c05186ad88d2a08ec717c3b3aec594e83ac8b6e:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODBkOTcyMjE0MmExMDcyNWYyYzBjMjkzZjA1NWE5M2I5M2E4NWRkNGVkZjk5ODBiYWRmY2U2NDI3OTQwZjNkZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzczZTUzYzJiNzc0NjFiOTJhN2U4MTc2NjZkZTJlNjkxMDlhMDdlYTEwNjkwMWE4M2RkNmYxY2NjYWQwYjNlZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjM1MjI3OTJhNjdlNjM5Yzk0MjlhY2QyNjM5NzNmYjFmYzE2ZTJlYzE4ZTk2MzdjZDkxZmNhODYzMGM0ZTA2ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTQ3MjJiNmQzZGY0Nzk3NjAxNDIyNWIxZGEzYTI3YzVmMmU5N2U1NzhiMzg3NTBkNjRkMTZmMjBhNWU3MWExNCJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L80-L84", + "version": "repo-lines-v1:sha256:be707cb9f14400b8f53f83871032b352a618e1ea6114458da388d12b4640e9c9:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGZhZTNkNzJmNWZiZDIxY2M3OGI1Y2UwZDM0ODIyMmY1ZmI1N2IzMjAwNTIzOTVhMzEwOWFiYmJiM2RhZWU5NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmM4MzViYTMwYzViMTg1YjUwMjJlMDY0YjVjNzMwMzYwMGEwMDRjNzNmNDQzMTE1ZGE4NGJkMGE3MDRiNTRjZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2U4Y2QyOWQ3ZjVkZmI0MGUwMDYxMWFiZTMwODI5ZDEwZjA2ZGNkYmI3Mzg2OGE4OTVhNjNjNmE0MDZiZjVmZiJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L9-L15", + "version": "repo-lines-v1:sha256:fdd7d1b640d3bf37bee4ddf575ae6416a3145de01b3781d09851632dae3b74c5:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzhjZjAxMzJmMzYxOGFkMGRhOTZiOTcwOTQ0NWNlMzhjMDQ3Y2E1MjRhZWE5MWVjNDE2N2UzOGFkYTA3OTFlMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDNkMTkwZTIxOWI4YjIyZGQ0Mzg5ZDY1ZjhiODNlOGNjYTY4ZGQ1YTE1OWVhYzIzMzIxNjY2NDU2MzhkYzU5OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmZlMTM2NTU3Yzc5Y2FmY2VmNTA3YTE1NzkwZjM1ZmJhZWNmZWQxYTZhNmIxZDU3MzgwMDA4NTBkMDI4MDNmZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDM3ODUxMzZkMjUwZGM1MmU5MjE2MDdkOWM3MDI3M2FmMmYxNmRhYTUxNzk1Nzg2N2M5MjUzYjE0NWE2M2RlMyJ9" + } + ] + }, + { + "id": "claim_3b61abbf236e4fc2ae9079c8d500909f", + "statement": "Durable data is recommended for pushed inbound pipes and non-idempotent endpoint pipes, and both endpoint pipes and the share pipes feeding them should have it enabled.", + "evidence": [ + { + "resource": "repo://hub/features/durable-data.rst#L18-L24", + "version": "repo-lines-v1:sha256:687d60831c2f7b852c43ee107f43ccbff77f14597ed892d64029e52a0bb204ee:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGIxZDdjZDlmNmUwNzc5N2QyMzAyMmQyNTIzODA3ZGM1MDg3ZjAwMjlmNWEwYWNlMmU3YmUzOWQ5ODUwMDQyYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDYzMDA4ZTg2ZjBkNDhiMjhiMWVhMmQxODJiMzIxMTBmMjQ4OTk0ZGEzMWRmMmI3OWVkYWQ3OWMyNDU0YzNiYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmJmYzMxMTg0MWZmZDU1MWE2ZTA2MWJiYjA1ZjczNGNjOGE2MWVmYjI5MGMwZTg1NTljZGNlYTViNmY1MDg4MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWM0MDE4NGY4ZmFmNDExZTA2YWY4NGVhYWM5NDk4Zjk3ODYyM2U1M2EwNjMwNjMxNmI3N2EwMjc4OWYxMDA0OSJ9" + } + ] + }, + { + "id": "claim_af5abafde15a4bcbbcc126c21eac7af9", + "statement": "Durable data is paid and the feature guide says enabling it increases durable pipes' data consumption threefold; its 2022-03-25 introduction and roadmap availability on all cloud subscriptions do not override pricing's exclusion of developer backups or establish self-hosted eligibility.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L906-L912", + "version": "repo-lines-v1:sha256:d64290bc16f000d58ad97a269c017372b30482cd051b8d2f8aeb45ea34547dfd:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGE1YjQwYWRiODdlYmE3NGM2NmQ1Y2Y1YWU5MGRlMTUwN2Y0MGUzOGY5NTg2NjJmYTBmZjVlYTFmNzNiMTRhNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjczNjBhYjk3M2RlODRlYWEzMDlmZjQ4YjY0OTI4MjMwYWFhZmUzOWU1MGQxODlmMjYzYmVhODliZDRlZjBhNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmViOGRiNTM3NTQ4YjkyMWMzMzhlZWQ5Y2VjMGEzNTQyNGQ0OTUyMzFmY2RmOGYyYjhjZDQ5YmY3Zjg4NWNhMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTM2YWViN2JmOTk1YjRlZTBmMDcxMzdhODM5MDEyMWNkNjRiNDBkM2Q5MjMwNWY5N2VhYjExNWYzMTg0ZDQyOCJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L86-L89", + "version": "repo-lines-v1:sha256:f408605ad0bb5a9b106478ffd5ca30608f122de36fa8591ecb65ba5789a9068a:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWMzMGQ2NzRjODhhYzBkNmJlYmM4N2JiNjU1NDU4ZmE3ZWE4NDI0NWQxNTQzNjlkZTg2N2VhMzgwNzFkZGFjNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjJjMmY4OTI2OTgyNjhhMWIyZTMwNDFlZTRiOWIzZWM5MGI0ZjJkYjMyMDU3ODYyYzM2MGM0ZDdlZjYyMjI5ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzBjOGZjZGExZmI0MDM1ZTI3ZTYwMjlkZGQzNTRmZTZjYjI3Y2MxMDY0OWM2Y2RhMGY5ZWQ2NThlZTM2MmZkNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/roadmap.rst#L144-L154", + "version": "repo-lines-v1:sha256:7561c05167d50381e2bf298b0775758ec7531037906573f893ffa27a621f88b9:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdjNzUyZjNmMGRlM2UwYzlhYjQ0NzFiZDcxYzk1MTk1NTQ2Y2M1MGNjNGM1Yjk2N2I4NmE3N2Y1MjdmOTViMTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE5ODIzNDE2NGQxOGRmYjgzMzBiZmI5MGRjMTJmOGUzOTNjOWNhODVjZjY4OTgyOWI3M2Q0YmFhMDI4MmNlYzAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQyMjU3YzU0MDUwYzc0YzEzOWRkMTE1OWQ2NTJkMzE4NjhjODliZjdhZDk1ODNlYTQzYmZjMjZmZWRkZGMzMjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2YWIwOTQzOGYzZTRiMWFhMWJkYjczNDcyY2Q5ZDFmNjU3OGVmYTkyYTlmYjZiMmM2MzcyZWQ4MGUzZWE0ZDYifQ" + }, + { + "resource": "repo://pricing.rst#L14-L15", + "version": "repo-lines-v1:sha256:047faa8e19ce69ad2034138511a13f5c9f35d902d59f24a7abd2c41d5b9a809e:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2U3YmU0ZmMyYzUxOTljMGUwZTQxYjYxODA2MjAxZjAyMjUzZTVhOTcwYjVmYjMxNjk3MDEzNTQyYjkyODEyMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjFhYjgxYWY5Y2Y0MmFiYjUzYWM0OGM5NDU1OWQwMWQ5ODMxNzg1OWE0Y2MzNjFkMzhhYjE3NzA1Mzg2ZDEyOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNjMGNjNTdhMjkxNjI4ZmVlNTk1YmQ4MWViYjA2YWZmMTU2OTRjNzlmYThmMmI5MmFkZjk4YTE0NTBmZjkzNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDc0ZmE0ZTEzYmI4NWE3YjIxOTg5ZGNhMDA5MDU2ODI4MjdmYjYzODJmYjUzOWJiNTIwM2EwZjJiYjdiNDQ5YSJ9" + } + ] + }, + { + "id": "claim_3c2203a7b57443eebcba9f479916ff1e", + "statement": "Backup restoration can make pipes out of sync; automatic reprocessing can reset/rescan or sometimes rewind when enabled, but the default reprocessing_policy is continue, not automatic.", + "evidence": [ + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L44-L51", + "version": "repo-lines-v1:sha256:49721936dbd9f05108f09516247ef781b0bd5696ee2ef2a777179e7839ff1d65:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODQ4YWM4NjZiYTI0YThhZGVmOTkyMDQ0MDlhYTEyYjk3ZDE4Mjg1MDQyNjdlNzFhNGZhZjBiMDlkNjQzZDlmNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjcxNWY3MmNkMzg0MGIyMTk0YzBlZTQ0ZmE5ZTNkNjJjNTA4NzJkNDczZmUxNDQ1ODdhZGU2NDUwZDM1YjQ1NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjEsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSJ9" + }, + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L8-L29", + "version": "repo-lines-v1:sha256:a4b946ddb36e387d4a22d297c148b62823304265c2176c1fc46d4042a5bf3e60:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2ZTYxZDE4YzU5NzViYTYxMGJkYzNiM2M3MjE5Y2QzNDRkZWVkODU0ZmQ5MzNiOWRmMjgwMDVjZDA5MTRlMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5MmE2YzI4OWEyMzAxMGE1MTkwNGRmNTViNTljOTdlNzRhMzI2M2QwZjdmOWYzMDhmZTI3NTIwZGM2OGRjZDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ5ZDk1OWZkMGVkNDIzMTVjZjE2Y2Q3MDkyMjc1YjVjMDVkZGMxY2I5ZWYwOWU1MmNmODg3NTQ3Y2NhMDNjMGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2OGFmNDBiY2U0YWUzNTRmYmEwNDg2MmU4OWY5MGEzZWZiZTMxNjdiNjA5MjU4YjUyMzc4YmU1NTI1Mjc0Y2MifQ" + } + ] + }, + { + "id": "claim_8cd84bdb22f04665903c98b18766a1ff", + "statement": "Datasets are append-only immutable logs that append new or changed entity content after comparison with the latest content hash, and retention compaction limits otherwise unbounded growth.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L8-L8", + "version": "repo-lines-v1:sha256:e2bf9254fba26afbf7f9c0d0c1d69fc032283369f5fb267f68caf378fcc580dc:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTJiZjkyNTRmYmEyNmFmYmY3ZjljMGQwYzFkNjlmYzAzMjI4MzM2OWY1ZmIyNjdmNjhjYWYzNzhmY2M1ODBkYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTJiZjkyNTRmYmEyNmFmYmY3ZjljMGQwYzFkNjlmYzAzMjI4MzM2OWY1ZmIyNjdmNjhjYWYzNzhmY2M1ODBkYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWY3OTMzZjNiODdjYzlhYWZkOWEyMmQ0M2MzYzM3OThmMDEwNjA4OTk4NDYyODFmZmU4ZDYxMWZhY2UwY2U5NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzQ5MzMxMmViYzFlYWZkNTJjMDU4YWI2MTBiYjE1OTc0YjU5N2ViZDMzZDRhNzhmYjVkMzE2ODE3MmZmY2E3ZiJ9" + } + ] + }, + { + "id": "claim_28cc8a8dfb4f4a108f4154f42a55cf80", + "statement": "Default compaction keeps two unique versions per entity for reliable dependency tracking; keep_versions must be nonnegative, zero requires a time threshold, and values below two make dependency tracking best effort with possible missed reprocessable entities, especially sink-dataset hops, for which rescans are a suggested countermeasure.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L10-L10", + "version": "repo-lines-v1:sha256:567e557e98125e334dcb72c7cf2460f3cb5b57241abf68c7219028a9f051b663:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTY3ZTU1N2U5ODEyNWUzMzRkY2I3MmM3Y2YyNDYwZjNjYjViNTcyNDFhYmY2OGM3MjE5MDI4YTlmMDUxYjY2MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTY3ZTU1N2U5ODEyNWUzMzRkY2I3MmM3Y2YyNDYwZjNjYjViNTcyNDFhYmY2OGM3MjE5MDI4YTlmMDUxYjY2MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjcxY2QzNmJmZTdkZTZhMjNkZDljMWRmMDVmZjVmNjQ3Y2Q0MWFmZjdmN2JjZWI4YTJiMmIyYmIzY2UzMTgzOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzQwYzBiMjViMDFiMTc3M2VkMTg1NWEyZGFiMzRiNDcyNDcwZmNiNjYzODc3NzdkMGU0OTQ1OTc1YzJkOGE0MSJ9" + }, + { + "resource": "repo://hub/features/compaction-feature.rst#L44-L55", + "version": "repo-lines-v1:sha256:15796258efe5927782434c201883c1a3841b374c6862a7b3b1d6e68c7f7aa8dd:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjZDIyZDViN2RhYzY1N2QwODZhYTNjMjUwNWU2NDcwYTg5ZTJmYzMzY2EwNzUwZTI4Y2Q2NTdlNGVjNjE2ZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYyMmYzYjhlODgwMmQzNGUwMTRlZDk2Y2E0NjQzODk3MzRiOGQyMWM4YTI3N2FhNWE2ODBmMGY0ZTUwMDE1MWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjljNjczNzI1MTQ0YzA1NjM0NzA1YTRhMWE1ZTU5ODUwZjQzYmE1NDU1OWNmZmU2ZTFhZGNiMDAzZWMyMTNmOWEifQ" + } + ] + }, + { + "id": "claim_fa9cfa97567d4d538892a64f0c24daa9", + "statement": "Compaction cannot advance beyond the lowest dependency-tracking offset held on a dataset, preserving history required for tracked pipes to remain correct; disabled pipes still hold it back, and the reference suggests removing long-disabled pipes or commenting out hops.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L13-L17", + "version": "repo-lines-v1:sha256:161f3d3bb8ab13b7fe0769349e9d01cb9cae336a74eabcd637cb809d0c566485:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjFlYWFjMDdlMDA2Yjc1NjIzNmJmMzllZDhmOWM2MWUxOTk5NjU1ZTAyNTM3ZjRjODQxNTUwMGE3OTY5ODA1YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjYxMjZiMDczNDU5ZjQxYWJhMTBhMGI2M2ZiNWNiYTY5OTAwZjQ5OWU3NWI0MmIzODcxZDdkYTc3Y2ZhNmYzNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + } + ] + }, + { + "id": "claim_41b583e734e24686a7f7973e30faa2fe", + "statement": "Dependency tracking inspects DTL dependencies such as hops to reprocess affected source entities when referenced datasets change, and is supported only for pipes using dataset sources.", + "evidence": [ + { + "resource": "repo://hub/features/dependency-tracking.rst#L8-L14", + "version": "repo-lines-v1:sha256:752f9ae994e38b757195dcec312457813f6ed823de4486cff9a14aae1b61267b:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUzN2VjNzZlZmRiZDZlNTU3ZjQ4MjFkNmEyMWM4Y2E3YjBjYTdkNjdiNmNjNzIxYTBjMjI0YjU1ZmM2MDMxZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDYwZjVhODVlZmEyYmE5NDM1OTViYjFiYmQwMTZhMDVlMzk4MTljOWZmNGNjMjFhZWQwNTM3NTdiNTc4MDUyZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzI0MGVjZWQ1MDEwYTQyZjEwZDcyZjFhMDU5YTA3ODliN2NhZDVlN2E1NTA1MTFkYzYzM2FkYWQ5OGU3OTQ0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWUxMGM2MDA1NjAyNjMyOTgzY2QxMTJiYTVjZWUxZWIwODkwNjYxYzczNDk0NWNhZjllMzVjM2QyMTk3MjY3YiJ9" + } + ] + }, + { + "id": "claim_34a1d8f63d2043b5970ca657f1520fd9", + "statement": "compaction.automatic and compaction.sink default to true; sink compaction prunes incrementally as entities are written, replacing automatic dataset compaction while retaining scheduled index compaction without a dataset lock; with sink compaction disabled, dataset compaction is documented once every 24 hours.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L10-L10", + "version": "repo-lines-v1:sha256:567e557e98125e334dcb72c7cf2460f3cb5b57241abf68c7219028a9f051b663:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTY3ZTU1N2U5ODEyNWUzMzRkY2I3MmM3Y2YyNDYwZjNjYjViNTcyNDFhYmY2OGM3MjE5MDI4YTlmMDUxYjY2MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTY3ZTU1N2U5ODEyNWUzMzRkY2I3MmM3Y2YyNDYwZjNjYjViNTcyNDFhYmY2OGM3MjE5MDI4YTlmMDUxYjY2MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjcxY2QzNmJmZTdkZTZhMjNkZDljMWRmMDVmZjVmNjQ3Y2Q0MWFmZjdmN2JjZWI4YTJiMmIyYmIzY2UzMTgzOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzQwYzBiMjViMDFiMTc3M2VkMTg1NWEyZGFiMzRiNDcyNDcwZmNiNjYzODc3NzdkMGU0OTQ1OTc1YzJkOGE0MSJ9" + }, + { + "resource": "repo://hub/features/compaction-feature.rst#L32-L42", + "version": "repo-lines-v1:sha256:d2af6607630c613fcce208a2af94c48b592af8cd4e18ae09e116321b0b4af614:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ0MjBiYjlkN2UxYTg4ODg4NGIzMTI3MTE0ZDhmYWE4N2RkZWQ1NmIwMTVjZDAyNWY2MmFiMTI0ZmUyMWUxNDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImIwOTc1ZGRiNmM5NmViZmJiNmJiYzdmNjMzYmE4NmNjMmY5N2MzMmM2OTU2YTNiZDM4NWEwNDJkM2VmYjYwN2MifQ" + } + ] + }, + { + "id": "claim_3ca0e609f49642848ab3b2a89b731110", + "statement": "compaction.time_threshold_hours defaults to null and sets optional age eligibility, while pump execution datasets are always time-trimmed by time_threshold_hours_pump with a default and minimum of 720 hours (30 days).", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L57-L71", + "version": "repo-lines-v1:sha256:015e9e7470639c7942e09f5ac9fbf512ce5026812ed757010cd1b0166aaccecf:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY5N2VlZGVjNTc2NzljYmYzZjI4YTU4OWYzZjZjMWI2NmRlOTUxZmRhMmNkODU4MWU2OGUyNGFhYjc5ZjZlM2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI1MTU0YWEyZGQ5OGNiYjg0OTc5NGI0NDljNDBlZDliMWYwYTQyODQzYzU2MGMzY2M4ZTEyY2RjNDI5ZDU5ZGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY3Y2RkYTdmY2ViMjQ0NDgwZmE0NjA2YmE4NWQ2YTM4YmFkZjU2ZTk2ZjAxNDVmOTdlODIxNTIyMTdiMzg4Y2YifQ" + } + ] + }, + { + "id": "claim_77d0bf801c0f49fcb469a2661b3df371", + "statement": "compaction.growth_threshold defaults to its minimum 1.0 for automatically scheduled compaction, and compaction.compaction_interval defaults to zero for sink compaction each pipe run; a positive interval requires that many seconds since the previous sink compaction.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L73-L88", + "version": "repo-lines-v1:sha256:fa92332de2e6a973cdfaac6fb0109a1a93c6381795d57ad26edaaaea23e789eb:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjllOWZmNjhlNzk2ODUyZGNhOWIyZDgyMjhhNTQzZmJmZWQ5NGViNjJmOWY4MDEwMDNhM2ZjZTE3OWRhMzE4Y2YiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZmNDQ2YTFmOGIxYTUzNGMyNmI0MjJmYTQxNDQ5NzA0ZTcyZDJjMGU5MjVjMDk3NjkzZGI1YWQyOGI0YzU1YzMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAzYTg0NzIwMGRjYzliMzBhZDg5ZWNmMDBlMmE1OWFkY2IyZDBkOTYyYzQyZDBmYjBjY2E5ZjUxMjhkZjU1YmEifQ" + } + ] + }, + { + "id": "claim_d5fd2e199e5a4a44a9ced5479026bbb7", + "statement": "Logical deletion through _deleted: true is distinct from physical history removal; dataset-sink deletion_tracking defaults to true and deletes previously existing entities not seen after a full run, while retained versions remain subject to compaction policies.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L66-L69", + "version": "repo-lines-v1:sha256:a574df90b87759a646d3776fab95d9f0c53e2c4b71acb987d9c0f0aacbff3ffc:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDdmZmE2MzUxNzAzYjlmMWVhYzJmOTM2NGY4OTEwZTdkZDI3NDVkNGNjMjdkMDA4ZjA4YThiNjk2MzA2NmNhOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmRkYWVkNWYyOWI4MzM3MjA3ZjMxNDViZDEyMmI2ZGNiZjQwZDM0OGE4MDQ2NmI4OGM3YjMwNzMwYzE0ZTAxMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzY3MTUxN2RmMzI5YTlkNTA0NjE5ODRhM2Q1MzcwMGZkNzBhZDdmZWJiMGViNzgwNmE5ZDllYWY1NTAzOTdhMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTdhZDc1OWZmNmQzYjA4N2RmZTcyOWZjNmNjZmU2OWQ3Y2VhYmJmZDZmYWQ0NmY0N2YxN2IyZGY4YjM0OGUyNSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L140-L148", + "version": "repo-lines-v1:sha256:3b47f3786e52ba59d3e711c53fe5b3e0616ab5d1e46e686b88f235a750983add:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjg5MTc4ODhmYjgyZGVlOTgwYmYyYWEyMzAxOTE1ZDk3MDQ1YmE3NTExYWNlYzNiYTFkMjRkY2E4OTU2MWZmOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDhkM2I4ZGE2YzE1ZTdjZDA1YTJiNmEyYTcyY2YzZWVkYjExNDFlNzhmNWE1YmRmODhkMjI0NGI3MDY0NGRlMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjQzOWZlYTU3MDhmYjUyN2Q5ZWUxMDhiOTM1MDljMDU0NzQ5MGUyOWQ0NTEwY2I5M2U1ZWRhY2VlMmJlOTFmMyJ9" + }, + { + "resource": "repo://hub/features/compaction-feature.rst#L8-L10", + "version": "repo-lines-v1:sha256:613edaa2efc6ccfeb889f952823222a47139afd422c3eee2cacb64040e967a9b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTJiZjkyNTRmYmEyNmFmYmY3ZjljMGQwYzFkNjlmYzAzMjI4MzM2OWY1ZmIyNjdmNjhjYWYzNzhmY2M1ODBkYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTY3ZTU1N2U5ODEyNWUzMzRkY2I3MmM3Y2YyNDYwZjNjYjViNTcyNDFhYmY2OGM3MjE5MDI4YTlmMDUxYjY2MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWY3OTMzZjNiODdjYzlhYWZkOWEyMmQ0M2MzYzM3OThmMDEwNjA4OTk4NDYyODFmZmU4ZDYxMWZhY2UwY2U5NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzQwYzBiMjViMDFiMTc3M2VkMTg1NWEyZGFiMzRiNDcyNDcwZmNiNjYzODc3NzdkMGU0OTQ1OTc1YzJkOGE0MSJ9" + }, + { + "resource": "repo://hub/roadmap.rst#L53-L63", + "version": "repo-lines-v1:sha256:45ba990f55d3fe310d101053aab8ccbd61f17c947dc3a074162909fdefd1a91d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEzZmMwMTRhZTFhYTk5MWIyMDBjYjhiN2VkYTJmNTFmZmI3YzY4MjZhZmQzMDZjMjZiYzYzZjVjNTBmYmY3NDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4YzgyMmVjYzNjZDg5NDQ5ZGUxZjJlYTUxNmNmN2M5NjI2MDdhYjNiMmE4MDRlNDQ4OTM2NzcyZTRlMjU1MzkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMwYTEyMTJjZmEwOGI3NTE1YjE4ZDJiOTY1YTMwYTAxODc0NGNiZWJmNmNmYmQ1YWI2YjVkNmQ0MjQ2ZWNmMmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImIzMTE0YTJlNWNjMmVkZGVjYTcwZTNmMTQ4YTQ4OTMxNTk2MWUzMDk3MmU2YTAwMGVhZjExODExYTI4YTc4ZDIifQ" + } + ] + }, + { + "id": "claim_acad45117a6a4b5cacd8a8d80aa7334a", + "statement": "An entity's _previous field can point to a version already reclaimed by ordinary dataset compaction, so a historical reference does not guarantee the historical version is still present.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L91-L98", + "version": "repo-lines-v1:sha256:be8d648c70c362c23d43852aa58ef8eb48bdbbaba935a230deaa1f50d9f90f05:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmQyNmI0YjQ1ZjE5ZTQ2ZTE2NjIxY2Y3OTUwNGVmZDI4OGMyMDMxNGYxMjZiNTU2YTE0NDhjZWUzYzAzM2FhZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTM2ZTc2YTg5ODg3NTI0ZGZhNjFhY2Y3YmVkNTk4ZTEwNmRhZjgwMzllZGFhYWJjNTYzZWRjYjJjZDZiOGZjOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWM3ZjM3NjMxODMxYjg3OGUzODVkZGJjZTZhNzg3N2VhMDlmYjc5ZTIxOTcyMThkODk0NWZjZGQ2MjI3MDc5MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGQyMWU5NDhiY2U1OTExNzY1NGQxNGI3YmFkNmQyOTQwMzIyYWY1YjRhNzA0Y2Q4ZTYwYjIwNGI5ZDcwOWJmOSJ9" + } + ] + }, + { + "id": "claim_31f646c0f75a47fea19f0254cee7f8f9", + "statement": "TTL delete compaction is opt-in through compaction.ttl_deletes_hours, default null; when the latest entity version is deleted and older than the TTL, all versions including the deletion marker are removed, and the 2024-11-27 changelog says recovery requires a backup still containing the entity.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L241-L248", + "version": "repo-lines-v1:sha256:ecad64f38a9987106d222f82d3ef2123bceaa3c19acb22ef6f80882b859ecd2c:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmIwNjNlZmQxM2I4ZWJhZDAzOTI0YWZjMmI0YjIwNjcyOGE0MjY4ODI3YTBlOWUxOGRiNTMxMzY1YjE3NGQ3NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjgwZGFkNmViYzY1YmExZTNlYTZjNThjNWNhOTBiZWE1YTgwYTBjMzk3MjNiMGVlMmU5MDA1YTY5NDFiM2NhMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGE2NDJiYzYwYjI2ODBlY2I0ZmY2MDY3NDU0Njk2NmFkN2M2NWYzOTAyZjA2OGY0NzUyNjZlYTQ1YzZjMzA2ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzAxYTRkNTJlMWMyYjA0Y2Q3NGUxZWFhYjk0MjM1NmE4N2ZmM2ZlNjY0YTNkMWIxODRmNzE2Mzg4NTFiZmZiYSJ9" + }, + { + "resource": "repo://hub/features/compaction-feature.rst#L90-L96", + "version": "repo-lines-v1:sha256:e37bbe015b26b645a262e233e1ba3874c4a86ffb49aa03d2cffd5c5268bc000d:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2ZiNmVjYzg2NWVjMTIzNzQ3NTFkYWM1YTdmNDc0MDM5YzBkMjVmM2FkMTM1Mzk1ZjkwYWY4YmE4NjExN2Q3MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzIwYWYzYmUzZmRiZDdiZDE4ZTcwMzE1MWY2Y2I1YzUyZjY5MWUxNDMyYzQ0MTI0ODY0YWMwNGMzOWY1MTNlMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDNlYTBhNDBhNzVmMTkxZTRhMDliNTg1OGQyMDgzNmI1ZWU3MTM3MjhlMGFkNWRmODhkZjVlN2Q0M2NhZjVhYSJ9" + } + ] + }, + { + "id": "claim_c0d76eed38c14558a30de6332cb06b09", + "statement": "TTL delete and retract processing each default to a 60-second per-run timeout, after which unfinished work resumes from its prior stopping point on the next pipe run.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L113-L118", + "version": "repo-lines-v1:sha256:eabb300e5e9c0eed923abac69791e4d6a23a15fd12568ce45ecb11dc698d5636:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGQzNjdjOWRkNzNkNTRhYzM2YzBlZDc2MjI1MjkxNTVjOTk1YjdkNzhhYjVkODNiNmJhMGJmMjJjYWExZDc5MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWU1ODJlMGExMTQ2MzcxMzZjOGI5ZDllMjkyNDA4MzRjMjk0Mjk3MTM1MTM2MmNmNjM2Yzg0NjAwMGFlYmRhYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmFjODRiNTM4NjJhNjMzNWRmODAxNzIwNzE0YjMxMGQyZWY5NmE5N2EwZWYxYjAxOGQ3Yjg2ZTQ4YmJkNWU3NiJ9" + }, + { + "resource": "repo://hub/features/compaction-feature.rst#L98-L103", + "version": "repo-lines-v1:sha256:573713c2ae020dc77103aef9764dc37daca36c7905ff4f5a53487a918b4056b1:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTliNGZlYmZhMTI0NjQyYTI0NzU0ZDA0MDczNzdkMmNhMWUzNDA2MmYyYmQwYTk2ODAyZDNjMmY0N2Y3NTM5OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDhkM2I4ZGE2YzE1ZTdjZDA1YTJiNmEyYTcyY2YzZWVkYjExNDFlNzhmNWE1YmRmODhkMjI0NGI3MDY0NGRlMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDBhYTIxNzllNzgzNDI3MTAxNzA0ZDUzYmNiOTc2MjJjOGJiNmY5Mzg4OGI4OWY2ZDc0MDkwZmM1ZmU4ZjYwZiJ9" + } + ] + }, + { + "id": "claim_575ecd189b684e33ab81385ccf64162b", + "statement": "compaction.retract defaults to false; when enabled and output carries $retract: true, all earlier versions in the sink dataset are permanently removed but the current version is retained, deletion state is unchanged, the operation is idempotent, and keep_versions is overridden for that entity.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L105-L111", + "version": "repo-lines-v1:sha256:9813b3d3227f477e53747bafabfaaaf609c99cc94930e12dcdf80a746fe1697c:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmQxM2ZmMTgxM2U3YmY2NWU4Njk1MGJmZTU3NDE2ZjU3MjY0ZDVhNzgzMGZiNDUwY2VjMTgwYzc4ZjljMjc1YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjYzZWIxMjdiNjhjNGI3ZTA4ZWM1ODBhYmViN2I3ODExMjFiY2EwZjZiYzIzNWM5NjUwNDMwNTEyOTcyYjU3NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmFjNjVkOTcyOTU0YWVkYmY4ZTQ5MjVkOGRhN2UyZjg2NGJlOTBjMDY4MGY2ODcxMjY0ZjJiMWY1YjYyY2Y0NiJ9" + }, + { + "resource": "repo://hub/features/compaction-feature.rst#L125-L132", + "version": "repo-lines-v1:sha256:d5d94f251f6d51a5b318175c30f549561ac483ae2a97e7fb206b6237af278529:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2Y1NWI0ZjliZGVjZWY2ZTMwM2E4Nzk0MmNmY2Y2ZjJkMDQzZWIzMGQzYjkxMzZmMTBjNjc3ZWQ4ZjRkZDEwYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTc0ZTlmMjEzOGE5ZGU0NmQ2MTk0MGY5NjA1Y2M4OWViNDc4YWExNGI1NzAxMzZiNmIxZGE0ODQ3MTQ0Y2MwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmNjNGZhZGI0ODJkZTM4ODlmN2JhMGMyZjc1OWNkODEwMmE1MzgwYzhjOTFmOThjYWNkMzk5YTc4YWY2MWMwNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTQ1MDU4YjA0OWYyZWQwYjhkOWRlNDJhMGI3MzcxYzc4MGM5MmFlYTQ1ZTM3ODgwM2JhNzllZDRmMTI4MTExOCJ9" + } + ] + }, + { + "id": "claim_8e2f84718d054b54a005b394da3a1ea5", + "statement": "Retract is irreversible according to the feature reference and affects only the pipe's sink dataset, leaving upstream datasets and external consumers unchanged; $retract can be dropped by merge sources or emit_children, and downstream pipes must both enable compaction.retract and explicitly output the field to honor it.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L129-L137", + "version": "repo-lines-v1:sha256:bef3088c7bbe5479640c8de3d2600ddc71518b8c35877dc340a4d52776520b12:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTAwNDAxMjJiMjNhMzk0YjI2ZGE3YTdjODBkYTZhNTE4ZmE3Yzk0MjI5ZDJmOTk0Y2E2NWRjYjg5NGY1OWIwZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWRiMWYyMDU5NThiNjBlNWJlZTkwOWRkOWNjNGYwOTcwYTM2Njg2MDc4NGY4YjcwZWUxMjgxZTMwMjhjYTdhZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjljNTdkMjJjZDFmYTMwZGYyNzhiM2JkMDZlYmIyOWFiZTc4YWVmMmNlMjNjODQzZTk5YTY3MTg2ZjZkMzhkYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_c23e4296172b4653b771298056d2c312", + "statement": "The 2026-04-07 changelog documents retract as implemented even though the roadmap still lists permanent history removal for selected entities as planned.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L17-L21", + "version": "repo-lines-v1:sha256:191903043e771524ddb9c9e841238e83d027d2fc29e33b07bcd65b59941566b5:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2IxZjE2ZWJkNmY3MGQzNTU4YzI5OTU4ZjY0ZjAxODk0OTYzNzdkMDVmM2UxM2YxYzA1YTMxYjk4MDgwY2ZiNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTkyNGUyNDU5M2ZjZDM0ZWIyZmI0NWE5Mjg0N2NjYjhmY2E4NjBhNzc3NmRjMmJkZTU3OWYzNjAxOGNmY2MwZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTY3NWQ4ZDFlOGNmNzFkNGFjYTNkZThmM2YyNGVhYzJiMzc3Yzk0MWU0YTcxN2ZkMTUwYjVjY2RjNWE4YjBmMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDQzODY3OTQ5YzdmMWMyMTcyNjdjNTgwNzhlNzA3Nzk1MzljNGEyOGIwMDZhMDY0N2E0MjRjN2VhODY5NzllNCJ9" + }, + { + "resource": "repo://hub/features/compaction-feature.rst#L122-L137", + "version": "repo-lines-v1:sha256:3fba742f4019660f2f9ed38075b277d2338ade800fd5b21921bcf38f67ca8420:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxMGNkZDgxYTZmZDk2NWMyZGRmYTJmOTQ4YzFiYTEzZGYyNDQzMmJkZDlmMzFhMTk3YWI1NTE4OTY2ZjM1MzQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkYjFmMjA1OTU4YjYwZTViZWU5MDlkZDljYzRmMDk3MGEzNjY4NjA3ODRmOGI3MGVlMTI4MWUzMDI4Y2E3YWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhYzg0YjUzODYyYTYzMzVkZjgwMTcyMDcxNGIzMTBkMmVmOTZhOTdhMGVmMWIwMThkN2I4NmU0OGJiZDVlNzYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/roadmap.rst#L27-L34", + "version": "repo-lines-v1:sha256:7dfb58a9ef506748a4dcbd91faa2e4791ca172edfe946bc58f225342de0f4162:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDQ1NmYzYWMwYmJjNGJlNDc2NDRlYWQyOTUzOTg3YzhkZmU5NDUyNzJjMDEyY2FlNDY3ZWJiNGY1NWQ4ZDNjNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjY3MjY3ZGEyNWJiYmJiY2M0ZjgzYjA0MzAzYjljMzhiYTAxOTljZGFiYzRlZjk3MTI2NGU2ZjczOGNlM2VkNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmRkYTEyZjVlYTcyYzE1MjM5NWFiYjk1ODg2ZWNkYWUwODlmM2QwNjBkYjg2MzVkYTM3YzQ3Mzg4YjQxMDVkZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTNkNDVjZmQ3MjZkZDkxMjYwZjIzZWFkYTYxY2FlNDk5MTQxOWY5YzZiZTBiZTE2ODE2ZWQ2NWQ2NGFhNjg5MiJ9" + } + ] + }, + { + "id": "claim_44eb631f4b484216925fec5eb9438d3c", + "statement": "The local configuration-testing guide uses the Sesam client to drain input queues while output pipes are disabled or unable to reach real systems, and compares endpoint outputs using paired expected/.json and expected/.test.json files; this is configuration-output validation rather than infrastructure backup or recovery validation.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L21", + "version": "repo-lines-v1:sha256:d728920650b733582762cd2916dd09f6f0f0af185fdda8c3774bd133cdd1ef38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/operations/monitoring-and-troubleshooting.json b/openwiki/.claims/operations/monitoring-and-troubleshooting.json new file mode 100644 index 00000000000..2664bf5430e --- /dev/null +++ b/openwiki/.claims/operations/monitoring-and-troubleshooting.json @@ -0,0 +1,1114 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:9bc436a8342d84eb356281da9a95886a831e2a91a7f677226835c07ee3209267", + "claims": [ + { + "id": "claim_66995c1e6b3b44e1a266077048fd3a51", + "statement": "Pumps read entities from a pipe's source and write them to its sink, own failed-write retries and activity logging, and can write ultimately failed entities to a dead-letter dataset.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L6-L11", + "version": "repo-lines-v1:sha256:e4438d6c78f02bb8733dc5f3386246a7f2cd3df0c70d20ba92f3218fe3360be2:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGExMTA0Mzc4ZmYzZjg2MzhlYTI1NzU2YmUyYjZiNmVjODM5ZjUyMWFjYjI0NzU2NDg3YzUyZDA3NzE3MmZlMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjYyNDVhYTRiZjg3ZTc0NWFiNzZlOTcyN2RhZGFkMTE4YTZmNGMyYzEyMjc3YjZiODU0YzAxMDNhNGI3ZmVmZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWEzYTVlODc3MDg1OGE4OWU1MjEzNzkyMDQwMzY5NzY2MjliNTM0ZTI2Y2E0MDI2ODYyNjBjMzdkOTI1MDdhNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWNjMGUxM2U5MzYzNmZjZmI5Njk0NTU1ZTY1OTllMjBjYjkwY2NmZTRkOWNiNmRjZjRmZDRhMTczNWIyMjVlYiJ9" + } + ] + }, + { + "id": "claim_1bffecbe9bb74b3fafe54a7d48e7979f", + "statement": "The 2025-04-02 changelog announced Notifications end-of-life on June 30th 2025 and identified Metrics as its replacement, so older notification bundle, activation, and pricing descriptions are not a current availability guarantee.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L159-L165", + "version": "repo-lines-v1:sha256:663a998602e50f1e3e04c874fa38c23b54b12bef8fa1bc9ad4c69755e2494b1a:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU2ZGEyMzMwYmFmNzkyZjM5OGVlMTQ3ZWY2YzY1NzEyMjI3NWY3ZmJmMTFkZjUzZDJhM2JhNzA1ZTgzNzY4NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTVlZGFmOTQxMTY1ZmZlZDllZDIyZDU2ZDBhMWZjYmRlZWU2ZmY0MzViNGNlZmFhYmFjYjU5OWUzM2M5NTQ1YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDI0ODVmMmQxZjA2YzM3YmE4M2QwYWQ2ZjJhZmY1NTU5MDc2ZDQxYjlmMDQyODkzMjVhMjRhNjE0MzA4YzM5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTg1MTlhODZmZDU0MGViZDk3ODg3NGQ2NzEzOGYxNGIzMGY2ZTAyNmNmNDViMzM4MzdjYjFlMWYxZjEwN2ZlNiJ9" + }, + { + "resource": "repo://hub/documentation/operations/metrics.rst#L1-L6", + "version": "repo-lines-v1:sha256:51a8853bf63c840da417194859ad98f28cedc2e1f278ee3e846d665f4f78a277:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDFmNDVhNWUxNzllY2ZkM2Q5OTJhNGVhNWZkZWNiZGY0MDlkZjQ4ZmRlMDM5Yjc1ZDkwMDg3MWRkNmVlMTcxOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzZmNzdhNDU5YThmY2Y4Y2FjMDc1YTRhMDdhYmEwMzEyYTk4ZDkxNTVjNmFlNTIxNzlmNzM1MGNmZDQxNGQ1ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjEsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiJ9" + }, + { + "resource": "repo://hub/features/metrics-api.rst#L10-L31", + "version": "repo-lines-v1:sha256:40ad3984a66b03ae66912246c6ec7859b8f52d44a0e0f6978fbe519686c2d142:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzODJlNzc1Y2E2YjE4MjIzNDY2MjdhYTEzYmFhNjQ0Zjg1MjlhZDYxMzYxZGQ2ZTAzZDBlYmIyYjZkMWRlMDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxYzNkZGY3NmU3YzI2NDA2NjQ0OWQ2NDFmZjgxNDRhMDFiYmIyYTA5YTY5YmRjNTJkNTk2YzJmNmQ4ZmExM2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc5OTlkMjJmN2UxYTJiYWEzNzMyYjdjMmM5YTVlY2Q5OTI3ZWUyNzUxYjIzNDkxNmIwMzk4ZjE2MzQyODM2NzYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNkOTMxZmRmMjI3ZDMxNDFlMDJhNDQ4ZGNmNmEyYWY5MjViNGFmNWU2NzE3NTkwNzBjYzkzNjY2NDZhNmI5MzcifQ" + } + ] + }, + { + "id": "claim_07f9d7b59e6246fdaf1c631b1b2c813b", + "statement": "The pump execution dataset is named system:pump_execution:; its entity IDs and structure are explicitly subject to change and it is not intended as a public application API.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L4-L13", + "version": "repo-lines-v1:sha256:c58d474fbc1afe9a247cbc129af892128ceb2dce73f82db43ddb8132272d5ff6:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNDZhNjg3NThiNTVmMGMwNmY2MjEwYWQwNzBkMTcxMDI5MmVkNGVmYzhkZDRjYzJlYzQ4ODdjY2I2NzQ1OGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM0MmVjZmIxNWRiZTkxZjQxZDViMmEzOTljYTg5NDVkOWVjZjdjYmE2MTc3ODgwYmE1ZGM0Njc3NzNkNzkzZjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUwM2Q2Y2M0OGYxMGUyOTdlYTZjYjFmZDJmNzNiYjY5YjFkZTkxMzA0M2M4NGY2ODY1NjA5ZjExYjI5MDA0NzMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA5ZWI2NzQwYjJiOTAzNzgwNjljOWExNGY5YWQxMDc1MjM2NTk1YjQ1MjkyNjE1NmIwMTQzYTE1NmRmMzY4ZDMifQ" + } + ] + }, + { + "id": "claim_df3cce899ecc4f61bb2e5cd0937e55b5", + "statement": "The Service API offers GET inspection of pipe configuration, pipe information with config/runtime/storage/graph fields, and pump information, whereas POST to the pump endpoint performs state-changing operations; the documented API base URL includes /api.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L10-L20", + "version": "repo-lines-v1:sha256:2b0dfaa70c6101b550419fcfa76cdb41f3f0d33fb46a65e8181904f073f16263:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2MGRhMTJiNTFlZDQwYmIxZGE5ZWY2NDUwMjFjMDY3Yzg2MmM2NDE5ODljOTY1NWY4Y2FmM2I4NjZjY2JiZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI0Y2VmMTRmZDIwNDllZWMzNjJiNTVmNWE3N2I5ZTNiMzdjYWI0YjA0NzUxZWQ1OWY2OGNlOTM5NDQyODA5M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdiZWY2NmU2N2FlNWFkNWY5MWRlMDc4MDQ5ZGY3ZGY4ZDhkMWIyMThlZjk1MzEyYjM4NTgzZDQ0YWY3NzdmZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ1MWU2YmExYzAzOTdkOGM3MzI5MDNhY2E0NWE4YmVhMjNiOWUxMjkwNDg1OGRkMzllM2MwZDBlZDI3MTRlOGIifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L206-L269", + "version": "repo-lines-v1:sha256:185f74fbbada394ca93f808190c56e33d118b7060dcdbada3051fbfc515883c9:eyJzZWxlY3RlZExpbmVDb3VudCI6NjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVkZGRlMDgyZDA3YWM3ZjRhYjkxNDRiYWM0MDQyNGQ2MTk0N2JlODg0MzY1ZjNhMmFiMDk5OTU0ZGVmYTk1MWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMyMTYwNjY1ODM1MjQ4ZWZiYTUxNTljOWM3MTYwNTk5YmUwOGQ2N2M5OTM3NWI5YmYwMzk3ZGY4MGRmMGIzZWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImIwNTc5NDZhZmUxMzc1ZTQ3NTkyYTUwNjMxZDM5OWMyMjQ2NWZlY2JjNTlkNTU3MWIwYzkzMDBlY2EzNTZjMWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU0MGI2ODFiODVkOTMyMjFlYWVhMTE3ZGU5OTY1YjA4OTMzNjZjMGEzNjk3N2U1YWIwM2YyYWE3OGM0ZTVmMGYifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L519-L546", + "version": "repo-lines-v1:sha256:b1c6605417b72313404cab562e6bcfbdc65cacd17d2f14b38402c3dbf23fca35:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjN2Y2NWM0MDNiZGM1MzRiZmQ4NGU5YTNmYjEyNzhiYTFlOTUxYjQwZTUwOGZjOGM0NmU0OWQ3OTc4MDhhNGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5ZmQ2NTZlY2YyNDRmZmMwY2I1ZmVjMzZjYzkzYjM4NmQ5OTFhNzY5OTFhODZmNzI5ZjJiYjcxZjAzMGI2MmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRmOTk4YzQyZjc4ZjZiNDRkNzhiOGViODA1ODZhZjhlMzAyMTVhODQ5ZTNhODg1NDRkNWExYTJmNDg3Zjk2ZGIifQ" + } + ] + }, + { + "id": "claim_f342a550ee6d4cb78ee95397cfc2f5f7", + "statement": "The Metrics feature exposes Prometheus-compatible metrics at /api/metrics, requires an Admin-role JWT to scrape, and documents scraping with a bearer token for use with Prometheus and dashboard tools such as Grafana.", + "evidence": [ + { + "resource": "repo://hub/features/metrics-api.rst#L33-L48", + "version": "repo-lines-v1:sha256:a4a5374817372b3e0e7ae78f6b02dc3b55c19ca037134078bdd82f051bf6daf0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc0MzAxMGNiNGFiNzk2YzczMGIxYWMyMzc4YjVmN2FmODNhOTAxOTFjMDJhOTE4OWU0M2NhODAyYjMwNzdmNDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNhNWUwZDBhNDlkZWQzMTYzN2M4Y2UxNTY2NjZiODI2MTU0MzFhODA4NzdkZmZkYmE2N2IzNzhiMzE3ZmVkYTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYwYzdhNGNjY2M4NmIzOWRhMmI0NDJjMzMwYmJkNGYwNTJiY2U1Y2FmZTc5MTg5MjkzMzk2MDUzYmNjMTNhZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ1YWFhYTA5MTg5YjZkY2ZjOWYxZjIwODE1NGUxMjFiNmNkMzJiZGE1NWVkMmI3NDQyNDhlYjkxMTcyNzM3M2UifQ" + } + ] + }, + { + "id": "claim_cde039cf51984e2395ea9878b3e882e6", + "statement": "Infrastructure monitoring includes an agent pushing Prometheus-compatible memory, disk, and other resource telemetry to Sesam, separately from customer Metrics API scraping.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L37-L39", + "version": "repo-lines-v1:sha256:da9455a8bd330f25d79d0bd2886981adc4f17319bb32f01a9f87fa25f780e387:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2NmMDE5MjMwMDg2NGUxYjkzYjUzY2EwMmY1YTA5YjIxM2NlZDUxZGQ3NmE1MWNiMzZiMmM4YjkzNTkxODk3ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzUxYjQ5YWQ2NGZjZGVmOWI3ODhlYmU4NTQ3ZDgzYThlMjAzZGVjYzE4YTE2OTExMDlkY2JmOTBhYWJlMzBhMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTA0NjIxYTdjZDVhNDc5NTEwYmE3YzhiOWJmNzAyNmUxNjhhOTkxNGY3MGVlMThiMjg4N2Q0OTVhMTViOTZlYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjgzZjFmOGQwNGVjOGMxN2Q4ZjhlNTQwNTA0NWI1MjM5ODcwMTZmYWNiZDA2OTA4MDE0YzMyMDk1ZjM1MDY1YSJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L72-L106", + "version": "repo-lines-v1:sha256:c1e5cf7c785e462b638c3e89e689a4d20d8c8e04d8c616425c95a4992987697c:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjYzIyN2JmMGM1NDE3YmNmMGNiMzFkNWIxMTkwMGE0NWM0Mzc5ODhkY2VlZTc4NDU1ZWMyYmQ2MTA2MWFiOGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBmNjhlMzk5MjVlODdmYWU3ZjQzMmQ2MWNhNTYwNGFkY2YxY2ExODNmOGUxZTViYWY2MGQwYWVlYzE4ZDQzOGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgyMzgzYzFiY2Y0YTA5ZjU5OTI3ZTcwZWYwY2FmNjVkNTI2MTRhY2JjYTBlNWJkZGQwMjBlOTVlY2QwMGMxZWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM5ODA1ZjJhYzJiZjNjNTI4NWIzM2JjODdkZjU0MzZhNjdmMDU5NjMyNTQwNDhlMjczMGRiNTFhM2Y4YTI1NGQifQ" + }, + { + "resource": "repo://hub/features/metrics-api.rst#L33-L42", + "version": "repo-lines-v1:sha256:8a06bd426dcf04c86707e658a2e89d2b0bbca1fc11b7afa4a39292526d1764b5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc0MzAxMGNiNGFiNzk2YzczMGIxYWMyMzc4YjVmN2FmODNhOTAxOTFjMDJhOTE4OWU0M2NhODAyYjMwNzdmNDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjViMzU4ZjAxYWRmM2NmYTJmYjYwMTYxMjAzNGNlZDgwZTgxZjBmNWE4M2EwM2NlNjZiZTVmMDFiYjZjNzUwYTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYwYzdhNGNjY2M4NmIzOWRhMmI0NDJjMzMwYmJkNGYwNTJiY2U1Y2FmZTc5MTg5MjkzMzk2MDUzYmNjMTNhZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4YjkzNDE2ZGQzNWQ0Zjg0MGQxMjk4YzZhYTYyNzZiMDNmNjcxMWY0OThhN2UyYTViY2MyMDdlYmE1ZTNkZTAifQ" + } + ] + }, + { + "id": "claim_37e9d85ff7f6478e8ed2ffe17e53926d", + "statement": "The infrastructure monitoring reference lists shipped service/error logs, health/status, configuration excluding secrets and embedded data, and kernel logs; its conditional pipe-execution shipment description excludes the embedded failing entity objects, while discussing legacy notification rules.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L161-L164", + "version": "repo-lines-v1:sha256:36e41d1af51119b90787d212081d3f3e6f51729548dd6819c1de805b595d5d65:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjllMWNkZmQ0NjA3MjdlOTg4YmU4OWZmZTdkYzJjODU4ODM1OWQ4ZDU2MGE3MjQwMWMwOTdmZjZjNTUyYzQ1ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTJiM2Q3YzJjYzY4ZTk0ZjQwMzc0NWQyZjI4MzIxYWU2OTk2NTFhYWE0NWU5ZDFhNmNkMWExMWViOWVkNGRlMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmNiMDgyYTY5ZTUxYzcxODFjMGM3Yjg1MDM5ZjhjZjhkZDRhZjA4NmJkYThmNGM4ZjljODc2ZTlmOTE2MjViYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTgxZmI3OTFlZjlmNjU5NzY4MWJlM2Y5MmVhOWRmYWJlMDZjYjVjOWNlZTlmMTUzODA2YmUwYWI1NjA3NTBlNCJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L91-L101", + "version": "repo-lines-v1:sha256:521cb74c046de7e7a7499a24b73c34cb5e7c531d9258bdbf58d1afc4e5966c79:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhkZjUxODE0ODZjZDEyZmE4NmMwNzZiMzdjMzJiZTI4YTZjOTQyN2VkZjkxNGMwOTQ5YzM1YTdhYjJkMTMwNGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxNTdkOTExOTcyNDk0MWNhYTQzOGI5OTU3YWYwYjQ3ZTc0NWRhMTlhMTQ5MTg0NmEwMGE2YWFmNDBiZGE1MjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYyZmI2MGE2ZDA1YmQyODk5N2VmNTAzZmE4ZmM1Y2NiNWQ1NWRmMmJmODVlZjAxM2Y4NjQ4NTE5ZGU3ZDliY2QiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA3MDVhZGJmZmYyY2VjMzdiZWQyZDQ4NTQzNDdjMjA3MTY1ZDc3YzM3OGNhMGEwODQ2MmU0NmI0YmZjNzVmODMifQ" + } + ] + }, + { + "id": "claim_f25bb9a859cf4090bd3618e1c7bcc29e", + "statement": "sesam_health and sesam_backup_health are healthy/unhealthy/unknown enums for API and backup health, and sesam_service_restarts is a gauge counting restarts since the last upgrade.", + "evidence": [ + { + "resource": "repo://hub/features/metrics-api.rst#L53-L74", + "version": "repo-lines-v1:sha256:2d332515d8a0de9e572fcbdff9fea6a25d6e5d76096bb3fa29b829a49f9eb700:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc0MjM4ZjBkNjU5OTRmN2RlYTVkNTRlYTgyZDFjNjk4NTdhNTdlOGJiZjhmNjIxMzU5Nzk5YTNjMzhkMGExNTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiNGMyZmZhNDhjYjZmMDJjYTJlZTU5NTg3M2M5ZjAxMmRkY2Q5NGQwNzRkYmNjNzg5ZWM1NjRmNTIwNjkyNTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY1NGYxZDhjMTU0MDdiNDc4YTEyNzA4NTM2ZGRlNmYyODY4NTQ1YTlhYWU2OTNiNGZhMjFkMTgwOTg5MmQ2NjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYxMTBiNmYwZWQ0YjM4ZGNkNjIyYmJlZjZiOTYyMjAyYmZmNjNjNTVmYjg2MzIxOTM2NTk2NjMzNDFhNzg5MmMifQ" + } + ] + }, + { + "id": "claim_26d1f4301d8f4cd7bed6188805349a7f", + "statement": "sesam_pipe_enabled and sesam_pipe_config are binary gauges for enabled and valid configuration state; sesam_pipe_config includes config_group and leaf labels, with leaf=1 indicating no downstream pipes.", + "evidence": [ + { + "resource": "repo://hub/features/metrics-api.rst#L87-L93", + "version": "repo-lines-v1:sha256:ce6343c4957f913af44573406dc6e31b6b3ad1ac7f43a2b35683e52ff3abd943:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2E0MzExZTk3ZmFmMzdkMzgwNWIyMzQwZDc5NWYwZmE5MjQ2Y2UyNWU2ZjZiNTQ3NzAzMzQ4NzZjNDkzMmEzMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTRjMWI4ZDk0OWQ5NWZjZGMzODU3ZmMzYjdmYTRjYjZjNmNmMzg3YmNjZmI1ODk0ZWI2Mzk3YzcwODIwYjJlMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTVkMjgzOWVjYjg5NzE2NTU2NjExMzQwZDYyZDAxY2Y3MWUwYmE2MjNmNThkYTlmMDYwY2YyZmYzNjEwNjI3ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzNjOTU3ODU4ZTJiOTJlMTI1Njk3ZTgxYWVkMjBkNzRlMDM3ODE4MDE3YmZjYzI4N2YyNmJmNjQxOGExN2U2NiJ9" + } + ] + }, + { + "id": "claim_dcd3f58cbe384db49bdce4825459f72d", + "statement": "sesam_pipe_usage measures bytes, while sesam_pipe_queue_source, sesam_pipe_queue_tracking, and sesam_pipe_queue_replicas are entity-count gauges for source, untracked, and replica queues respectively.", + "evidence": [ + { + "resource": "repo://hub/features/metrics-api.rst#L95-L109", + "version": "repo-lines-v1:sha256:17428ab0a422f1a59973ef022b05c6510aa3ef2265be21f360647ccb1a65af65:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE1MWFhYzE3ZGU0ZDhiNTlhNzVhMDBhM2UwMDg2ZmEzNTg3MzYwN2Q3YWQ4MzNjODZmNzY0YmRjZjJmYzRmODgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyZjU4NzE4MmE1ZjQ0MTYyMGQxZTkzOTUwMGJmMTRmMjA4NTk0OTJmNmE1MzUxNjVhZDYyNGNjMTExZjVjZWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc4OGNmMTM2ZDc0OGQ1NjY0ZWYxODUyNTg2ZDY4NjA0YTUwMjFmNGVjOGNlOGMxZTY3OTA4OTQ3OTA3NjQ5NjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY5NzBlMGYzOGVjOThhMzE3ZDUyYmZiMTBiY2ZjYThmYjU0OGEyMWYyMWE5ZTgwOWM3ZGI2YWI2ODM4MDU5NjYifQ" + } + ] + }, + { + "id": "claim_512017c9a0384c28bf9d2543913adad8", + "statement": "Sink and dead-letter dataset count gauges distinguish non-deleted/deleted entity IDs in the index from non-deleted/deleted entities in the log using index_exists, index_deleted, log_exists, and log_deleted suffixes; sesam_pipe_circuit_breaker_tripped is 1.0 when tripped and 0.0 otherwise.", + "evidence": [ + { + "resource": "repo://hub/features/metrics-api.rst#L111-L145", + "version": "repo-lines-v1:sha256:2bdd7abad74ecd8742f8f5e5d3da6914784625b711a0b39a34dc247cdaaff015:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE1Njg4MTc0NzYwMTFmYmM3OGQ3ZGNiOThmZjM0NDAxOTc0YWFjMWEwOTFjNTkxNmQ5MjE5MDFhMWZiMTU2YzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYyMGFkZWIxZWM5ODk1NzRjMzIyZGUxMjlkNWVhNzdhY2MxMzMwMDhkOTkyYjJlNmEwMGQ2NTc2OTg2OTBkODEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTdlYjg5ZTljZWZmMzYzN2VmNGU0NzljYmQ0MDFjZTAwMzBlZjMyNWJjZjdmOTU4MzIyODIzOGQwODM2MTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlhNzJlYzQ0OTNlNGJhZTY2ZjgyNDM1NDNjZmExNTAwZTMxYWY2Njk3MjI3ZjUzODZmOTkzNDExMWVhNWE2OGMifQ" + } + ] + }, + { + "id": "claim_caba62b1419e40258274081196fe6aa5", + "statement": "Pump metrics are not exposed for disabled pipes or pump.mode manual/off; manual pumps are operated only through the Service API without scheduling, and off pumps cannot be started.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L286-L298", + "version": "repo-lines-v1:sha256:dd67216ce0208eafdf40ad3a408b5247f2c3cf7306d9bcfd0077270464fec3cb:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY1MTg2NjI5OWU3MTU4MTQ3YTYwYTgzMmYwODk1NGI2YmNhZDgzMTUxNDJkZGYxZDY3MzQwMjFkMGIxYTE4ZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhYTQ4MzI1OGFhMWFhZWEwZTkxNzNhMzcxOTczYzY5NGQ4ODg0NzQ2Y2U5YWU0ZWJlOTAwZTZmZmQ0ZDIyYzMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE1NGRlMmJjYjIyYjMyMzcyMmJjYzJmMzNlZDM2Y2EyOWE5ZWMxZjI5YWYzMDU5ZjEyNjA5NTA3ZTcyNGIyMGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUyNzJhMjRiZjVhZDYzOWYyNjNiOWJlYjMxNDE4MzUzNzE4MmY1NjZjNjg3MzQ4NDI3MzFiY2MyODg0NDU2YjIifQ" + }, + { + "resource": "repo://hub/features/metrics-api.rst#L148-L151", + "version": "repo-lines-v1:sha256:9d882137a4e84a7db80165e672094c79e3ee54618328a47d21942be598d44bf6:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODM5MTgxYzJiNTc1MmJhZGIxMTdjMjc5ZWM3NmFkYjU5NWUwMmVhNTIyMzZkNTI2MGZmYjlhNDA1NWVhNmUzNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2ViNmNkNmFhNzVkMzdmMGU1ZDYwNTc2ZGUxMGJhY2E0ODMwNTg3Y2RmY2I1ZTBjY2Y4NTQ2NGQwYTcyNTE1MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTU2MWYxM2U2NTE4MTM2NDM2NTc4N2Q1MWJiNGUzYWYyOTc1YjY0NzM0M2M0YTE5ZjVhZTM2ZDA5OTJhYjc0NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2ExNzAwYmYwM2JmZDc4MjRkZTNlYTg4MmNhYTI2YWQyMzkxODA3ZTFhYmFiZGM5NmI0ZjRlM2QzODE3MzdmOSJ9" + } + ] + }, + { + "id": "claim_ad5ef4a063834ed69ceaf586c602c42e", + "statement": "sesam_pump_total_time is runtime in seconds with zero for never-run pipes; sesam_pump_successful is 1.0 for success, -1.0 for unsuccessful last run, and 0.0 for never run.", + "evidence": [ + { + "resource": "repo://hub/features/metrics-api.rst#L161-L167", + "version": "repo-lines-v1:sha256:398f941c5bcdcf408ddcb87c747c1a5d0b29767157799af87d9ca97ca48902b2:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmUyY2EzMmI2OTY2MTk1ZGY4YTA5NjdhM2ZlNTg0NTg0ODk4ZDM5ZTFmYmM3M2FjYWU0NGJiYmI4NGE5YTY1MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTdlZjkwZTBmNWVkNmU3NDM3YTE3NTlmNGYyNzBkNzFiNmI2YmE3NjE1MDU3YWE3NTQyYmYwOGI0ZGE5NDM1NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTVkMjgzOWVjYjg5NzE2NTU2NjExMzQwZDYyZDAxY2Y3MWUwYmE2MjNmNThkYTlmMDYwY2YyZmYzNjEwNjI3ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzM4MzkyY2FiNjRkYTc0OTM3ZWEwZjBmM2ZiNDFlMzZjYThjMGNhOWYxZjQzNjVlZTVmZmMyYjNhMWUwZjY3MyJ9" + } + ] + }, + { + "id": "claim_17938f959c084d208631d0a8fec03ff0", + "statement": "sesam_pump_started_total and sesam_pump_completed_total count run events but currently exclude no-op runs; sesam_pump_failed_total counts non-interrupted failures and sesam_pump_interrupted_total counts interrupted failures.", + "evidence": [ + { + "resource": "repo://hub/features/metrics-api.rst#L169-L183", + "version": "repo-lines-v1:sha256:d21cfcf314150cfbed9a2125d5d6778a20739442f8d4a9565fa888f1646913fd:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcwNDQ0OWMzZWM2NTNiYWYyY2IyMDVlYjBiMmY2MDc0ZTU0MTBjNGUwZTE1MmI3NWU3Y2Q1MDhlYjA3MWNkMDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzMjBiMDc1M2E2NDJiZTViZmMwYzI2NzkzOTBjNWI2NTNiYWRkOTBlMjg3YzI2ZjlhZmNhZGU0NzNhMWM2ZGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgwODJhZDY2NGM1NDg3YWU4OGIwNGYyMjQ2NzA0ZDg3MTFmYmJkODNmNDk4MjU2ZGNhZTNmZWUwNmQyMzA2NTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdkYjFlOTMwZDc1OGE0MzI1YzA3NzI5MmFkM2MzODc5NjNkZWUyZmU3N2QzMzljZmE2ZmFlZjgyOWNkODhhMzYifQ" + } + ] + }, + { + "id": "claim_e0456bacd37141448865b3a7ce8ca8aa", + "statement": "Pump entity activity is exposed as seen, changes, compacted, and deletion-tracked counters, while sesam_pump_entities_retryable is a gauge of retry-queue entities.", + "evidence": [ + { + "resource": "repo://hub/features/metrics-api.rst#L185-L203", + "version": "repo-lines-v1:sha256:9e7c69de0f9bb52cb99c4015fcb063d84e80d98031b0fbe31af8fc199709c20a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkwNTJhYjg3YmZlNDk0MDQ1NjExZTdhZmNmNjQ2YjRiYzcxN2NkM2IxN2I4ZTllMmJlN2E1MjgyZjI4YmMzNjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQzNWViNGU1ZTk5NjQ2YTg2NmVjOGU5ZTIxZDRhYzRjYWM4NjJjNDM0NDIwYjM1N2JmM2E5N2RhNDhkZDhjZDAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ1MmIzNjRlMzk2NjcwYzgyMTNmNDE0N2UzMDAyMDNlYTU3NjdlMTExZmQzZDYxYWRiOTk3ZGQ2NDgxN2RmZWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIxMGU2MjM1NWU3YTZhMWVjZGI5ZGRmYjVmNzhjNDE0OTY2MzU1ZGNkMWFlNjkxZjNjOTUxYzRlOTM3N2NiNTEifQ" + } + ] + }, + { + "id": "claim_eecbe01768634084b6c949fb92ee6b0a", + "statement": "sesam_pump_scrape_time, sesam_pump_last_completed_time, sesam_pump_scheduled_time, and sesam_pump_previous_scheduled_time are epoch-second gauges; last_completed_time records completion or failure rather than success alone.", + "evidence": [ + { + "resource": "repo://hub/features/metrics-api.rst#L205-L219", + "version": "repo-lines-v1:sha256:bad7b06a992c312b57a6e87d6fee5171584a3667da9ab77716320f57b2328f4c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZmZTg2MGRiOGE3MDAwNjQ4ZWJlYjg2N2VlNjM0MjJkZTA3ODhhYTFiNTlkNmY1YzJiYzU1ZGIyMzhlNzE2NTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNjZTk4NGIxNWM1NTUwNWQzNWU2OWMzZDE2OTIzNTEzMzVhMDE1NzllODg0MjYwODJjNjIxOWU1ZDczNjc0NTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUxYzNjYjdkYzJjMmYzYmMwZTJhZTQ3NzQwN2ZhMzZkNzM2YTM0OTYzN2RiODA2OWRjOWYxYmNjOGE2NGRmNzUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIifQ" + } + ] + }, + { + "id": "claim_0e065eb5fc8a4e4b9f641aff1d80ff52", + "statement": "The Metrics reference describes counter metrics as paired series with _counter and _created suffixes, in addition to listing logical counter names such as sesam_pump_started_total.", + "evidence": [ + { + "resource": "repo://hub/features/metrics-api.rst#L169-L183", + "version": "repo-lines-v1:sha256:d21cfcf314150cfbed9a2125d5d6778a20739442f8d4a9565fa888f1646913fd:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcwNDQ0OWMzZWM2NTNiYWYyY2IyMDVlYjBiMmY2MDc0ZTU0MTBjNGUwZTE1MmI3NWU3Y2Q1MDhlYjA3MWNkMDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzMjBiMDc1M2E2NDJiZTViZmMwYzI2NzkzOTBjNWI2NTNiYWRkOTBlMjg3YzI2ZjlhZmNhZGU0NzNhMWM2ZGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgwODJhZDY2NGM1NDg3YWU4OGIwNGYyMjQ2NzA0ZDg3MTFmYmJkODNmNDk4MjU2ZGNhZTNmZWUwNmQyMzA2NTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdkYjFlOTMwZDc1OGE0MzI1YzA3NzI5MmFkM2MzODc5NjNkZWUyZmU3N2QzMzljZmE2ZmFlZjgyOWNkODhhMzYifQ" + }, + { + "resource": "repo://hub/features/metrics-api.rst#L51-L51", + "version": "repo-lines-v1:sha256:16dcd6de70c9911e908e09c3cfed230f7014b2383775ebcef81d7026b271f44b:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTZkY2Q2ZGU3MGM5OTExZTkwOGUwOWMzY2ZlZDIzMGY3MDE0YjIzODM3NzVlYmNlZjgxZDcwMjZiMjcxZjQ0YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTZkY2Q2ZGU3MGM5OTExZTkwOGUwOWMzY2ZlZDIzMGY3MDE0YjIzODM3NzVlYmNlZjgxZDcwMjZiMjcxZjQ0YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2QxZTExZTExYTFhZGMxZjhlNmU5ZDRhMWVmY2ZjZDJhOWQ4YjNiOGI5MTlmNjM0MjY2ODY3YjUzMGU5ODEyZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDczM2M3OGE3OTQ4YzI5NmU0MjY4OGYwMGMyODZlM2VlMjg1ZWMyZWVjMDU4ZjA4OTJlMDAwNDc2MTE1NGU1OSJ9" + } + ] + }, + { + "id": "claim_b022f98b3a2a40b9a60663e7bd29e255", + "statement": "GET /api/pipes/{pipe_id}/log reads execution dataset entities, supports bounded limit and newest-first reverse reads, and history=true includes replaced versions rather than only each entity's latest version.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L353-L397", + "version": "repo-lines-v1:sha256:8345e8e46d91e636ee05d2293116e8020a15a02c47a61f0df2098bad08311f65:eyJzZWxlY3RlZExpbmVDb3VudCI6NDUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNkNjI0ODc0YzI0ZGY4OWUwNmRiYmIyODc4YjVmOTRkMmJmOTViZWQ5NWU3M2QzNjI2YzNmMWZiZDQ3ZDE3M2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU0MGQ5NDc4YjVjOTg4MWU0YjI5ZGM1YTE0NDIwYzdhMzVmNTdiOGU0NGI2Yzk5MGU0M2E4YmFmZjhiM2YwM2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdmNGY4ZDY1YjJiYzlmZjgzNDMyZjk4NTJiMDJjYjZjNTViNzU4NjcxMmUzOGVjODQ4N2Y5MjJkNjI5ZjM0OTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc0YmJiOTI3MDlhZTU2MmI0NDQxMDA4MGZkNWQ5MjJlZmEwNmZkYmZmYmYyYTBhZGMyNGFlMjVlOGU4MjE2MmQifQ" + } + ] + }, + { + "id": "claim_1f6422da4f454904b95b7ed484e6022b", + "statement": "pump-started is written before processing and records run start, sync_type full/partial/incremental, pipe and pump definition, and initiating user information when available.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L27-L94", + "version": "repo-lines-v1:sha256:01e6591733b0e91975f880f52928428b9f5aaeb31f8e92483fa4796c658c0bb8:eyJzZWxlY3RlZExpbmVDb3VudCI6NjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjODk1ZjI1NTNmNGQyMDJjMjA2YTlhODg2OGMwZWRhNzY0N2NkNzNlZjliMTk1NjI5ZjRlMDYzMjZjYzU1MTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ3MmU0YjBiMTBjOGIxNWFkYTJjMDVkNmU2YjQ1NWU2MGUyZjYwNTU0NjU5OGFiMWYwZDE2ZmQ1NTEwNWI5ZWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU3YTEwNjVmYjU1ZDIwM2Q5NTBjNmViZWY3MDU5NjMzOThjZDk4NDU1OTMzZDUxYWM4NjA3NjNlZDNjODRmYWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNkMDE1YjNmNjI5MzZlZTUwMDhhODRmOTIzY2E5YmU0ZjFhOTRhZDQ0NzgxYTFjYTBmZGMzYzA0NjJjMzBlNDYifQ" + } + ] + }, + { + "id": "claim_d5dc43d1a0884758bb08ee0bd50d8ae9", + "statement": "Successful runs record pump-completed with run timestamps, total_time and next_interval in seconds, success/failure entity counts, retry_entities_exist, and pump_started_location linking to the corresponding start log location.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L96-L186", + "version": "repo-lines-v1:sha256:a3e730eb3c27cd4943ae3895824c360a86195d34e5053235909cbafeba477c55:eyJzZWxlY3RlZExpbmVDb3VudCI6OTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE1MzE0ODZlM2Q5YjAwZTA4NTNhNmQ0YjcxZjgyZjkzYzM3ZWVmYzg2ZDE1YWFmMTZkY2YwODZkYWQzY2NjZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgxYjA5NjI3YWMzZWJiY2U4YTA3MWQ4MGI2OTNhYWY5ODZjNmU4Y2U1OTVlNTk2MDYwNjhlMmQzZjE0NjViZWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFhYWE5NGEzMDE3MmM1ZjhlMzcyYjRhZTUxMmExMWJjYmUyMDIzMjkyYjlhMjQzNTc2M2IxY2Q5YmI4OGE0YWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM2NTc4M2U1ZmNjNTVlYmZiYzZjM2I4Y2M2MzBhYWJiY2JkMTZlMjliNzdmMWQ2NzE2YWY4MTM1NWIwMjdiODMifQ" + } + ] + }, + { + "id": "claim_0c69e7d0fb9b4c3c8981a1e0a4cddde6", + "statement": "Failed termination records pump-failed with stop reason, pump/source error and traceback information, run counts, build information, and potentially a complete exception_entity.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L188-L319", + "version": "repo-lines-v1:sha256:4ffe9a6e611d2a18d537a55cfcb7bf176d696ec9b00ca5203a58d63c6c24bdd9:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMyLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiIxYWU4MTQ1N2FjZDQ2ZTUxMDlmYjQ4YmVhMWMwYTU4OWU1N2RlNDZiZDc3ZjlkOTYzMWQ3MDg5NWM1NzI2ODY4IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiIyMjM1MzE5YWJkY2E5YjdkNWMxYjQ0ZjVmZmMyMzM4MmU3NTM2N2MzYTNhZmMxYjFmNWYyYmRmYTVjNDQ1MTgxIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiIzM2M4NzBlNDNlZmJkNDFlOGQwNjIwZDI3ZTY2ODlkZjk0ODI4MWJlNzhhOGI4YTlmYWFiOTAyNDVlMDlhYjUzIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiJmMDkxOTI4YTlmODNkNTcxYThiN2M5ZDM5NmNiMGI5MjUxYTc0MDBjMmMzNjZmNjI3MTE2ZThkMDJmNDRhN2EwIn0" + } + ] + }, + { + "id": "claim_0d24f359ee4b4af595519648dbb9cae5", + "statement": "read-error uses error_code 0 for inability to establish source communication and 1 for errors reading a particular entity, and carries event time and original source error/traceback information.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L321-L390", + "version": "repo-lines-v1:sha256:16e8d19816fc5f4836c085dbe14172ea82c4f579d5b7ca34e200256aeab29104:eyJzZWxlY3RlZExpbmVDb3VudCI6NzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM3ZTY2MjgwYWEwYTQ3MTBhMjBiZTliYzE2OGY0N2ZiNjdjMjRjN2E2MTg2NjVmYWRkMjY5ODNhMTBjYmQwNmEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY4MTgwNmFlYjg1ZWIyMjEyZmZiY2RhYmZhOTFmN2NhNWU3MDRmOWIyOTE0YjU2ZDBiYTgyYWZiZDllNWM2OGEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMwZDU4NGNhMmYxNzQ2OTYwZTRiMzcxM2IxNGQ0YjdjOTBkNDNjMDkyNzlmNmM3NGRmMDAwZjAzNTAwODgxODUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhiMTlhZWE0NzJjYTEzOGRmMDA2NWU5ZjRhOGNmMjlkZDhiMDQxMmRkYmM4MGI2MjYzMDU1MWY0MjhiODM5YTIifQ" + } + ] + }, + { + "id": "claim_d73a72cd1b6d4a919a2c9c59d560b396", + "statement": "write-error uses error_code 0 for inability to establish target communication and 1 for errors writing a particular entity; it embeds the failed entity and records retry_attempts, retryable, resolved, dead, and original sink error information.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L392-L510", + "version": "repo-lines-v1:sha256:3786d3b40168f9ffe72a9ce9f957b302b267f6de461f87ba6e6435d2639143c2:eyJzZWxlY3RlZExpbmVDb3VudCI6MTE5LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiI2ZmE2MTUxNWJkOWYxY2M5Zjc3YTcwZGUyNTE4MzkzM2QxZjY0Mjc5Njk5MjBkZjFjMTFkMTA1MmQ5N2NiZDgwIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI2ODE4MDZhZWI4NWViMjIxMmZmYmNkYWJmYTkxZjdjYTVlNzA0ZjliMjkxNGI1NmQwYmE4MmFmYmQ5ZTVjNjhhIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiIyMDNhODdkZGFiNWU3OWY2NjU4N2E4N2M2YTUxZGJlZWJkMjdhZThlMmJlYjQ0NWU1MTBiZmI2ODY4NDlhYTY2IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiJlNzYyMWZkYmQ1NGZjYjkzMGUyN2NkMjZlNmZmMTc2ZTkzOTE0N2Y4MTczMThiNTVhZGYyMWJmNmU3NjdjZTUwIn0" + } + ] + }, + { + "id": "claim_f70a7bf165084a28b47d83169d1cd602", + "statement": "A successful newer source version or successful retry can resolve a logged write failure; a newer successful version marks the old failure non-retryable, and resolved_entity can retain a different resolving entity.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L468-L497", + "version": "repo-lines-v1:sha256:92cf232ee05d57ef3d9e460deab9ceaf69ee03fdb1ff2322773ea978546bca88:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNjOTAyNDcxODQxZWVmZjdlYzUzODc0MjE3ODE4NjRjYmZkNWNiZTY1NDk5NTE0ZTlkYWM2MzVlYjBkMzNhN2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNjNDFlNTczZGE2MjQ2Mzk4Y2M0MDk3YTQ3MDVhYmMxZGVjMTEyMmJlM2M2YWRiNzk5YjA2M2JlMGUxMjAzYWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI0ZjQ2MTMxMDZlNjNiNTI2YTI2OGViOGNiNTgxNmQ1ODQ4NjZjNWI4NGIxMjkyNjJkM2RlNTIyMjRiMGI5MzAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUyYWI5NGNlNjA0Y2I2NWRhZjlkNjFmMjVlZTY3MmFlMTVjMWYxN2I4MDg0ZGRhNDVmM2Q4YzkwYTdiYmI2NTYifQ" + } + ] + }, + { + "id": "claim_5efe8b41ffef480690b2bbff87adb5d2", + "statement": "A write failure marked dead has been given up on, is written to a configured dead-letter dataset, and will not be retried again until a new source version comes along.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L482-L487", + "version": "repo-lines-v1:sha256:09f03bac9685a2146d439193963ee17944bdb8026c603cd088b0225424df2b6f:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWNlNmNiZTE0OTY2MjA3NDBlN2YzOTg5NjVkYTQxNWFiYTE0ZjRiNjE4MGE5YWVhNTIyNDQ2MzNjNjZmMmQxMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM4ZTRjYTc1MmJjNzM5M2NlMjliOTFlYzkzNTkxZWEyMjQwOGVmZTZiOGM4NDk1NTVjYmZhMTc4ZTVmYmVlZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDQwODY2Mzg0MTdhMjRjMmE2ZTZiZmM0MWIwYjY2NWI1YzJiYjk0YjMwODExNTFiMWIzYzE4NTRiNzQ4Y2RlZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjk3ZDM4YThlMWEzMWJkODQ3NDk0MDkzNjM2OGQ5N2MxMGZiNzk1Njc3Y2JmMmZmN2UzNTU1MTY4NjBjMGYzNSJ9" + } + ] + }, + { + "id": "claim_7736d17ef4954b78bb1d06faacda75c8", + "statement": "Pump execution evidence includes administrative pump-enabled/pump-disabled events, explicit pump-offset-set records with original/new offsets and reset status, entities-reposted records with entity _id/_deleted/_updated fields, and pump-discard-retries markers.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L15-L19", + "version": "repo-lines-v1:sha256:e7f302477c981d6916c5be130a49840c5fbdd98579b314850f2050ce670d4127:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWZlMTE4ZWJmYTc0NGRiYjRlNjhkNTM5NTA4ZmRkZTE3Yjk4NzkwODVkY2ExYzQwYzIwZDc5NTJjOGNmN2M0NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGI4ZGQ2YWJhYTRmN2VkYWRkZjlhZWU5NTk1NmFhN2U5MmRjNTIzMDU1Nzc3YmNiOTNlMmQwZTE1OGQ4YTk4ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzAwZjI2ZjBlYzhkNzM1OWI4NjMxODE2ZGU1YTE1ZTNkM2I2ODNiNTA5NDU1ZTc1OGRmM2RlZDIyZWM1ZDgxOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzFiZjdiNTNiZDMwMjhmOWE3Y2YyMTNkY2UwYWY5OGZhYmU3MmIxYmFlMzc3NDY4ZmFmOGIyM2Q0NmNmNWJjMCJ9" + }, + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L514-L517", + "version": "repo-lines-v1:sha256:193915b8e528d84c19ded425eb5a82b0bf022b2a4e97c03aced3ebd975f63c21:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGNjNzZkMDBhMjA0YzYxZGZkODcxMTQxYjcxYTQ5MDc5M2ZmYWI4ZThhYjU1NjMxZmJhNGFmN2NmZjVkNzRmNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYThmMWE0YTdlYjY1ODU3ZWU2MTJhOTI2ZTFhNzhlNjkyNmI1NGNmZTE2OTI0MjQzYThiYWM5ZWU4NDBhMTBlZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTc2MjFmZGJkNTRmY2I5MzBlMjdjZDI2ZTZmZjE3NmU5MzkxNDdmODE3MzE4YjU1YWRmMjFiZjZlNzY3Y2U1MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjdlM2NjOGZiMjE1ZDM0NTk4MDRlZDQxMzlmOGUyMjFmNGNlYWM3Yjg0M2Y4OTU4YjlmYjhiNDBkNzVlNGNhMyJ9" + }, + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L590-L659", + "version": "repo-lines-v1:sha256:95900a6aaa6958d63b612fb712ad644709c84c11ba6554904f8c5185d5d6938c:eyJzZWxlY3RlZExpbmVDb3VudCI6NzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg4MGI4ZTM4ODQxMTUwNjBiOTBjZGE4YjExYzQ3NDg5NGFjZGZlYmRkNzRjZjZlNDU1MGZmNjJlYzAzOWMzMDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ3MmU0YjBiMTBjOGIxNWFkYTJjMDVkNmU2YjQ1NWU2MGUyZjYwNTU0NjU5OGFiMWYwZDE2ZmQ1NTEwNWI5ZWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIyOGFmMjViMGVmZjUyZDI1OWYyZGNjNzUwZWE1N2NkZWJkNTlkYWI2NmRjZTg1MWE3YmE2OTU2ZmE2YzFlNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE1YTZmM2JjN2NlNDczYmIxNjBjZmExYzI3NDVlZjA4OWFlZWVjY2NiY2U3NzQwZTcyOWQ1ZGZmNGUxODdhOGIifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L567-L573", + "version": "repo-lines-v1:sha256:cfb1ae7c3c74cd602a4a547c83a079a577cfb6fdcec95cb568d8fa8ed3c66571:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGNiZmJjM2I2OTYxZDFmODc3YTZlNjIzZTFiY2E3ZmFlOWRiMzRiYzViZDdjNWZjZDUxNzljNGI3NGU0NTc3NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmU5YzAyNmI5MzVjODhkNGVlN2M1NWQ4ZTFkYjNhMzU3YmY0MzVhMzQ5YzlkYWVhZDhmZTc4ZWMxZmMyNzBhZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDI4N2M3MWMyMzkxODY3NDFmZWMxN2YyYTNiOWU5NmRhZDM3YTAxNDk2NmFmZTcwMzJlYmZjOTgxNDNkNjgzYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDA2YmM1MDY0YWY1NDNmNzE3ZDZjYTgzZGQzNDk0NTc2MGE0YWExNDQ3YWNmODUzMTliZmQzM2ZlMjAyZWJkMSJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L613-L617", + "version": "repo-lines-v1:sha256:527e4340071c0f73f529f50ff966912eaf540f5b5dfa606f0be27998315f270c:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzM2ZGM2NjBjNWU0YzM1MzAxNDg1MzQxOGVhNWVmMzFkNzFjZGMyZWM2OGNmMjUzNjk0MTViOWE5NDcyYWIwYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTQ4MDBjZWI1MTUwMWJmMTEzOGQ0NGMwY2M2ZTY5MDJhN2U5YTEwMzhmODRkYmVjZWNlNDMzY2Q3NzI4ZGNhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmNhMGE1MGMzZTQzODIxYWVjYTNiYmU5Y2E0YmQyYmI2NTE1MzFkODQzMzY5YWJlZDA1OGE3ZjFhZDNhNDlkMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWQyOWNhNTNiODc0ZDZlY2VhYmQ1M2MwZDU5OWQxNzUzZjhiMWM5ZDdhMDhjNzhhNjhlZGZmNTY5M2RlZmY2YiJ9" + } + ] + }, + { + "id": "claim_7a5b71614c934b04adc5091bfee9ccaf", + "statement": "No-op execution logging is disabled by default, is normally determined by sink changes even when the source produces entities, and errors or retries always imply logging; notification_granularity can force periodic no-op logging.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L301-L327", + "version": "repo-lines-v1:sha256:07f80f955e480ea45d67920c8a708dacd92c6b7e6a1171bfc8832a7ca70b0dcb:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI2NmRjNmFhMGI3Y2QzMDdkMTQwM2U1MGVkMTc2NmU3NDQ4MTdiNTA4YzNlNWY4MzMwNzRlMWE0YzYzZmI1YWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE0ZTlmOWVkYzcxNjM4OWVjODQ0ZTk4ZjcyNjg1MDY1Mzc1Njk5MmIxNDk3ODI4NWE2MmIxNDE4ODZhYmY2Y2EiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM1ZjRkZTE2YmEwYWI2NTE4NmJlMmJmNjVlMDM2Yzg4ODAzYTBjNmZhOTAxYTAyYTU1NzJlY2FjNmQ1YjgwNTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE1NGRlMmJjYjIyYjMyMzcyMmJjYzJmMzNlZDM2Y2EyOWE5ZWMxZjI5YWYzMDU5ZjEyNjA5NTA3ZTcyNGIyMGQifQ" + } + ] + }, + { + "id": "claim_a2d3ff213ea54400958af1eff67ba10e", + "statement": "When connected systems use custom or OAuth2 authentication, pump execution entities can expose tokens expiry-date metadata; the 2025-03-09 change introduced this evidence to reveal expiry expressions that compute incorrect dates.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L186-L194", + "version": "repo-lines-v1:sha256:d6f93433aa52cbec85238309e61cee20751bca46dd979a70e75720d1e5c897ef:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGNiNmI2YmQzNWY5M2FjNjZkM2RlMmVmNTYyNTI4ZmM4ZDJlYmI0MTlkZGYwZmNlNzdiN2RjODhlMDFmNzQ2NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjQ3NzlkYzBiYTUzZDQ5ZTYwZjE5YzgwMjI1Y2E2YTUxMmNmMDMxZTViNjkzYWMwMWY0YzllYjhkNjNmMTExNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDA0YTdjNjcwY2YyMTcwODE4NmFhYWY4MGM1MjIwYmRhMjFmODM0MDRjYjYxY2MxN2I3MTk5ZWE2NzllMzM5YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWJiZTIxZjBlNjcwY2I4MjVjODhlZjkzZDI4Mzc4MGJiOGMyNmYzNzY1ZjY1NDNkMjY0OTJjMjM3NWYzMmQ2ZSJ9" + }, + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L20-L22", + "version": "repo-lines-v1:sha256:31bf7b53bd3028f9a7cf213dce0af98fabe72b1bae377468faf8b23d46cf5bc0:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmYzMDkzNTMzMTUwYmVhYzliYmFmNWEzMTYxNjQ1OGM4MjU5MTU5NTM4OWRlNWE5YzBiY2QwOTM3ZGMzMTFiOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzA2ODVlOGE5MTMyZWY2ODAyODBhZTc0YTkzY2RhZDc2ZjQwZTY3ZjA2YTMzYzI5MzdiNTQyMjU5YjU0ODg3ZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmZjZjMxMjY1MTRjODVjYzQ5MWI4ZGI1Y2RkMGFjODI5YmMzNjI5MDNlNzU2MGM0NTBlYjkzNTZkZTI4MGIxYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTg0MTRjNDk2NDcwODNhYjAyZmVjOTM0ZTE0MjQ0ZWY0NmVjYjdmMzFhNTgzYThjMjE2ZDBhNzJiZjU4YjcyMiJ9" + } + ] + }, + { + "id": "claim_8babc178e02f458ba0594347440e68eb", + "statement": "Per-run execution metrics distinguish source entities processed from sink changes, which can be fewer due to dataset change tracking, and expose read/write error counts plus source/transform/sink times in seconds that may be misleading due to optimizations.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L677-L709", + "version": "repo-lines-v1:sha256:fbfa11bc14a597972a5c2689c1a6e99158cefa75b11815e7ad9210c58c11ae1e:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMwOTBhODI1MjM1ZmQ5MTlmODU1MGZlZGYxNzAyNWJmYTRlMWQ0OTBlZDkzZjgyMjBhMmFkYTY0ZjVjMDliY2YiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiYWZkYjg5NDQxYmM3NmRlNmRhNDY0OTk1MTMxNzM0Y2M4ZTk3ZmUyMDFjNzM2YThhOGE1YjJhOWZhM2EzYTkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE1ZDI4MzllY2I4OTcxNjU1NjYxMTM0MGQ2MmQwMWNmNzFlMGJhNjIzZjU4ZGE5ZjA2MGNmMmZmMzYxMDYyN2QiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE2ZjNlMjZjZTUzYjYwNWI1YWU0ZDAyODBlMDZjMjU1MDQzMzQ2YWNjYzhmM2U4M2ZkOWEzOTNmM2E3MzI2MzIifQ" + } + ] + }, + { + "id": "claim_acaa6955e9ed455cade7703cc954d519", + "statement": "Execution metrics expose maximum hops retrieval cardinality for one source entity, total traversal rows that may contain multiple bound entities, maximum batch memory footprint, and peak worker-thread memory footprint; the reference leaves the memory-footprint units unspecified.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L711-L729", + "version": "repo-lines-v1:sha256:8c99dde5499dd07626cadc863dd8cb733277ac03bec3aba23e9e55c32884b023:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjczMzdkYmI5YmE2ZWUyZTQyNDgyYWJjODQwNDI1NzM0ZTM4ZGYxNDc5NTIzMmMyMjliZTlkYzIzZjg3YmJkYzkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBiYTJjZThjYzY4M2U4NzRiNDNkZTAwNjg1NzYxYTEwMDA1YzhhNmM3M2JhYjJlNWFhNWIwZDk1NzZiOGI4N2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg1NzgxYmE4YTI0YWRmZjc5N2ZmZmE5NWVlOTdiYjBkYmIxNTBiYjZjMTE3Yzk1ZmJiNjdkNWQwOWU3N2NmYjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYzYWQ4ZTg1MzQ5ZmUxMTgxOTg4NTk3NmVmOTZjYmUzZjZmNjVjMjg4YjI5MDcxM2FjYWRiZGY5YTkyODAzODgifQ" + } + ] + }, + { + "id": "claim_1d3437f74f9543a9829c7bd77b2d3a84", + "statement": "Scheduling can use intervals or cron and signalling can request immediate scheduling, but signalling is best-effort and not persisted, so documented guidance retains a scheduled fallback; cron and intervals longer than an hour persist planned start times and missed runs are attempted when possible.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L90-L110", + "version": "repo-lines-v1:sha256:18c94dfb0aeea4caacbacc1de6116ea9c878baf3c9ec18b34a568f070132f1dd:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNmMzk1YmNjZjU1NDIyOGE3ZWIzODc2OWUwMjlmYzNmZWY5NjdlNjc1ZGMxYzNhYTFhY2EyMDlhYjUyYzU4NzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRhZWY1MTZjNWQzN2NiZGRhZGZlNjIzOWU3NzgzOWM0ZjVjNGViYWI2N2U4ZjBmNjY3YjUyNTI5YThkYmE0MzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ2NzZjZWNiMzIyN2Q5NjVjNjY3OTVmNmNhNzlmYzM0MDQ0MjQyZDg0MGUzNTc0OGEwMGY2Zjk5NTM3NDBiYjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM2Njc3NmM5NjZlZjkxNjIyMDkyZjNkNWNhODRhOTU0MTA3MzZlZGRiOTE2NmM5YzFhNTljMTNmZTlkZTY4YmYifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L15-L30", + "version": "repo-lines-v1:sha256:9fd07c3af430396fbbb561bab0c878d64b6727d6d6b7ff836fe56a6f66658723:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBjZjUyNjNhYzQ3YzhhYjhiZTRiMDI4NzllM2RiMjJhZWY3ODI0MWMzMWE2MjU4YmU4ZWE5ZmVlM2I0OWU0MTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzMjE5OGVlNzVlMGI5NzFhYTRmMzI2ZDNjNjQ2ZDc2OTQyOGY1M2JjYTQyNmZjZjcyYmNkNzk2MTc0NTUyMzUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFjYzBlMTNlOTM2MzZmY2ZiOTY5NDU1NWU2NTk5ZTIwY2I5MGNjZmU0ZDljYjZkY2Y0ZmQ0YTE3MzViMjI1ZWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkxOTUwZWRhOGNjMGVmMjBlNDFiZTBjOGQwM2E4NmJmMzg3OTcyZmFkMTM5ZTM4ZWY4YjcwZTg0MzBhZTE3MmMifQ" + } + ] + }, + { + "id": "claim_f187b198ee484aaba7234080ed9129ff", + "statement": "Completeness holds back source entities newer than the relevant completeness timestamp; a successful pipe run propagates the minimum timestamp from source and related datasets, and dataset-source completeness=true or a dataset list chooses the source value or the minimum listed value.", + "evidence": [ + { + "resource": "repo://hub/features/completeness-feature.rst#L8-L32", + "version": "repo-lines-v1:sha256:ee06f16838cb600d7a70de533cce763afeeda398e24c24695dcf0690afbb178b:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVkYWM3MmMyNWUyOGY5OTM0ZjIzNTM5MWZkOTUyZjk3MGJkOGNhNGZkYzQ2MTliYzg3ZTViNDIwODkzYTRjMDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU0OWY0ZjdhNDAzZDZkNjQ1NDY4MDcxMWJhNDI3MWFhYWI4YmM1ZmI3ZTcxY2I4YzBhMTQ5MmIzYWQ5NzIxYmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiMTg4OGM5OTMyOWM2NjQ2NGUwMzY5NDQzMmE5NzNhYzI1MTZkNGRkMzhlZmQzZTQwZGNjMDE4Y2UzNTM5OWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY3NWU2Yjg0Y2M1ZGMxYWIwMzM4ZDlhZjg4YjAzZmEwODdlZjkzN2U2ZWE1NDY3YjkxNThjNzkxZjAxYjBjNTIifQ" + } + ] + }, + { + "id": "claim_fb2c63a2c4814b8daf0f33d6ad58924f", + "statement": "initial_completeness only requires specified datasets to possess completeness values; include_completeness and exclude_completeness control contributing datasets, with exclusion taking priority, while require_populated_input can gate running on dataset population.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L287-L296", + "version": "repo-lines-v1:sha256:f73f5a037631b55ce07e4b121c869a117ff079164b293d25ab27ef5cf9f375fa:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEwMmMwYTMyYzMwMDFjMGNlZjBkZjE3MDJjOTk2M2Y1MjYwODUwNTg3YjNhZGQ2MWVmYThlNDFiNDQ1Mjc4M2YiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY3OGE2NGU1MzI2MGU1MDAxN2EzNzA1M2RjMjViYjZiYWM3YTFkMmI1YjVkZDI2ZDljOWY5MzIwNjA4YzQ0YjYifQ" + }, + { + "resource": "repo://hub/features/completeness-feature.rst#L30-L34", + "version": "repo-lines-v1:sha256:1e473539c56aef1e9fee279e4353641596f4a5ded6c5fcd83d4781fea3b42d2f:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDQwZTNmZjgwYWI3NzNjZDNkNzA2NzIwMWU4YzIzMDczMTg0NTg5NDg2NjIyZTlkNDI0ZmZmZGQyOGJlYzhhMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWNkZjEwMmI3YjNmODc3MmJhYWIyNTdkNzU2OWFhMDAwODJjMDJkZjVlNzEyYzRjZjkzNTAxNjBiNzg3YWFkZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGJjMzFmNzRiY2Y1ZGUxNzY1NDcwYWU4NGNjZjE0NWU1YTk2OWQ4OTE0ZmI2MzRiN2QzZTI3NWFmNGJjNmYzMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWQ3Nzc4MjRmMzc0NzhmY2JhYjFiNzcwZTM3MmQyMDZmNTc3ZDQ3OTA3MmUyYjkxMmMwNDc3MWY4ZmQ4NDk3ZSJ9" + }, + { + "resource": "repo://hub/features/completeness-feature.rst#L54-L79", + "version": "repo-lines-v1:sha256:e0ce291a6e7120406c43c30ecf724c74f12d88e9d706aab5fba6ea8a9b90863a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMxM2U1NjcxNGJlZGI0MDgzODQ0NGRmMDZjYmFhODBmNTU1ZTU3MGViNTc4ZGNhMWE5ZjZmMmU4NTJmZjE3MmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIzODFkNTE4MTY1N2ZiNzM5Y2I3OTRmNDBhMzk0ZmIzM2Q1YmU4MDgxNDBhOWY1YzQ1NjkyZWZlMDFkYTI4YTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQifQ" + } + ] + }, + { + "id": "claim_62cdec4e42214faa983b93ce36f7fa28", + "statement": "Completeness filtering is incompatible with full rescans in that recent entities may be hidden from the scan and then deleted by dataset-sink deletion tracking; disabling deletion_tracking is the documented option where those deletions are unwanted.", + "evidence": [ + { + "resource": "repo://hub/features/completeness-feature.rst#L37-L39", + "version": "repo-lines-v1:sha256:931bfd27345f79e724c95d2b2da6fc0f600b98311088681ed2b9dd64bc976143:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTAwNDAxMjJiMjNhMzk0YjI2ZGE3YTdjODBkYTZhNTE4ZmE3Yzk0MjI5ZDJmOTk0Y2E2NWRjYjg5NGY1OWIwZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGMxMjM0ODk4NTM2YjU3YTk3OWQ2NzI4OThkNmQyN2Q0NTE1NDE1ODRmOTJhNDFjMWVhNWM1NDQ1YjU1YTQ1NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWI4YTdjZDMyY2U3MjY3ZjczOTBmNWY5NTM0MjBlYTQ2MjhlMDYwNTcwYWVjNzk0NmJlY2RkMTRjNmFlOTU0OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + } + ] + }, + { + "id": "claim_682972423c844874bde007d1d5b1db43", + "statement": "Dataset-sink circuit breakers trip on configured per-run write limits only once the sink is populated, prevent running, and block compaction and reposting until resolved.", + "evidence": [ + { + "resource": "repo://hub/features/circuit-breakers.rst#L8-L26", + "version": "repo-lines-v1:sha256:e9f0b74631f42d227df0f059a14739dc0bd03bcab2d3fad666f86a00e6cf8c94:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4OWYwMDQ1YzFjMjUzYmUzODE0MThhOWU2NWIyYjljODA4ODVkN2UyYWZiZGY1YzQxY2U1YWZlZTBjYTAzZTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJiNGMxNThlMzQ1ZTJhY2IwMDFkN2VmYWFlOTQxYjJkZDVhZmMyZDIwZWRkZTY1MWQyY2FiYWVhNzZkYzRmNDgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzMGJiNTYyZGE2NDU3YWY2NTA5Y2QyNTBmM2EzNGE4ZTlkYzQxMDkwNjM5YTQ5NWVkNWVlMGI2YmM4NTY5OTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBhN2E1ZDM1YjdkZDliMjhkMjVlOTUyYjQ4YTUwODE4NDNkNDgzNDRiZTIzNGNmMWUzMDdkNTA5NzE3NDA5ODEifQ" + } + ] + }, + { + "id": "claim_8683ddc7521d425cbb9e32ee7a85f646", + "statement": "Circuit-breaker rollback deletes entities written during the tripped run, commit exposes uncommitted entities, and both reset the breaker so the pipe can run again.", + "evidence": [ + { + "resource": "repo://hub/features/circuit-breakers.rst#L18-L23", + "version": "repo-lines-v1:sha256:9040ca5b49be162c2f54f412f6088bfe2942709525c40bb6841f3e8e7a039d65:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTY0YjA5YTdhOGI5NzQ0YzYxMGIwZjNmMjNmM2Q3OGVhMTBiNWI0ODcyZjA0ZGI5Y2M5Zjc5YzA3ZjRlMTNkNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTAwMDMyNWM0MmMxMjMzYTg5N2I1N2MwMTQ3YjA0YjFjMzgwZGRjOWE2NzA5ODY3YTk5NTdkYTEzZGU5ZTkzMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmE4ZDU5ZjE5NDk2MjljYWJmN2VlMmU4MDk1MTI2ZGY4M2E1MjU4NDU5ODk2MzNjYTlmYTg3OWViYWU1YTAyNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2Q3ODlkNTEzNmUyZTVjYTg3M2FkYzJmYjYwYzkzYmQwYjg4ODhlYWI3ZGFlODU3OWVkNDgyYjAzMzBhOGI1YyJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L786-L791", + "version": "repo-lines-v1:sha256:7ee9bdaf598552767ec9f327d297cd7429f1249e153f701611cb4f26894a0571:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjZlYWEyOGE4ODFlYWNhMTRkNjlkZjBkZmE1ZWU5MGM1OWI2NmZkMjQ4NGRjMmY4NjgwODJkOWIzMzUxNGMxYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDVhNTdmMTVlN2QxNDhiZmZlNzM0N2I3MmVhZTQzOTJhOTIyYjg5NmY4ZDE2Zjc0YzE5OTcyODQzMjczNzM4MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzQ4MDY4ZjcxOGNiY2ZlY2U5ZWMzYTVhMzI1MzliMDcwYmJmMTMxNjUyYzIxMzgyZGE3ZmQ4MTIxZTkzNjhlNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTEwMWNjNjNjNjk5NGFjZDcwYjAxNDY0NTM5ODVlNjI1NTQ0OTlmZDY2OWViMjQyNDQ2YmI3ODdkNGY5YmNkNCJ9" + } + ] + }, + { + "id": "claim_24ca3ccc5dc1442eba8b147994775145", + "statement": "The troubleshooting guidance recommends partial rescans for incremental connect ingestion; partial_rescan_run_count requires partial_rescan_delta, which shifts since backward by an integer delta or by seconds for timestamp values.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/troubleshooting.rst#L24-L24", + "version": "repo-lines-v1:sha256:195e6c127151f68cfa9455adba073ca8953c9e4ad9597f8c50243652f072ffc5:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTk1ZTZjMTI3MTUxZjY4Y2ZhOTQ1NWFkYmEwNzNjYTg5NTNjOWU0YWQ5NTk3ZjhjNTAyNDM2NTJmMDcyZmZjNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTk1ZTZjMTI3MTUxZjY4Y2ZhOTQ1NWFkYmEwNzNjYTg5NTNjOWU0YWQ5NTk3ZjhjNTAyNDM2NTJmMDcyZmZjNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDRiMDcyMmJjNDM2NzgzNmMyMmZjYTI0NDZhMTY2YjU1ZDcxMDZlZjEwOTZlMWE4MmUyZjY0YTBmZmViNGM0NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTQ2ZGEyZGIyMWZiODBiODY1ZTY0MmQ3MzhhODNhNmIwOWFmNTNiZDIxMjU0MzlkYzJkM2Y3NTkxZjRmNGI0NyJ9" + }, + { + "resource": "repo://hub/documentation/operations/troubleshooting.rst#L49-L53", + "version": "repo-lines-v1:sha256:de49fe8ded970404b6919dcb6b643716c9276e34b05069fdeb349f83e10fdcd0:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGU3OWVjMjM3MjMyZTAzZTIyZDM2YzFiYWJjYmYxNjYxY2M0NjBlYjY0ODlmN2QwNmNlNmUyMDNlZTE3ZWZkYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjg3MTg0OTYxNzI3OGZjODY5MzJmNWMxZDc0ZTdlZWRiOTZkNjIxNzMzZWNiZjdmNGViYjYyZmIxNzc4NjAwOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTExMWFiMWRjZGUyMmZkNzA1MDljMzI4YjY0OWI5MzM1MjBhNzAxNjg2NWE2MTFhYTkxODMwZTVhYmE5N2ZiYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODdjODE1MzU5YzMzMWU2OTI1ODM4NWQwNmYwY2RjOWNhNTdjMjA4MmEwNDBhZTcxNDA0ZmRjN2E3ZGRiZWUwOCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L133-L160", + "version": "repo-lines-v1:sha256:9b730695bf49aff53b560c6860a94fe8f472f6844e183618c5ff97bb5d9bc26c:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI3NGJmYTMwZGRlZjFlYWIwZWE1ZTg1OTM3OTI0ZjZiYzRmOWJlNDY5NTQ0MDQwNjI0ZDM2NDZlYjRmNzYxMmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRiM2EwYzFhOTU0ZGRkNjAyYTIyNWM4Nzg4M2IzZWMwYTllODEyN2VkNmNkNTBhODNkZGJmNTNjOGY1ZjEyMzciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_6a1c816f8a474a21bf296ec01a99905a", + "statement": "URL systems own HTTP connection/session/authentication settings including URL pattern, proxies and timeouts, and a configured jwt_token automatically overwrites any supplied Authorization header.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L114-L152", + "version": "repo-lines-v1:sha256:2cbf49adfa78d09c235d23292024b5112bdc3f2338b0e8b4d25c5fd2ae60d18b:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQyZTM4ZmY5YTUzZDJjNjlhZDBjNzU2ZGQzN2Y3ZWI0NTc1M2NiMjhmZmJmYWY5ZDgyMzc0YzYyNDQ4Nzg3ZWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxODk2MmVjMTM4YzU2MTg3YmY3MzJiZWI1NzljMWEwYjhhZDI4ODY4YTU1MDQ1NTUxN2JiNDIxYTdhN2VjNjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUxZGZjZmY0OTkyYjFjZDU2YjlkMDk2ZGNjZjUzNjUzZjRmMDE3MDU1YWE4ZDI1MWUzMTU5NTBjNjQ3Y2FlMDYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L167-L187", + "version": "repo-lines-v1:sha256:0add1dbf090af94735191f0c593916f12cf99f082073e800136b96ad2d4823f4:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEwMTE1ZDdlNzE0YThiMzNmN2ZjY2U3ZmJjNTRhNTBmMjllNzA1NWVjZmJlNzhmOWI2MWUxYWM2NjU4OGUwZjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlYjA2ZmFkNTc4NzIxOGEzZDBkNjNkNzI3NGQwYzc0MGI1OWQ0OTQ4NzljYzRjMjljMTZjOGE1YzcyYmRiYWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNlYmMyMzI2ZmU3ODViNTMxYTg4NWY4MzAzMDM4OWM3ZmI2YjAyN2E4N2FiMzg1Mzg5NDhmNzIxZDJlYjRkMjcifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L6-L9", + "version": "repo-lines-v1:sha256:e99ce376b340573badc32d907dd59f0d30dbefcd445fe5daf959363ae249e813:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDlhMzlmYjdhMWI4MGJhNmQ0OWYwZTViYmNjYjNlNDgxNzAwNGIwZmZhODE0NjYyNmVlY2JiNzhiOTI2MzVhMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDIxMjJlYmJhM2NhYWEwYzA1MTI4ZDhjOWQ1MGY3OWI0NTM0Y2Y1MjkzZTY4YmMyOTE3OGY2OTUwM2VmZDk3MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDk0Yzk4Mjg4M2U2YzYxOGY5ZmYyMGE0MzU3NTM5ZWViNTE4YmExYzViNjQ4ZTM0MjI2YTE4YzMwMTA1N2E4NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2RiZjhhYTMxYWI2ZWVkNWM5ZGIxMzM5NDNlMzdiOTM1Njc3YWM1MTczNTlhYmY5NzQ5MjM0NjljOTEyYmMzOSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L74-L82", + "version": "repo-lines-v1:sha256:47846e0ab98117917dbb3368dca23fb6311f4f7fd63ff69a976ac0140c137f80:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODNiYTAyYjBjMDI3YmZmYzA3YjZhYTJjMWJjODdmYjI2N2QwZTNiMmIxNDIwZjQ2YmY1MDhhNzYyMGM0MTdjYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzdiNDlmNjBkMWQyYTVmMjEzMjVhNGZiN2ZhNWI3MDY4YWE5MTQ1MTkyZTYwMTdkM2M1ZjMzOWM4NDZlZWUyMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + } + ] + }, + { + "id": "claim_83e30890ce4646c1aa839804371fd7de", + "statement": "Custom authentication expires_in_expression must evaluate to seconds, expires_at_expression must evaluate to a date and takes priority when valid, and refresh_window specifies seconds before expiry to refresh.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L549-L579", + "version": "repo-lines-v1:sha256:7d81ca2e9758393692a48b554e36a3b63b4bd1181bc5befd2fd42b1dd5a7ef3e:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwNjBmYzU2NjMzNTkwYmYzNjVjNzM2NjNhMGRmZmY1N2Q2MWFlNzZlZTg1YzkyMGI0NTk2OGQ2NWUyM2YyZmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdmNWJlODdiOTg1YzI1NmRiMGNhN2M4ZjRjNDMyZjQ0ZWVkYzQyMjg5Mzk3YjU4NTNiYmM2Y2IxNTQ3OTRjNWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2ZmJjYWI1ZTFkNDA2ZjdlNWQ0NmY4ZTEyZjQxNTdhNzM2ZWU5N2Q5Zjk2OGI0NzMxZGFkMDQxNGI4ZThlYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdhNjExNzljNTY2OTMxMTNlMjgzMmJjMmZhNTIxMjNmYjVmM2Q3Nzg3Yzk4OTQ4ODU5M2MyN2Q4NDQ3MTg5ZTMifQ" + } + ] + }, + { + "id": "claim_9b5bf83cb92b4f3cac5f58c180eb37ab", + "statement": "max_read_retries defaults to zero, causing immediate error logging rather than retries; read_retry_delay defaults to zero seconds, which can quickly exhaust retries for persistent errors.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L208-L213", + "version": "repo-lines-v1:sha256:5e657e9067929e0c0efbb2724239145e97034e3127aeb0f2bfa639cfe5feeda1:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTc3NTIyMzgzMDhlMzY0ZjlhOTMwMzdmMDA1MWNmZDI3MjZlMjFmNmY4Y2Q1OTAxMjc3OWZjZmRhN2RjMjVlNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWE5MThlNTIwYzM4ZGZlN2RlNTRlNTg5NjBkOWY4MTI0ZjQ5NzcxNjUwYTNmNWY1MTgzZjI0MzM4MTRjMTY0YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzYyZGQ1NDRjZmQ4NDNlMjViZTQ3N2NjMjA4MjljOWViYzZjMzk3N2I1MWJiZGJmN2NjY2RlNTIyYjg0ZTAyZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjcxZDlkZGI2MTk2ZWY2ZTQ5NzJlMjE2MWNkZTI3N2VkZTkzYzZjNWQzNTA1ZjI3OTQ4MmVkMDY4MTliMzRhOCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L225-L231", + "version": "repo-lines-v1:sha256:f292e89eb47983330ccd6fd58f7ba890d0aec905d8c415439eee7dc6c6fc9631:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2EwMmQ1ZjBmZjMwZWM0YTNmOThmNDM4NzA0YzQyYmJhMjc1NjgyMjE4MzJiMWQ5OGIzMjg0MDRmYzNjY2JkZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWE5MThlNTIwYzM4ZGZlN2RlNTRlNTg5NjBkOWY4MTI0ZjQ5NzcxNjUwYTNmNWY1MTgzZjI0MzM4MTRjMTY0YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2MwMzA5MzJiMTE5OTAwMTgwYzZhOGEzMzUyNzE1MmI2NjZjMmY4MmQ1ZDc1Yzk3M2E4YjZhN2I5NzAyNWJlNCJ9" + } + ] + }, + { + "id": "claim_c05c085562774b01a14eba35ba40855b", + "statement": "HTTP-status retry_strategy on a URL system provides retry-property defaults per status code or a default key, but explicit pump properties override the strategy.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L179-L183", + "version": "repo-lines-v1:sha256:4e36731d304f18936923409bf0b500f8336793201ce8221aa0e68eda90b7e1c8:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWQ5ZTJkYzAyN2RjMjkwYTY0YTM2ODY2MDg3OTE4MzM4NzJmZTJlNGM3MWViYTQyZmJhZTllNTViYjMxMmRhYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDYwYjBlYTNiMmM2ODlkOWI4YzdkMzYxY2YyNmI0ZjgwMzEyZTk2OTFlZWE3NmVmMDcxMzRmY2E5ODVhNTRmZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDE2YjJhYjg5MmEwNjBlMjIyYzExYmI0MjJjMWYzNGY4MjJmOWU0ZGQ3OGYxZDQzODczNDg1ZWFhOWYwNTliMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDQwNjMxOTk0NTFjN2M1NzE1NTM0Y2Q4MzQ4OGM2ZTIzMmQ5MjViNzU1MmYwZTE1ZmE5YmUyZGVhNjkwZGIwZSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L198-L208", + "version": "repo-lines-v1:sha256:e2234e1397e52e0ab1b48365d0df09d7c2ca8df2f8cdeba36984281fe9bec2b5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ2MjcyYzIxNWNhMjI3OWJhMmZmMTExNjkyNmRlMzVkNTdhNmNhMDQ2ZGZhNTg1MDM4NWQyMjg1ZGVhYWRkNWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA0YzcyYzA3ZmZlNzcwNDE1NzVkY2ZkNjk4ZmI0ZWZiY2IxM2I2MmMyMGI0NGZkZjc2YjE3YjY2ODdhZWZmNTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJiNDc0NDgxYjJiNDE2MzhhYzlhZjBlZmI2MDE3MWM0NzM1NWUwMTJmNjY1N2FjMDJhOWE5ZmE5NGY4MDA2YTYifQ" + } + ] + }, + { + "id": "claim_6ff5ea5f344d46359d14a23b01f126d9", + "statement": "HTTP transforms POST JSON arrays and expect JSON-array responses, raise exceptions on non-2xx status, and may filter entities or create new ones through the returned list.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-http.rst#L7-L19", + "version": "repo-lines-v1:sha256:593a581936d372361171c71831e0f5c9d53a038ad9fa3823dcbaa07b1d0ba9cb:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUwYjUwNDI4NDZiMTdlMjhhNTU5NTJmM2FjZTEzYjhhMGZiZTc5NjFmOTRiMzE3Y2NhMDVlNGI1ZGVkMjViYTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJhNTIyNTJhZDU2M2RmNDk3YWFmMDg5N2EyNjk5NjE1YTZiZjZjODM0YjBlYjI3YzVmMWM2MTU1MWMwOWUxYzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiZDIyNjE0MDA3Mjk4Yzk1MzFiODM3NzFhYjc5YWY1NzRhMTEzYWE4NmIyYzE3NTFhNzc2MDhjMTcxZDU2MmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYzNmUwYTEzYzE4OWUzMGM3ZTRlZmIzNGYxZTY1YmQyMzg2ZDRmMWVkZmEwMTgzYzUzYzFlZGQyNWM2ODg5OTMifQ" + } + ] + }, + { + "id": "claim_c156ba43b68b4bc4ad8d6d4ab33affd8", + "statement": "max_consecutive_write_errors defaults to one and terminates the current run after the first consecutive write error; write_retry_delay defaults to zero seconds and applies when the consecutive-error allowance is greater than one.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L234-L241", + "version": "repo-lines-v1:sha256:39f039b4337c1b8953326cb254b8921efea6c5859fac0db1d6bd77f4a78878bd:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDE4MDUyMzYyNWQ0ZWRhYjIwMmE1OTcwZWU3Y2E5ZDc1NDgyN2QzOTRjNWM5N2ZkNWMyMDc3YzAxMzFlNzE0ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWE5MThlNTIwYzM4ZGZlN2RlNTRlNTg5NjBkOWY4MTI0ZjQ5NzcxNjUwYTNmNWY1MTgzZjI0MzM4MTRjMTY0YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2EwNTdjNzViZmI5ZWUxY2M0N2VmNmEwNDNmOGY0ZDlhZGEwYTNjNzU0ODMyYjE4M2MxMzUxNjU5NmUyM2FkNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjAxYzVlMWM3N2MwOWY3YjE4MDQ2YmJjNTMyMTFiZjBmMDc4MzQ3ZjJmZTdmODlhMmU1YTJmMjQ5MjNhNzg5MCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L252-L257", + "version": "repo-lines-v1:sha256:a7d0d30a4f4cf8557cae5d815d973eb0cc4d40787091f73a66b0494ef3b80ef7:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWNlMzE2Njg5MWVjZWU3OTViMzIyMDQxY2I2Mzc5YzE5YTZlMzc2MzJiMGExMGQ5YWIyZjc3NjU4MDQwNzk2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzZkNDIwMmIzODE1NjRmMDU3NmM5NDk0MGI4NDQxODMxMzk5MjNjZTNhNWQwNmE0MGRiYjk3NGMwMzBkYTM4OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2M1N2JjMzU3YjE3YzBmNGY3YjgzYWRlNWQ5ZWM5OWNmNTJkODYyY2I1ZTY4NTU1MmJjNjEyOWRiZmRmYzJmNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTg1MmU3MDJhZDUxYzZjMjExMmE4NzJkNjdjOGU3ODljZmRlODEyZjVhNjVlZTdjZmIyMmU0YWMzZTA0ZjEyMSJ9" + } + ] + }, + { + "id": "claim_74e39900fa1b453ba1ac8e39a0dfae3f", + "statement": "max_write_errors_in_retry_dataset defaults to zero, effectively disabling failed-write retries; when enabled it bounds retryable non-dead failures and can terminate a run before other limits, while max_retries_per_entity defaults to five before giving up.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L244-L268", + "version": "repo-lines-v1:sha256:3f77f387f26fdb760c95dbc6874266d0e9493a6dfc050c6d6fd296184e86cc83:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkODI3MDkyYmE0OGU2YTJmM2NjYjZlOTVlZDg5NWE0NDUyYjQyODQ5MGIyZjkxMGQ1MTcwNGViMjQzOWZkMGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhOTE4ZTUyMGMzOGRmZTdkZTU0ZTU4OTYwZDlmODEyNGY0OTc3MTY1MGEzZjVmNTE4M2YyNDMzODE0YzE2NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNhMDU3Yzc1YmZiOWVlMWNjNDdlZjZhMDQzZjhmNGQ5YWRhMGEzYzc1NDgzMmIxODNjMTM1MTY1OTZlMjNhZDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBlNzA5OThhMTI5ODQ3NjNhOTJhMDk2ZjNiYTVkMmUzZTMxZDg4OTdlMmRhN2NiNDc2MzYzNWY0NTI4MGQ4OGIifQ" + } + ] + }, + { + "id": "claim_93cae06b7efc4b85bda4fc819d8f6f06", + "statement": "batch_retries defaults to three and only affects batching-capable sinks; fallback_to_single_entities_on_batch_fail defaults true to retry individually after batch failure, potentially at prohibitive per-entity cost.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L271-L283", + "version": "repo-lines-v1:sha256:7fb971c3fb57a955cee5d0ea083c236be1e31b62981c84906b9abcb72a99af61:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAzMDViOTdjZDYzMDI0YTZiM2FkNGMxYzE3ODE1ZWRiZGY2MzJhYzJkZjA0ZWFmNzc2NjI1MmY3YTJiNTBhMWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJkOTk5YWI5MmNjMjNkZjA2NmM3YmY0NDdkY2NiNWE1ZmU0ZGZjOWIyMWMzN2I0NTJhMGVhYmFkNzRiNWVmZjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNhMDU3Yzc1YmZiOWVlMWNjNDdlZjZhMDQzZjhmNGQ5YWRhMGEzYzc1NDgzMmIxODNjMTM1MTY1OTZlMjNhZDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5NjlkNTFkNGM5YzhmYWZjZTlmNDc5OGYzZWQ3OGM0OThlNTJlYmFkYzFjZjEzZmQ0MDAwOTM0MGE4YjdmMDQifQ" + } + ] + }, + { + "id": "claim_f759b370f8494a84bc0c676ef56a9b8a", + "statement": "Dead-letter routing requires non-zero max_write_errors_in_retry_dataset and exhausted per-entity retries, uses a dataset unique per pipe, and the reference limits access to users authorized to see the pipe configuration.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L190-L195", + "version": "repo-lines-v1:sha256:03130d01638e6af896f086fd7b1c2cb61736d1e687031ba161e6758d573af745:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOThiZjAxZjQ4M2U5MDljZjU1NTJhMjMwNWUzM2VjYzQ3NDM5MTBiZDlkOTJiNGY2NmJlMjZjMThkMjk3YmRjNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjYyYzNlMDQ5Yzg5NDAyYTRjMGI3OWY2Mzg2MmVkY2Q0YmJkNTkxOTcxM2M4MTAzOWEyYmQ2Yjg5NzNmZjM5NiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + } + ] + }, + { + "id": "claim_80c12dee4af54d75b0c9b10ca2e520b5", + "statement": "Documented target failure causes include non-idempotent writes, missing prerequisite object ordering, dependent or already-deleted deletes, invalid data and failed batches; the guidance recommends storing target status/feedback in a dataset, separating system from entity failures, validating output, and monitoring dead letters.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/troubleshooting.rst#L14-L59", + "version": "repo-lines-v1:sha256:a56e7cdfb261940965871e4226da23dadec6aa5c48271d830c8f9d8bd88e68b8:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMyMTc4MzIzNTk2MjgzM2EwNDk2MzAzM2I2YTgzZDM3NDY4OTVlYmMyNzM4ODc2NzZhMTRhNWJhNThmOWY2MTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJhOGU0ZjVmYjU2NTQ3ZjQ0NmYxMzE1ZTMxZTY5MjdiOWUxZDRlMzdmZmZiYzE1MGYyMzAwOTU2MWFjOTQwODkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQwNjRjNjBiN2U1YzZlYjY0NzVmMDMzMmZlZmMwMTk4MDk4ODdiNGYwNWI5MjFjYTBlNGQ3MmNlYTM5NDJiMjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJhYzAzZjFhMTZmZTI0MTBlMDJlNTM3YWJhMTQ5NGU3YWY2NjM5MzlhMDA4ZDgxMTJhY2E2NmI3YjMxY2QxM2YifQ" + } + ] + }, + { + "id": "claim_ae3c08c1b0744ad69b03f62b6b291037", + "statement": "SQL bulk debugging can preserve failed-operation temporary files with keep_failed_bulk_operation_files=true; locating them requires server disk access and the files are deleted at the next node restart.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-sql.rst#L112-L120", + "version": "repo-lines-v1:sha256:78327096c88f34fadad1f65e2bee0b8d227763885fab8eac4c9258217b20351b:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWE0MDg4OGE0OWZlYTAzZDY3ZWMxNDgwZmRiNWRjOTEyMGY0MWQ2ZTczMjIwMGUxYzM3ZTcwMDY3MzJlM2I1ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzNkNWFiOTI0MjBmZDQzZmJhYzVlNTRlZTJhMWI2ZTViYzIzZDAwNzFkODI1NGUyOTI3MDE0ZGE4NTg5ZGNkYyJ9" + } + ] + }, + { + "id": "claim_ba7ac785309c4bf89fdd2b93ae2030c2", + "statement": "Repeated non-idempotent operations can produce different results and need target-aware safeguards; automatic target modifications can cause bidirectional synchronization loops, and wrong target identifiers can cause unexpected updates or deletes.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/troubleshooting.rst#L74-L80", + "version": "repo-lines-v1:sha256:5d5ee6d4b2afddcbebd9561f5f5818a32e4b9f600c614f499c137cab1d0774f9:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzBiMmVmNmM1ZmVhZjRhYWE3NTFmNjUxZmUwYTljNWQwZGFjOWFiNTUwZDA0NmMxNjQ1ZTc1NDYxYTU0ODVlNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMwOGQwODc3NGE0YTRhMmI5MTM3MmJmN2MxMmNmZWY1NDdlNzcxOWExYjI4OTY1ZjI5YjI3N2ZjZDMyZWE0MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWQ5OGZiOGIyMDcxZWVjN2M0MjZiMjhkODE1YWY2NjVlYjMyMjExMGU1NWQ5ZWI1YTc2MjBiMzQ4ZWMxZGE1MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTdmNTFiMmNkNzM5OGEyMjA2MDlhNDgzYTZkODE5OTBlNTRkMmVkN2YxZDQwYTYxMjk5N2Y2NzJiYmY0OTBjNSJ9" + }, + { + "resource": "repo://hub/idempotency.rst#L9-L21", + "version": "repo-lines-v1:sha256:451273acdf901c2dfe9462dd86fa1613b136b98bcfe28f4ba6d6c4291444b481:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ2YTdkYmUzODg0NmUyNjgzYmRkZmNjMDAxYWQzZGQ4YjhlNDY0MmQyMjc2OTliOWE1ZjY3ZTdjMmUyNTVjNzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc3OTliZTFlY2JiMTI1YTUyMDQ4NDNhNGQ2MjA4Yjg5NTUwNzRhZDlhYTUzNzg2ZjliZTgwM2YzNjUzZjg2YWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVjMGI2Y2VkYzkyNjc1ZGZmZDU5M2U3NGU4ZjFiNzA1NDVkODQ3YmJjNjc5MmEwNTIwMzAyYWY1YmZjZWI0Y2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE3OTE5MDI3YTczNDBiYzExZjNiNzIxMTM1ZjNmMjEwZTAyYTlkZjQ1NmE2Y2FiNDRjMzE1M2I5YmYzMjcyNzIifQ" + } + ] + }, + { + "id": "claim_ab26acc210794bbabf24bbfa91ddce2a", + "statement": "Bidirectional duplicate prevention uses namespace splitting to identify entities already in the target namespace and a duplicate hops block to prevent reinserting entities whose successful insert is already recorded in the share sink; pre-existing duplicates need an appropriate global merge criterion.", + "evidence": [ + { + "resource": "repo://hub/bidirectional-synchronization.rst#L56-L75", + "version": "repo-lines-v1:sha256:2fdbfb57e743809f629ca0a576a167ae02e9e5329538df6003d43f70dfbc212a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY2MWIzNTQ4NTljYTRkMGM3YzMyNGNmMDQ0ODQ2YTNjMjkwZjE1ZThiNTcyZTVmZDI4NjRkMDNiZGE5YzUxZDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRkZjUzOTk1ODQyOGNkY2I3ODcwOTM1MWJiODhkNDRkYzcyNDQxNWE5NjY3MTc0MzYzZmRjYTI0ZWJjMzBjMjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIwMjFmZjRjZDE4MzNmMTZiZDdlZjcwY2UyYmE2OTA0ODZjNzcyZjUwMmE3ZTRhN2VkNDMwODFjYzYzNTdkNTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZmMDc5YTQxYTVmZDQ2NjZlMzE4YzU0N2VkNzU5M2JhMjk1MWFjODg2YzY5MzdhMGQwN2Q3ZGYyMDQ3YTA0ZGYifQ" + } + ] + }, + { + "id": "claim_27fe39d9f69b4f0aa9916e900eb16462", + "statement": "Capturing target insert responses and establishing origin connects newly inserted target entities with their origin, while completeness and optimistic locking address propagation races and the risk of overwriting not-yet-imported source changes.", + "evidence": [ + { + "resource": "repo://hub/bidirectional-synchronization.rst#L80-L112", + "version": "repo-lines-v1:sha256:902c098866765d5cb072e92b55699ca2c98f2dd779d30a4ff3b38e874183a945:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYwYjU0MTliZWZjY2Q0MTNjZDQzNDJlMTJjMTA5MzE4NzE2OWYxZmVmYjdjY2Q1MDU4ZGJhYTg4OTM3ODQxZDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhlMWY1MzFhNDM3OWY5YjZlYzRlNWI3MWE1YjdjZDRlYTcwOWRjNDJkZGUyMjFkZmVlNWQ1YjQ2YjFjMzIwODgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI4YTk5OTViMWFiNWZkYmNjZWIxNzIzMjdhNzIzOWNiMGExMmY4ZjgwYWExOWZiZDMzNTk4ZTM4NjVmMTg1ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYzNGZkOWI5YjAzMDdmZGFmMTY0Yjg5NWE4OWI5MmFiOTU0ODllMTg2Njc4NDAxMjJjNDU5MmIzM2UyOTk3NjEifQ" + } + ] + }, + { + "id": "claim_49a05e09ff614b3c88ff06a7c515d60e", + "statement": "DTL joins succeed on any overlapping values, null values and deleted entities are not indexed, and tuples-based composite keys generally provide better precision than multiple individual joins.", + "evidence": [ + { + "resource": "repo://hub/dtl/joins.rst#L25-L56", + "version": "repo-lines-v1:sha256:0d8ee62df754c9db664d7929714b0224bd1037559d7b7ed8e7d22e6f96522b45:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwOTlhYThmMTYyMGFlNjM2OWM5YTMzY2Y5YzMzODAwNWViNWY4YmQwZThlODljYTA0ODVjMTIxOTc2NjE2YmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjN2I2MjFiM2VkNDE2ZDYwYWNhZjIzYzE4MDg3YmI2NzMzOTk0OTdhZjdmMzlmY2QwZDI2MjQ2ZWRjNWQ4NjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI5ZGMyMGIxN2ViMzljMjVmZmMxMTc0NmJkYzY5NjE2ZjdlMDEzMzg3ZjhlZmRhMDg3ZmZmNjYwOTUyYTgwMjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_6ee5510923ea4ebb9fe245e4b3edbd56", + "statement": "Dependency tracking reverses hops traversal from changed referenced entities to affected source entities and only supports dataset-source pipes, so hops in a merge-source pipe do not get that tracking and may require splitting the pipe.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L9-L11", + "version": "repo-lines-v1:sha256:a1bd2cf1485667322c1d314fe889c2b1f9886d19fe1d007a938a091067598872:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMxNzI0NzM4MWYxNGY2OGEwYmY1OTZkYThkNTdhYzJkOWY0ZTg5ZTliMWIyNGIyZmQyOTE4ZTExMWNmNjYxOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzczODk1MTc3N2Q5OGI3YzFjNzUxYTY0YzQ2MmE5YmRiOWQwN2MzNDg2N2I2Y2QzYTA1YzE5NWFhMTQ0NTllMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzc0NmY5NjM5ODUzY2I2ZGZiOGMzOWYzMTZiZDQ0ZDg4YjYyNjc1NmMwZTM2OTI3NzM0NTAwNzNmOGNjYjg5YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjgwNmNiMmI0ZWQ2M2ZlOGQ1YjhjNzkyZmM0YzZmMTNiNWViOWU5YzRmYzcwYjU3YTYwNTBjMjBmOWRiOGExMCJ9" + }, + { + "resource": "repo://hub/features/dependency-tracking.rst#L8-L14", + "version": "repo-lines-v1:sha256:752f9ae994e38b757195dcec312457813f6ed823de4486cff9a14aae1b61267b:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUzN2VjNzZlZmRiZDZlNTU3ZjQ4MjFkNmEyMWM4Y2E3YjBjYTdkNjdiNmNjNzIxYTBjMjI0YjU1ZmM2MDMxZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDYwZjVhODVlZmEyYmE5NDM1OTViYjFiYmQwMTZhMDVlMzk4MTljOWZmNGNjMjFhZWQwNTM3NTdiNTc4MDUyZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzI0MGVjZWQ1MDEwYTQyZjEwZDcyZjFhMDU5YTA3ODliN2NhZDVlN2E1NTA1MTFkYzYzM2FkYWQ5OGU3OTQ0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWUxMGM2MDA1NjAyNjMyOTgzY2QxMTJiYTVjZWUxZWIwODkwNjYxYzczNDk0NWNhZjllMzVjM2QyMTk3MjY3YiJ9" + } + ] + }, + { + "id": "claim_435c623c867547de81ca068ccf0c8b0b", + "statement": "Dependency tracking inverse joins must match stored source entity values; earlier transforms changing join keys, add_namespaces rewriting, or dynamic $ids rewriting can interfere with that matching.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L13-L17", + "version": "repo-lines-v1:sha256:6419ac7275c07e7654cb59fe4c95097379760e036aaff57fd126603e42a284a7:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWI1MzgwYmYxN2MyZWFmOTQxNGFmY2VjMTVkYzEwYTYxNmUyYmIzMWE1YmQzNDIwZWUxNTliMzhmOThhYTdmMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDBmOGRhY2Y4ZWY3NzRmYjI5OGM3ZDQ0MTI4OTQyZWU5ZTZiOWM4MWFjMTU1ZGNmMmJmNDAxMDllMjU5YjM4NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWVlYzA0MGVlYTJmZjliMWM3YTA3MmRjN2ZiNmQwNjY3ZDE1ZTY5ZGU1Yjg5MmVhZmRhM2NmYTRkODQwMDYyNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_e33cef720eba40a1b8bc492d3c5627f1", + "statement": "lookup-entity requires its referenced dataset to be populated but does not support dependency tracking, so changes to the looked-up entity do not automatically cause reprocessing.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L185-L200", + "version": "repo-lines-v1:sha256:8f7cc9e0af2f11c5aeb2668ec730318f67e7fab567c02dac3200524a665ea7a3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI1Y2E1ZjVlYTNhYTFhMGE4MDViOGFiZTVjM2Y5YjExYjNkYmYwY2FhYTY0NDZkOTZlOTA2NWU0OWFiMzg1NjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_34b532a9c3334bf4a028c780ccb30e26", + "statement": "A unique trace name on the last HOP_SPEC enables per-hops maximum join-cardinality statistics in pump-completed and pump-failed execution records.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L70-L78", + "version": "repo-lines-v1:sha256:9405af1d05bbdadcdbd0f4e9f36164043a013c2e058e2bba5914ba9e5aaec35e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGEzZGIwODEzZDlkODZkZjRkYWUyY2EyNDI1N2MzM2ZmZmZkYjdjMTQwYmVhNTk5YWZhMjc3ZmRkNzk4OTgyMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDc5YTQzMGU1YWU0M2RjOWJmZjRjMWNhYWZjZjg1MTExNjVhMjA3MDYwMTExMzVhNjU0MDk2MGNjMjViZjllMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDJkOWY5MTExNTdiMWNkYWU0ZmZlZDllYTgxMmY0M2UxODU4ZjgyZWNjNGQxM2UwOWQ3ZWE0MWM1NThjMmY4ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDQ3ZmE2OGEyYTU2MGQ0MjViNGFkYjAyNDQ1MWY1YTk3ZWU4YTViOTVlNzMxMDg1NzhiZTFmYzU5YTA2YjI3ZiJ9" + } + ] + }, + { + "id": "claim_86095cd428224da9b4aafbe732f46c88", + "statement": "Dependency tracking defaults warn above 10000 in-memory entities or 33554432 bytes and fail above 50000 entities or 134217728 bytes; raising error limits can cause excessive memory use.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L362-L391", + "version": "repo-lines-v1:sha256:b2ad0a4b23df483bce630fbdf4ebdd0f70140b929700c3be24513dc46999e058:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNkYjRjODZkZDAwODY4M2U3YzgxZGMwMWMxYjAwYTBmNGE1NGRmNGU5ZmYyOTMxMDcxYmNiMzZhMjdkNTI2NDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU2MDIxOGM5MTVmZGRjYjRiNDRiY2QwOGQwZTJjMzdhYWQyNzE4NDdiYTVhNjEzY2I0MzVjZmJkMmRhZTYzN2MiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjllNTgyZTBhMTE0NjM3MTM2YzhiOWQ5ZTI5MjQwODM0YzI5NDI5NzEzNTEzNjJjZjYzNmM4NDYwMDBhZWJkYWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ0MDRmYTNiNzQzMzk3NTM1YWUwNjVhZjc3OGJmMzEzZjNhMDY5OTk2ZjIyZmVmNTJhOTYzZDQzYjQ0OWJhYzUifQ" + } + ] + }, + { + "id": "claim_d07fe92a7d8644f4bb4f192bdfdd85b0", + "statement": "dependency_tracking.enable_hops_thresholds defaults false and applies dependency warning/error limits to regular hops when true; enabling it is recommended in development.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L394-L400", + "version": "repo-lines-v1:sha256:29f3ffdb9fe11121e4d3c940fe66b321eb5c2d817f36e0150c32e82092ea1aaa:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGM1ZWM4MWNkM2U5NmZmNGQyMmE0MDY3OWVhMTliNDBjNjIyNzU0YzMyMmM5N2Y2NzE1ZDE2ZTFmZmVjNzhlNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTAzMzUxY2VjN2M4ZjYzM2E1N2IwNDZjZDA4MjUxM2YxYzBhZTU0OGQ0MDczYTM1NGU4ZTk4MjZiYmJiMGE2OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_69be4af0e5474d27bdd680c1063b39a4", + "statement": "Self-hops into a sink dataset cannot see unflushed batch entities; documented visibility requires batch_size=1 and dataset-sink set_initial_offset=onload to avoid waiting forever for the sink's initial population.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L110-L114", + "version": "repo-lines-v1:sha256:8d32ec827f5f7dee45c45cd4f3852bef552101f13596fa6b3bdb4442a3e629b5:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGJlNDE0NDRiZTBiNzM5ZDgxOGYyNWQ3Yzg3MGNjMWU3ZWE3MTU3N2RhOGViYTgzZTM0OGFhMmY1ZGFiODUyNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTU4ODgyZTcyMDE3ZTA1MzhjNmUyOThmNDhjNmU3MThkYjkyYmM4ZDBmNTVjNTMwZjFiNDRjNzNiODA5ODRkMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODNkNDc5MjQwYjBmOTc4MzQ1ODQ1OGY0NTJmZTU1ODYzNzVhY2FiOWM4MzE0ODZjOWY2NWU1YThkODJiODY2YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGM3OTJkNTdhZTJlZWNjZjFhN2ExN2ZkZWEwNDJhNzNhZjg0NjU1Zjg1ZmI0ZWRjZjU3MjEzOWYyYTg0YjJlZCJ9" + } + ] + }, + { + "id": "claim_eeb1c823d64e4ac891a5f2d08e8661be", + "statement": "Integrated Search indexes globals for free-text search and navigation, restricts results to readable data, and incurs a documented twofold global-pipe data-size requirement.", + "evidence": [ + { + "resource": "repo://hub/features/integrated-search.rst#L30-L32", + "version": "repo-lines-v1:sha256:4191bf3313681879059d256a6edfa87e788da7632516da779c1f61af1876a0d0:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjA2NGJmZWVmMWIyNjI0YzVhMTIzZmY1ZmE5ZTU0MjMwZjg5MDM1OTg2ZTE3NWZiNGUyZDkwNjA2ZmYxNDgxOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWE5NjUyZGM0MTY2YTNkZWViYmM1ODg0ODdmMTdkMDgxMDY0NGU5ZGVhYTEyNzRmYmYyYWEyNzQxZjE3ZDgwNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2M1ODMwMTg1YjJhZmI4OTc2ODlmMTkyYzRkZGE0OTBlNjAzYzMzODBmY2QzZjljYThmZTkwMGE2OTZlYWMyMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWU2OThiMmE0ZDIzYjA0M2VhYzY0NmFjMGNhN2JiYTcwYmE4Y2E4ZGJiNDliOWYxMjA5MjAzNjE4ZDYyMWE3MiJ9" + }, + { + "resource": "repo://hub/features/integrated-search.rst#L8-L10", + "version": "repo-lines-v1:sha256:dac1365716d763b8bb58cc66af5279c4d6946d62dc75dbffff2b3b16d03e9e99:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWQ3NDAwNTcxNDA5ODJhMTEzYTNkY2IxZTEzOTY4OTg1YTFjNTQwNGJlNmIzNTE4N2Q4MGUzYTExMGEzYTY3NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTBjMDE1ZWFjZmMwMjQ2NzlhOGY2MTBjNjdkM2ZmOTdhYTRjZjBiYTViY2VlZWZmZmI0MWQ1MzI2OGQwZGQ5NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzA5NmY1NjNmNjI0MTA2OTY1ZmI0ODAyZDVhZWIzMGM5MTE4MzI5MDQ4YzA4MTMxNDhiMjU1MDFjNWE4Yzg1OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTBhZmRhOTZkMmQwM2Q3ZDkwNzI0MGQyZDExMzYwYWUwYTliYzA5ZGM2ZGI5MmNkZTIxMjMxNjFmNjAyOTVlMyJ9" + } + ] + }, + { + "id": "claim_134de945b710457ca87bdc38bf986a44", + "statement": "Integrated Search defaults to OR and relevance ranking and supports explicit AND/OR/negation, phrase search, prefix search, phrase slop, fuzziness, and parenthesized precedence.", + "evidence": [ + { + "resource": "repo://hub/features/integrated-search.rst#L39-L48", + "version": "repo-lines-v1:sha256:30909f0821ccf034cd957a681bca8b88ac99a75aad4ca61229b4bbcdbdd3def6:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI0YTIzNmVmZDE5YmQyZjgwMTBlNTIzM2MyMDJmMDk0NzhhMzdjOWIzZGQ1ZTZkMTczYzdmYjg0MTZkMzRhYmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU0NGI1ZTk3Njk5MDkwNjQ2MjcwM2VjMjY1NmQ1ZmUzNWQwYjBiZmViZTdkMGI4ZWRkMGJlNTgwNjVkZTQyZDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVmZTI0MjMyODUzMWYyNmQyODdmN2Q1MjVhYWY0NzdhYzk5ZTU0Yzg3MmJiODBhMmNhNDYzZWJhMTkyYTk0MzEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_4c0f6814348d4a778b62c82b7efa55f5", + "statement": "Property lineage is a best-effort dependency graph for namespaced properties built from static pipe-configuration analysis and schema inference; it supports upstream/downstream navigation rather than proving a particular value's runtime provenance.", + "evidence": [ + { + "resource": "repo://hub/features/property-lineage.rst#L8-L17", + "version": "repo-lines-v1:sha256:8f55fdae5f99ea8156f66caa2d3ef0ece6b462403ffe59903aa4249d955c9931:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc2OGMzZGViNGFlNzJiZDcyZDhjNjZlNWIzNTc4MjNkMmNhYjJjZmZmYTIzZjVmNjk3ZjE4ZGU2ZDc3OTdmN2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlmYmVlYzViMTMyZTU1NDg4MzEzOGJlNjhlNzVlOTY2ZWI3YzAzNGU4ZTMyMjZjYmU3ZjU0ZGUyOWY0NzExNTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY5YmY5YTNkYTdjN2YzN2M2YmZhZTdlYTFkMDNiZDM4MmU1M2MzMjA2YzNjZTViZmYwNGFhMTAyNWZjMTQwOGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjcifQ" + } + ] + }, + { + "id": "claim_bf673affad2e48cfa1669e603f0255a1", + "statement": "Property lineage can be reached by Ctrl/Cmd+Click on namespaced properties in Integrated Search or pipe Input/Output entity views, or from property lists in Browse/Entity Types and a pipe's Inferred Schema tab.", + "evidence": [ + { + "resource": "repo://hub/features/property-lineage.rst#L43-L52", + "version": "repo-lines-v1:sha256:aa47551e6e177f57c4f3526d17e1a40bd9a5ee026654e9909eb1317c80eb9236:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5YzBiZDVmMjVjM2FjYzMxZmZhY2RiZWI3YzdkZTE1ZWJjZTc3YTRiMzE5MDA3Y2MyMzdiMzk1ODAxYzIyODMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYwYWRkYjdhYmU1NTFmYjFhYTIyOThjM2JiZDdjYWQ0NTkzZjNiMWI1ZjQxZDRiZDM3YzJmNmMzMWU0OWM5NzIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI0MTI5ZTJhZmY1NzIzY2U5MjE5ZmM2OTkzNmM5ODg5ZDFiM2RiOGMyZmY4NzVkMmEyMjhhZjExOWI1YjE5YmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJmMWM0NGI3MDU0NjNjYTFhY2I0NGE1YmRmOWQwZmY2NTNiNzE5NDRiY2I5M2Q4OTRmOWQ5OTM3NzZkODAxOTkifQ" + } + ] + }, + { + "id": "claim_e1ff104771cc48f6a2dc6b226c0eddce", + "statement": "The feature documentation describes property lineage as part of Integrated Search for clustered subscriptions and documents payment-method-owner activation, which should be treated as documented entitlement guidance rather than a guarantee that old portal menus remain unchanged.", + "evidence": [ + { + "resource": "repo://hub/features/integrated-search.rst#L12-L28", + "version": "repo-lines-v1:sha256:d8ea45f7a065e632551d4682c3c09941eb902aa8fea3d37cd4333d3c8de0d4e3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4MTQxOWU5ZGJhMmRiY2YxYmE2MDViZGU2NzY5YmFlMDg5ZWVmNzJiMzE0NmEwM2I1MWY4YmY5ZjU3MDBlMjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE3YjUzY2I4NDUzNjgyY2FiMmE3MGE4MzA3OWJlYjNhOGZiYjgzOGU5YmUyZTE1MWMyYWIwMDRiMTVkYjM0MzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNiMjQxOThhMzRmZDQyYzg4YmU2OWZiZTU3ZmRmYjk1OTI2NDIzZWVlM2ZiMjNhM2Q2MjlkMjA1YmI3ZmM3YzEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdkYTk4NTA3MjkxM2EyYzNkYWQzMDI4NjRjZTljZGQzNGFhYTExY2NmNzdiMDRlZTI3OTQzYjBiMjk1NmM0NmUifQ" + }, + { + "resource": "repo://hub/features/property-lineage.rst#L21-L40", + "version": "repo-lines-v1:sha256:306c336650243ac8a770ef07a77a4546d1e16e8a967c7820e37500faaa1b0cda:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgwZDk3MjIxNDJhMTA3MjVmMmMwYzI5M2YwNTVhOTNiOTNhODVkZDRlZGY5OTgwYmFkZmNlNjQyNzk0MGYzZGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE3YjUzY2I4NDUzNjgyY2FiMmE3MGE4MzA3OWJlYjNhOGZiYjgzOGU5YmUyZTE1MWMyYWIwMDRiMTVkYjM0MzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRjNmVhYmZjMDM3NWExOTY1MTFlZWZlMjBmODIwNjM3ODgwYzAwODM4YTAzZTEzMzFlNzNhNjI0ZDEyZWQxZjIifQ" + } + ] + }, + { + "id": "claim_6250f6f768ed4624be2bac808bd7f7db", + "statement": "Merge-source sameness is transitive, null or empty-list equality results do not cause merges, obsolete merged IDs can be emitted as deletes with $replaced=true, and deleted source entities are emitted standalone with _deleted=true.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L6-L29", + "version": "repo-lines-v1:sha256:de419f63e1eee80215c590da82175e709b7563bc6f2cf7c4aea2b45e6b88a4c6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI0ZjJiZTk3YzQ0YzQzZmI4NjBmMDE4ZDZlOWVkMTdiMjMxZmNiYzg2NmY1NTJmNTVmNzA5ZTg3NjY3NzkyODciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAzYTk0OWI3Yjk1NzJjYzU1YmM4MjkyODJiNmJlM2FiOTA1MTM3NjIwNjQ5ZDM5NjlkNGY5MGE0NDU5NWY4ODAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFlNjQzYjM1ZDhkMDk5YzA3MjVjOGI4MzlkYjY4OWRkNTdlZWJkOGEwZWVlMDg1NjIzZDEyNDkxN2E5ZDU2Y2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFkZDEzY2JlZjYzOTVmZjc2MWYxOTM0ZjA3NTc3ZjZmNmIxYjE0OTY3N2I1ZGI3ZGJiOWZlMWIyMDk2OGYyN2EifQ" + } + ] + }, + { + "id": "claim_aaada6c635d04ae89e313d72d81fc067", + "statement": "Added merge equality rules do not retroactively affect already-processed entities without reset/rescan, and removing input datasets requires a full run to clear their merge-source state.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L42-L59", + "version": "repo-lines-v1:sha256:5273121b0262e86fc98895397718019d6c531f11cca8e2248654ff0a6d37fd49:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQzOGEyYTk2N2RiNTAyNmNlYjZmMjgyZjAwMWZkZTIzZDhmMGVlZDU1ZmM3ZGEyOGMwZTMwYTUzY2NjMzgwOTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEyNjVjYTBmOWU0MmQ0ZTNlZjJkNGY0MjFiY2VhMGY1ZDIxZDIxYWRhZDA0ODJhOGYxNTU4YWM1OWM0YmQ4NTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNkNjEyNzE0ODk5YTc1NmM1MTMyYTZkNWY2OWJhMGI1OGZkNGQxY2Y5MWVlODg1Y2E3Zjc2M2NiZjJmMzNmMTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ5YjI5M2ZkMjc2OTg5ZTE1YzMwMGM5ZTdlOGYzMzhkZDI5MGI2YWFmYTNjNjk1ZjUzMmZjZmQ1MGYyODY3YTYifQ" + } + ] + }, + { + "id": "claim_1490003fa9fe401e8fc277961717d374", + "statement": "During background rescans after merge configuration changes, incremental runs can use old merge state and emit erroneous entities; the rescan's completion processing and deletion tracking remove erroneous incremental output.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L453-L468", + "version": "repo-lines-v1:sha256:a37349c49ce9c31b8957c50c095bc9369ad04888fecf4fa26c01125c16b17f8c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwY2Y0NWZjNjUxMDQ2Njc1MWU0YjNjZGQ4OWFlZGZkMmE2M2IwMDBiYjM2ZjRiOWQ2MGNkOWUxMTJlOGVmZWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkMDBlMDEyYjdkY2Q0ZDJmZDJkYzlkZWNmZmU1NTM1MDNkZDNjNzI0M2ZmY2JiZGVlNTg2YTA4MGM3NWFlM2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRhM2U5YzhhZGI3MzQ2YTU0MTZkYWY1Yzc0M2NiZDNjMDdiNDkzM2Q3Y2Q5YjQ3ZjQ3MzIzMGJkNGU3NDJmY2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUyYjZjYjk5ZjkwYjViYTNjNWNmOTZhYjljOTBhNWRhNzVkNWY3ZjA4OWRkY2IwZDcxY2ZlY2JiNjBjMDE4NWYifQ" + } + ] + }, + { + "id": "claim_6871801d427547c3aaf6fd0621d19936", + "statement": "Hops result ordering is deterministic for identical entities based on _id, but not automatically ordered by a business property, so an explicit sorted function is needed when such order matters rather than relying on first to express uniqueness.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/troubleshooting.rst#L76-L76", + "version": "repo-lines-v1:sha256:2ad6d5817e54ca70724e22f7c43378b6a5bcc64106b2942dd3a7fe12ca3be0c4:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmFkNmQ1ODE3ZTU0Y2E3MDcyNGUyMmY3YzQzMzc4YjZhNWJjYzY0MTA2YjI5NDJkZDNhN2ZlMTJjYTNiZTBjNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmFkNmQ1ODE3ZTU0Y2E3MDcyNGUyMmY3YzQzMzc4YjZhNWJjYzY0MTA2YjI5NDJkZDNhN2ZlMTJjYTNiZTBjNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTg4MjUxODg2NmQxM2I2YWE0OTY0ZGQ0ODVkNTQ0YjU0NDEzODlmOWVjZjQ1MDM2ZjQwZWNmZDMxN2EwMGRjZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTBmOTI2NmEzYmZiOTI1OTY5YzlmZGM4MWE4NDlhMGYwZDVmNzBlOWI1YmNiM2UzMDMxNTJkNWUyMmI4MDU3YyJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L104-L108", + "version": "repo-lines-v1:sha256:d0e6d02c03dd48cf6313627a2d23575ac90829cf384a6727b40368b22a7b3ee7:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGJlM2Y0YjNmMDRiMWVkNTdlOTJhNTIxZGQ4ZDkyOWVlNDAzZDNkODExN2I1OTc3OTUyOTg4ZWY1ZTIwN2Q0ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjgyYjFhNTY2YTM4ZWU5OTA0ZGVmNGFjZGRiNDdiNThkNWFmOTg0YWE3YzM2ZDg4ZTE3Y2YxYTBhYzEzY2Y1YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTAzMWI2MDdmOTg3YjhmMzBkZDNlNmJkYzJkMDQwYTU5NzRlYmFhNzE3MDljMGI2ZWFmZDc1NWU1ZTRlNDEwMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGEyODQ0ODcyOGQxZDkyZGJmMzViMDg2NDAyYWI5YTVhYWIxMzI2ZDQ2ZDMxNmI2MWU5MDA1NjUwYjQ4YjdmMiJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L151-L154", + "version": "repo-lines-v1:sha256:eee2c5b87339fccfb6d63ced0331960f0f2ab8e85b7078774f42248045021f65:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTBkNzg2YjZhYWE5OGZhYjdmYjZiOTVjMmM4ZDRjMDdmMDEzYTY1MjJiNDBiZWQ5MGUzMDk0ODVmZDllNDQyNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYmY0ZTI5MWVjOTVhZmE4MDI4NTIwOTJhYjhhNmFjMmMyMWM4NDgzZmZmMjAzMjEzMTFmOTEyMjkxMjZiNGZhOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2E2MjBiNTc5Y2FmNjhhZmQxMjFlNTE4OTRmZDZhM2JjNTczNGU4YWRjMTNmOTIzZDI2MmVmZGE4OWZhYTc3MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGJhOTE0ODQ5ZjRlMTk2M2VhMGRjY2Y1ZTBkYTgxNGI3NDI4ODI0NmI2MmQ4ZmM4NDdjYTc0ZGMwNzQ3N2JhZiJ9" + } + ] + }, + { + "id": "claim_774fd2327bbf441c842558b100ae292e", + "statement": "create emits standalone entities with string IDs and can leave orphaned children without rescans; create-child stores children in the parent's $children, and a dataset sink compares previous children to add deletion information for removed children.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/troubleshooting.rst#L82-L84", + "version": "repo-lines-v1:sha256:85df337894285ae4b2c519827107e67f535991648bee09e1a57bf193aee6f75b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDAyYzEwOGUwNGI5MzY4NGU2MWQ2ZjNkNzU0MzkyMDA1ZjU3MGY0MGFiMzNjZTRkNWIxM2FkNmY3ZmZmOWQ0YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTViYTA1ZWE4MDA2ZmNhZGZlZjExYjUyOTJjN2IxYzgyOWU2ZjVmY2VmMmFkNDUxYzY2MmFhZDY0YTU3YjljNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2E1MTNhYzMwZmY4NGNiNGY4ZTUyNTU5M2Y5NTA2MjY0YjNkNWQxN2RhZjIwYTkwZDRkMTVkZTI2ODdmOThiOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjkwZjljOGUxZTFkNTc0Yjg5YTYwZjE3YzUxZDI1ZWY0ZWZlMTk0N2NhMTFiNTllYjFjOTQwYjNiODRhNzUzYiJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L355-L417", + "version": "repo-lines-v1:sha256:d0e34332d6b80f91abf41c8f8675d68d58602a6e0eeb41f314335ef8edeebf46:eyJzZWxlY3RlZExpbmVDb3VudCI6NjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhM2YwODkwNGM0ZTM5MmI0NzAyMTBkZTMyOWNjYTMzZTI0NjUzNDBkZTI3Y2M1OTMwM2I3MWRlZTM2MGEzMDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZhMGI0MWI0ZmMwYmYzZTg2NzQ2NjllOGI4NTE4OTliMTMzOWRiNDFhOTRhZjc2YTVlZGE0ZjMyYjU4NGI5YjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI5YzgwN2MxYzdhMzkxMzVmOTI2N2Q5YmJjM2U4YmFlMjlhMjYxODQwNDZiYmE3MzQyNWYxMjRjNjlhMGNjOGYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImIwOWE3MGIxMDQwZWZjODU4NDIzNTVjOTVlMTU0N2JjOTc4YzlhMDliMjUwNGFjZmZkY2MxZWEyMTEyMGE1YTIifQ" + } + ] + }, + { + "id": "claim_583d9e70469e4b0cbfec41ce9d2bea05", + "statement": "emit_children emits children with IDs but not their parent and should be used in a separate pipe because chaining it removes the retained parent needed for emitted-child deletion tracking.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-emit-children.rst#L7-L12", + "version": "repo-lines-v1:sha256:c952703c2c85c20b6ae1afde2ceb3b3efd5f1da958817c7e2ad153b65c164749:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjZmNThhNzMzMzExYzI1NjhjOGY2YjU3NWRhMWU1ZGEwZWY1NTY5YzFmOTBlNDNkNWRjNzRjZWE3NjA5ZDBiZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2IxYWYyOTM3OGZkMjRiYTYyODYwOTM1ZWQyMDNlYjkyMTA3ZGE4YzdkNzk1ZWIxZjRjMmU1ZTM4NzEzMzA1ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGEwMjFkNDFmNGM2OWRjZjcxMzdiMjE0MmJmZTdkZDdhNjFkOTAzODQ4NGY4YzZjZmU2MDEzYjRkMGI4MTA4YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + } + ] + }, + { + "id": "claim_a198225a1fc94b0286048e754f8990bc", + "statement": "Datasets are append-only logs that suppress unchanged content; default compaction retains two versions, and keeping fewer than two makes dependency tracking best-effort and may miss reprocessable entities.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L44-L55", + "version": "repo-lines-v1:sha256:15796258efe5927782434c201883c1a3841b374c6862a7b3b1d6e68c7f7aa8dd:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjZDIyZDViN2RhYzY1N2QwODZhYTNjMjUwNWU2NDcwYTg5ZTJmYzMzY2EwNzUwZTI4Y2Q2NTdlNGVjNjE2ZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYyMmYzYjhlODgwMmQzNGUwMTRlZDk2Y2E0NjQzODk3MzRiOGQyMWM4YTI3N2FhNWE2ODBmMGY0ZTUwMDE1MWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjljNjczNzI1MTQ0YzA1NjM0NzA1YTRhMWE1ZTU5ODUwZjQzYmE1NDU1OWNmZmU2ZTFhZGNiMDAzZWMyMTNmOWEifQ" + }, + { + "resource": "repo://hub/features/compaction-feature.rst#L8-L10", + "version": "repo-lines-v1:sha256:613edaa2efc6ccfeb889f952823222a47139afd422c3eee2cacb64040e967a9b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTJiZjkyNTRmYmEyNmFmYmY3ZjljMGQwYzFkNjlmYzAzMjI4MzM2OWY1ZmIyNjdmNjhjYWYzNzhmY2M1ODBkYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTY3ZTU1N2U5ODEyNWUzMzRkY2I3MmM3Y2YyNDYwZjNjYjViNTcyNDFhYmY2OGM3MjE5MDI4YTlmMDUxYjY2MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWY3OTMzZjNiODdjYzlhYWZkOWEyMmQ0M2MzYzM3OThmMDEwNjA4OTk4NDYyODFmZmU4ZDYxMWZhY2UwY2U5NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzQwYzBiMjViMDFiMTc3M2VkMTg1NWEyZGFiMzRiNDcyNDcwZmNiNjYzODc3NzdkMGU0OTQ1OTc1YzJkOGE0MSJ9" + } + ] + }, + { + "id": "claim_28563c56ad2142ec8e0d820d19735333", + "statement": "Compaction cannot advance beyond the lowest dependency-tracking offset, and disabled dependent pipes also hold back compaction to preserve synchronization correctness.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L13-L17", + "version": "repo-lines-v1:sha256:161f3d3bb8ab13b7fe0769349e9d01cb9cae336a74eabcd637cb809d0c566485:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjFlYWFjMDdlMDA2Yjc1NjIzNmJmMzllZDhmOWM2MWUxOTk5NjU1ZTAyNTM3ZjRjODQxNTUwMGE3OTY5ODA1YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjYxMjZiMDczNDU5ZjQxYWJhMTBhMGI2M2ZiNWNiYTY5OTAwZjQ5OWU3NWI0MmIzODcxZDdkYTc3Y2ZhNmYzNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + } + ] + }, + { + "id": "claim_a3f051f97ea5413999b26c6909af2922", + "statement": "Pump execution datasets are trimmed by time with compaction.time_threshold_hours_pump defaulting to 720 hours or 30 days, the documented minimum allowed retention.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L65-L71", + "version": "repo-lines-v1:sha256:9675f7ee8538f9c183039e3153f368552dbe22632b2faa909144082e8b896900:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzQ3ZjkwMmFhZmRjZjdhNmNhOTMzZTczMGU5ZjVhNmJmNTJiOWVlODllNzQ1YjAyMmVmYTI1ODg3ZWExNTAxZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDhkM2I4ZGE2YzE1ZTdjZDA1YTJiNmEyYTcyY2YzZWVkYjExNDFlNzhmNWE1YmRmODhkMjI0NGI3MDY0NGRlMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjdjZGRhN2ZjZWIyNDQ0ODBmYTQ2MDZiYTg1ZDZhMzhiYWRmNTZlOTZmMDE0NWY5N2U4MjE1MjIxN2IzODhjZiJ9" + } + ] + }, + { + "id": "claim_091062274557465fa4e50e1f5e5371f2", + "statement": "The reverse proxy terminates inbound Sesam TLS and routes traffic on port 443; the documented self-hosted Traefik/Let's Encrypt renewal setup requires inbound public HTTP port 80 and outbound HTTPS to *.letsencrypt.org, with the inbound opening unnecessary for self-provided certificates.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L31-L35", + "version": "repo-lines-v1:sha256:cbffbef9c774a450fb12f31080200b25e47c3d1eba670765623d0c84477d4cda:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmVjYzMyYzU5ZWUwM2E4YzM3YzZjMDc3NGFlZGRkNmI1NzczNDU0N2QyZTVhOTU2YzcxNWI3ZGE1ZDY4NDc4YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTczMzNkNWE3NTliMjE2NzZiZWMwZDIzYjdmODI0MWY0NzA5YTFlMjA5NmY5ZjQ5NmNkZmUxZWU5MjdhMjUyNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODg1YTI3YTc4YTE2YWZmNzBhYzIzOTI2NGM0YzlkN2EzYmFmYmY5ZDMyMzk2MTY3ZTc4ODEwYzY2MDg5OTkxNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTliYTQ4YzIzMzIwNmFhY2UwMTQ3NjIwMjYyYmVhMjZiYTFkMTUzODFjNDQ0YjlmNTUxYTZlZmNhNThkYWQ2NCJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L62-L64", + "version": "repo-lines-v1:sha256:e02b24ab984de0f97b7060f47fbec64cb1567dfa57204271474684f64ed349ca:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTUwZjY4Y2I1NzNkNGRiYjUzNzI3MzUwZjc0NWNlZGRlNzk0YzE3MWM4Yjc4ZTliMDdhYTI2ZTJhNjVlMDg3OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWQxMjk5YTZiM2FmOTU4MDQyZGMyOGMyM2Q1NTViMWEzMTZhZjdjM2IzZDMzNDczN2Q1Yjc4YTE3NzFiNTVlZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTc1N2QxM2ZjMDhjYzkzOGM0YjhhNjJhZmU4NjliMzY1ZTg5YTQ5YjMwYzMxNDU4NGQ5Nzc5ZjVjMmUyYmFhNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzhmNmM4NWQ3MTE3MGIyZDM0NGM2MGQwYjc4MzY0YmVlYjViMGFhMDk5NzQ4NmI1ODJmMTE3YjRlZmU3MjFiYyJ9" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L49-L57", + "version": "repo-lines-v1:sha256:ec9e1b676b1cf4532a2f82e65e12ee05d8c69491c33269dd6789f28798ee3378:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU3YTllYmI4ODA4ZDE1MTVkN2JlMDNkZTYwMTE0MzJlODZlZmY3ZTg3YThlYjZjMTAzMWY2MzA3MjRhMTZjMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzEyYTlhNjRiYzI5MDRkOTdhMTdjYWU5ODRmOTdiM2NhYjQ0ZDRkYjMyMDFlM2IwNDI0MzEwMWYxMzY4YmIxZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzhhNDczYzUyMTRlNTVmY2I1MTA2ZWQ1YmQ0NmQ4NjVkODNlMjg4N2Y2ZDJkOGQzZmQwZmNjMDU5YTExZWFiYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGQ4MmU4ZGQ0NDBjMWQ0YmY1NGI5YmMxZjA4MGYwZTJiMDQ3Njk4YWQzNzNhYTMyNGRkN2Q2Njg1MDUzNTc5MSJ9" + }, + { + "resource": "repo://hub/documentation/operations/self-hosted.rst#L86-L93", + "version": "repo-lines-v1:sha256:12c760ae58255d4c5bb1e002b9f8ecf7021b8d3d7e04e166f2f8adfabbca2f9b:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2UwY2I4MWE1OGYwODM0MWFmMDFhMGE0ZWE4MmM3ZjQ5NTkwZTBmNWFmNjBhNjJmOWJmZmE1N2FlMjQ5Yjk2YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOThmMmJlZWI1ZmRmZGRhYzk0Y2U1NzlhYmU3MDI1NTM4Yzg4NTgxNDliNTY0NDA1YTFjZGNkYTk2N2YwZTQ4ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGY1NzFmMWE2ZTU1NmJlMzNjMTk5NjA0MmVjMGVlZDQ0NjNlZDcxMGI5ZGFjMjdiYTU1OTE4NGY2ZTMwNGI3YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjNhMTQ4MjQ2ZGY1ZDU5ZTQ4ZjE1Y2U1ZDI1OTdiYjU3NzQ2YTdmZjBkM2YxZWNjMzY0OTI2M2IwMjViZTRiMiJ9" + } + ] + }, + { + "id": "claim_bf5770af353749898e8f290c579410aa", + "statement": "Outbound URL-system TLS verification is controlled by verify_ssl and its service-metadata default, with custom_ca_pem_chain used when verification is enabled; the configuration reference documents false defaults rather than mandating a secure setting.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L354-L360", + "version": "repo-lines-v1:sha256:6065d87932888330946995c6dd4ade51d8d6191759478d8157ffd800d981d8c6:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDk5MGJkZmM2MjhlMDNlNjJmYjMzOGI2MWExYThiODU1NjcyNmMxMjgxODRmNzIzMTNlOWI1OWM1YjMwYzRkZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzc2YzhmMzM1MjgyYWI0MDdmZWNkZjM1NjUwYzk4MzUzZWY4M2Y5M2I2YjQ1MTQ3MWE0OTczNmRlNTUzMjRiZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTQ3MjllMzFjMzE5NDJjY2VlYmYxZTA1MjI1M2NlN2I2YjAxMzdlZWIyZmQwNmMxMjA3NDYwNjk4MGEyZGU2ZiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L86-L97", + "version": "repo-lines-v1:sha256:261a57a04c1daf72643c05df723a612f3338d12c0aa633951b81b59091ff98e4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg1YzFjODk0MDBkYzVjYjE5NzM5NjM2ZWMzM2YzN2Y1ZDBhMTY1MTY5YzAxODE3ZjdjYmQxNTBiMDA4NmJhODEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJiNGIyODEyMDY2YmMwOTAwOTNjNDU3MmE4ZDRkYTMwNDM4NGRkMWYyY2QzYWM1MmM1ZjBjMTY1ODgxZDQxODkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_7d01e7ad70d44958b792e19995f11549", + "statement": "Low-level debugging is primarily for self-hosting administrators with filesystem access; /api/status/stacktrace is an unofficial HTML endpoint requiring group:Admin on authenticated nodes, while authorized host SIGUSR1 creates and rotates stacktrace files even if the API is broken.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/low-level-debugging.rst#L5-L7", + "version": "repo-lines-v1:sha256:6db94bb72b1b0b29941980d6323f2dbe61dc958444a4d0858ec188eca877b628:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWQ3NTJjYzYyZDliNTVkYjExYmIyMzNkZWQ5NzliMDE5NDZlODQyMGE1YjY3YzVjM2UwZmI0NzM0Mjc5NGJiMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmVhMGRkMGI1MDMwMjZlZTMzNGI5YmI4N2IwMmEzNmQ3NTkxNTNhYjZjMzg1ZmVmNWIyZTRlOWZmMDBiYjNmYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTllZjZjMzI4Nzc4ZmRhZGNiOGI1MDkxYjY4NmVkMjBjMDlkMGYzMjQ3MjJmMjUxYzBmNjIwNTk5ZDg1MjFmZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODIwZmQ5Njg3NGI5YWUxMzA0ODIxNzQxOGY5YjUzY2ZkM2QzNjA3MjIwZDhmMzM2NWFkMjM1ZTM0MDFjZDliNyJ9" + }, + { + "resource": "repo://hub/documentation/operations/low-level-debugging.rst#L84-L111", + "version": "repo-lines-v1:sha256:03d761ceffb9d9562f34194417f4bd02facda4eec1028119425898521b7db95d:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlkOGU2ZWY5ZTgwZDAyYjhiNWZhMjFhZjkwN2M2ZDdjZGFiY2RjN2ViYWI2ZGUxODlmOWQyNDM2YzRlOGY2MDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJlZWRlOTFjMjQ0NzQyOGQ2ZTFhZTAwYTMyYzJhZjI5Zjg1OWRmZDE4ZWM0M2UzYTcwOTAxZGNlNGU4YTBlZDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjlkYjkwOGI5NDVjYjdmNzgwNjgyZGExN2FmZDFkMjkwMjNhZjgwZmI4NTM2ZmNhZThiY2YzNmMxZmEwN2U2NzEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlkMzAyOWI5NWJmMjBiMTM4OGIxYjFmZjU5YWJmNDY5YWFhYzk5MTY5M2FmODEwYjNmOTgxZTFlYjVlOWI5M2MifQ" + } + ] + }, + { + "id": "claim_7cdb7f91433648bf839d47aee3d7377e", + "statement": "The node periodically calls its own /api/health, logs results in node_health.log, and creates a stacktrace on health-check failure; /api/status includes psutil memory data and /api/status/heap provides a high-level memory-use breakdown.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/low-level-debugging.rst#L160-L165", + "version": "repo-lines-v1:sha256:0300fe7eb15a543cdcecc3700ec6704b7cb768c5279b03a8882228bb7bc984c8:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDkyYThkNTZmMzk2YTZkZWE5MzVmZWEzMGVkMzgxZmU0YmRhOTJlOGY1OGUxZGJlOTk4MTZhYWU0NTNmMDk4MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjIxOGQ0MzVjZjIyY2I4YTkwNTQ1MzQ1ODU4YjZjMzg5ZmI5NmQyOTgxYjU4NzJkYjYwYTdhYzUxMGZjZDQ0YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGE0MjM2NGMyMWM3MzMyOWUxMzdiNDNiYWI5MTcxZjFhODU2ZTBkZDIxOTk2MDgyNTg3Y2UxMDhhNTE0YTdhYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWQ3NDYyNDk3NDhkYjBiZTA0YzEzOWJhNWU2NjUyNDM4MWYxOTVlYThlYTUxNGI2OWM3NmUxNDhiNjQ3MTMxMiJ9" + }, + { + "resource": "repo://hub/documentation/operations/low-level-debugging.rst#L233-L244", + "version": "repo-lines-v1:sha256:05a05092e91b181bf6a3b1a67d3bac37171ecbb9d5556acac48ffa836f79b501:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEyODQ4YTNiZjI2ZDNjMDkxZmJiNjk3YjVjMjRmMTU0MmQwYmYyZDExNzNmMmJmMTI0ZmFlN2IxZjBhZTIyNjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkyMGY2MzJjNGI5NTliZDdhN2MxMGE2ZTc0OWI4YTk4YzQ0NmU0Y2Q4ZDEzMDFkZjE5NGI5MjUzYTZkOTAzZTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQyZjlkMjFhOWFmNTg3ODZjNzRkZDQyMzVhZmVjZWRmYjE4NjUwZDkyYWQ4Y2Y2ODZkYzNlZmE4NTA3Njk1Y2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUwMTkyYzc2MmY2YTBiOWYxYjIzOGI0YjE4YzU1YzA5MDNlZGEzZWJkNjViYzQ2OTExMGYxMDc0NzczOWQyZTgifQ" + }, + { + "resource": "repo://hub/documentation/operations/low-level-debugging.rst#L358-L361", + "version": "repo-lines-v1:sha256:2b09ede9b0aa07c0e93e322d050b73ef723093f3e954af8d229e0abae8e6cbd8:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzBkNWYxZWVhNzFkYTQ0Yzg4YjUyOTRkMDhmMjEwZWYzMDE4N2UzNDIyMjM4NzNjNDgyZmJjMTIxNDc5NGVjZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjg3ZmQ5OTM5OWE3NmU1YzdmMzE3MWRkMDRjNDg5YmQ3MDI3NGIxNWIxZjhhMGYyNDIyZWFlMmIyMGMyYmE5ZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmEzY2Y1MTkyMzU0ZjcxNjE1YWM1MTAzNGIzZTk3YzIwZWRhOTk2NDNmY2FmNWJiZTZkNDFhZDU5YmQxMjE2NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDViMjdlMjQwMzkwYTM0YjNkYWM0MWY0OTZkOWRkYjQzMjM4MTNmNWQ2OWYwOGVjZWFhNmY0OTc0OTJmNDYzYyJ9" + } + ] + }, + { + "id": "claim_a83d663931874ffcb79a3ed7546acbee", + "statement": "Changing log levels through /api/logs changes worker node.log logging and must target the worker directly rather than the subscription service API.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/low-level-debugging.rst#L10-L27", + "version": "repo-lines-v1:sha256:af45639f7c28acb655b5b390cb13238f18d53969217f6570eda67356738672c1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxMjczYWI0MzdiZGU4NmIyYjUwMWJkNWI4ZmJjYjA4M2U0MDYzMzkzMGIyMmMzYmQ3OTM2ZDBjMmQ3YWU1OGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhmODQ2NTA5ZTQwNThiZWM4OGIzYTJiZDhjOWMwOGJlMWU0MzQ5MzZjNjQ4M2RkZDI3ZmYzMDJlZmNjZDk4ZDEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ3YTE2OGRlOWE3NGZmZTkwMmE0Y2RiNzc5MDJhZGFkYzdkYjdiNjIwOWJlNDlmNzFjZjE0Zjc2MDY4YTE4Y2MiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEwNTkwMDgxZjM3NzM3NDk3YWZjZGMzZTZhNDc2NDFjODc4Mjg5Mzk5YTA5NGY5ODg5Y2QyNjlmZjJiNzYzYWIifQ" + } + ] + }, + { + "id": "claim_a3b26c069b4f4ca9828d5aee109525c6", + "statement": "global_defaults.trace records REST and HTTP-endpoint request/response information in completion/failure logs, including headers and partial bodies by default; secret redaction is best-effort and log_secret_redacted_bytes=-1 requests full secret redaction.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L299-L351", + "version": "repo-lines-v1:sha256:c9a576de4117ec8f7fbe9fb061c91647523d07de52bf4b1b997db16889988763:eyJzZWxlY3RlZExpbmVDb3VudCI6NTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkOWUwNWRlMWY0NjBmNWZjZGJiYWFlZjQyNzgyZTU2MWQ2YzUyOTgxZjM0NjQwODkwMTE3Y2YyNTA0YTE3NmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFmY2MwYjZiYjYxNTczYjRmMjI4OGRhZTA3ZGQwZDNjMDY0YjdkOTIzNjQxZjJmMjVmZjE2MGVhYmNiODI0YmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZlMDNjYjJlOTM5OTIxYjdiZWNkMDkyMjlkYmNhMWNkNmYwYzViYmZlODI5MzA0Zjc3Y2FjMWFiYzNlMmY4N2QifQ" + } + ] + }, + { + "id": "claim_139aca606bbe4a4abe6d7662d88ab5d0", + "statement": "HTTP and REST transforms default side_effects=true to protect against inadvertent external changes during previews; setting false is appropriate only when the transform is safe or those changes are intentionally acceptable.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-http.rst#L63-L66", + "version": "repo-lines-v1:sha256:7c046aeebe103c5e9076ec79ca4c8b53ef0260555b125d80a9594c39a9b6b65a:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDhlMjI5M2E5NDI0Mzc5YTdlZmU0NzJlZTMzYmY4NmI5ZDQ1M2ZlNTg1MmRlMjc1ZjhmNWQ2ZGQyMWQyY2UxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQwYjM2MmQ4MWNkMDhjMTYzZjM1Mzc0NTQ4NjI3Y2FjNGVmYWRkODA3M2QyZDA4YTc3ZGRhNjc3OTNiNWFhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTJjNzkxNTk1MGMwZDQwMzhiOTM1ZmNlZTIyNzc2ZGZhMjNlNjVjNzMyOWVhZjE4Mjk2MTFkNDMxYTQzMDU2ZCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst#L73-L76", + "version": "repo-lines-v1:sha256:7c046aeebe103c5e9076ec79ca4c8b53ef0260555b125d80a9594c39a9b6b65a:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDhlMjI5M2E5NDI0Mzc5YTdlZmU0NzJlZTMzYmY4NmI5ZDQ1M2ZlNTg1MmRlMjc1ZjhmNWQ2ZGQyMWQyY2UxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQwYjM2MmQ4MWNkMDhjMTYzZjM1Mzc0NTQ4NjI3Y2FjNGVmYWRkODA3M2QyZDA4YTc3ZGRhNjc3OTNiNWFhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjEzMGUyNzg5YzAzZWY0MmY1MzUwNDcxYjg1OWIzNGJjYjkwMGMxYzc4ZjMzNWZhMGQwOTZjNzk1NzhmOTk4OCJ9" + } + ] + }, + { + "id": "claim_9d9f8150cf1c4a70aded60e0614f3930", + "statement": "SESAM-API-PROFILER on one API call returns pstats or calltree profile information instead of the normal response; global --enable-api-profiler requires restart/filesystem access, is documented as unavailable for cloud operation, and generates files without automatic cleanup that can fill disk.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/low-level-debugging.rst#L39-L68", + "version": "repo-lines-v1:sha256:8fd9ed4d50d5005ec1a58330de6fdb662ab74b876a8293b0f516154842d2d097:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4NmJiN2U2MTJmYmUwNjJjYTY5YjYyZDdlNmZmZDIwNDJjYTNiMWY5MDY1M2M0MDQyNDRiYzI3NWJhNTkxMjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNiN2U2ZDU1MzBiMDNmNGNiMjIxM2MxZjdkNTllZjJmODc2NzMxODlmYzNjM2RlYjFmZjY0OWEyYjNjMjIxNjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYzNDY3MmQ5NGM3M2EzODJhZDE4MmY0YThmZTZiZDg5MTBkMThlMmNhMTk3N2Y2YjMwZmM5ZDFmYzliMzhlMjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhmY2FhMmVkMWY0YzkwNDc4ZmJjODlhYmU2M2NmZmExNTg0MmFkOTg3OTA0ZmRhZmMwMDQ5MWUxNDhmMGUxZTUifQ" + } + ] + }, + { + "id": "claim_7e05aa36afab46818aceb456c5866242", + "statement": "Starting a pump with profiler=true performs a real pump run and writes pipe-ID/timestamp-named .pstat and .calltree profile files in the instance logs folder.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/low-level-debugging.rst#L71-L81", + "version": "repo-lines-v1:sha256:dbbc71ad3e27cb617fae99f1728772ba0af0aa89b17de1b02350ff91da5f3537:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdlN2E2ODNkMTA1MmNlOGI5ZjMxNmM0MmVhMGJiMjYwZmQ1MWMxOWFlZDIzYTM0ODE1MmJkNzA5MWNkYThkMjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEwM2RkOThhZWU1NjRmYjc1Njk2MjA5NzY4MDg2MGE5MjlmYWRlMDRiYzUwNzNiYWFmNTM1ZGFlMjMyZDcwZDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBiMGJjZTZjNzkxZDNlN2EyNmU1OThkY2FkMDc1OWNjYTkyMjIxYzA1MDM1ODE1YzI3OGJhZmE4Mjc1ZjE5MzEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFjOWUyZmEwYjk3M2QwN2VmMWI3MGIyMzJhZWE5N2I5ZjMzYjM2ODQ3NTVlOWY1ZmMwMGZjMTI4YmIzZDNiNGQifQ" + } + ] + }, + { + "id": "claim_4ab867247828485e87905909d9e61a52", + "statement": "max_seconds_per_entity is a debugging option that fails a run when a batch's average transform time exceeds the limit, embeds the first batch entity in pump-failed, and can isolate the exact offender with pipe batch_size=1.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L216-L221", + "version": "repo-lines-v1:sha256:ea884746a2ba6e1578111ee9ce7acf3f8b3ec11c51b22910806f1ce90ddc86c0:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2QxMmQ2OGI4YzlhOTM0NjM5ZGYyMTZmOTQyNGUyZDViZWM4YzNjOGZmODliYThlZGFjNDRkNDJmN2IwOGUxNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzkxZjFjNjExNjU1MGY0YTlmODAyMDk5YmQxOGRkZDNjZjlhMzg1NjlmOTNhYzQ5OGY5NGNiZGQzYjdiNzcwNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2EwNTdjNzViZmI5ZWUxY2M0N2VmNmEwNDNmOGY0ZDlhZGEwYTNjNzU0ODMyYjE4M2MxMzUxNjU5NmUyM2FkNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + } + ] + }, + { + "id": "claim_8be81ca8501d415cb92382d5269acb40", + "statement": "task_manager.disable_pump_scheduler=true prevents automatic pipe starts; the fallback startup_options.json file in /sesam/node/data requires a node restart to take effect.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/low-level-debugging.rst#L168-L230", + "version": "repo-lines-v1:sha256:057753fa21ff1a86d526655db32c88a24947cb2d1824a207513753b45951e0b4:eyJzZWxlY3RlZExpbmVDb3VudCI6NjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIzMzJmOTcyZDJkMzc1ZTZkNTJlMGM0NGQ2ZmRhNDY0ODA5MmYzY2Y4YjliYmVjOTI4ZGFmOTc5ODYyZDgzMjkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxODIwNTJkMmUxYzM4YjQ3NjE0OTFkNDA0ODlmZGQ0NDBlMjM3NmFhNzJmYWNlM2JlZWExYzBlOWM1ZDIzMDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2MTkzMmY5ODdkMjQzNTgwNDlhMzAwMWZkMzY5Mjc0ZTc0NmU3NjdjNWYyMzZhYzU5ODE4ZmM1YTJhMmFiMTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4YzA0ZGE4MTdkYTk4NDM5YjViYzIzYmU4YjU3ZDY1NjI2Y2Y0YWNiN2MzZWFhZmRhMGFlMTg1YmIwZjNiNmQifQ" + } + ] + }, + { + "id": "claim_e3dcd64984ef4f99bc232f2a73d68439", + "statement": "Pump POST start starts a run, start-rescan starts a new rescan unless already running, stop stops normal and rescan runs, and disable prevents automatic scheduling while still allowing manual start.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L548-L573", + "version": "repo-lines-v1:sha256:6745b0cf2c2046108d25e13fe54cf674b72d0356ba50811d2df6fc7515a8d19e:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2ODc2YjY2NTkwYjliOTNmYTNjMGU4NjY2YzQxYmJmNzU2YmUwNmVhNzNmNTM4ZTNhODkxYjgxOTE0OTVkMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJlOWMwMjZiOTM1Yzg4ZDRlZTdjNTVkOGUxZGIzYTM1N2JmNDM1YTM0OWM5ZGFlYWQ4ZmU3OGVjMWZjMjcwYWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFmNDc2MDU5NGVlYTI5OGIzNTEzMjcyNTUxNWMwNzM2YWJmMThlMmNiZDQxODVmOTM1YjBkOTZhZDhjZTUwYTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAwNmJjNTA2NGFmNTQzZjcxN2Q2Y2E4M2RkMzQ5NDU3NjBhNGFhMTQ0N2FjZjg1MzE5YmZkMzNmZTIwMmViZDEifQ" + } + ] + }, + { + "id": "claim_087f8b04fe9246c0b66d773bfdd99f0f", + "statement": "Clearing last-seen makes the pump behave as a first run and reprocess source data; full/reset runs perform deletion tracking, while background rescans require explicit enablement and are supported only with dataset sinks.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L393-L417", + "version": "repo-lines-v1:sha256:44289adcde9e1726b93cc91e74e3ae4943b4bdc1dbae4e403ce4aa9370fd8eee:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE1MDNmMzgzYzIzNzNjZTUyNjA1ODgwYmQxNWU1ZTQ2ZTU3NzBkY2U5ZTVjN2Y3YTI4MzgxYjRiNzk4ZWY2OTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE1OTQwODQyYzZjZTllNDBmNjIzNGM1OGJiYWQ2ODU5NTllMzQwMzBlN2VjYzRjMTIyZTA0YTBkMTM2YTQxN2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdjZGI3OWU1ZDBmMTAzMGIzYzMwOWIyOTkxMDBkNjlmNDMwOGEyNTNiMzkyODRjMDc3NTMwM2IxMjJmZjlhNjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjljMzYyNGNhNDllMjA2MDBlNjFhNWI1OTExM2I2MzgwMTUwNjMwMDEwN2MxM2YwZjVmZTJlZmE4YTFlZGQwYmMifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L577-L585", + "version": "repo-lines-v1:sha256:731518074d8695dc26859808c3b08c8756e508269d6e33805477498116714859:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGY4MjVlY2E4MmUzMDYzYmM0NzJkNTVjZmZkYzRmZjNiZDc5MmQzYjc5NDFkZGFmMDRiOWEyOTljOGE1YWRhMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGUyMDE4NWFlNTM0MGEwYjEyNjI2MTJlZDYwNTZmMWFkZTlhMzcwYjgwMDA2ZGM5ZTNhM2Q5MmQ4M2ZkYjI2NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDA2YmM1MDY0YWY1NDNmNzE3ZDZjYTgzZGQzNDk0NTc2MGE0YWExNDQ3YWNmODUzMTliZmQzM2ZlMjAyZWJkMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmQ5MDk2MGY4MTYwNzk0MmJkNTUzYjU5MmQ4MTExMGVjY2Y1M2QzZGFlMDNlMDMyOTZmMTdhZjcxNTlmMzExZCJ9" + } + ] + }, + { + "id": "claim_0bea1d0655eb485e80931f31c3fc7105", + "statement": "set-last-seen-to-end skips unread source entities, can cause data loss, and is documented as a development/testing convenience rather than general recovery.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L587-L593", + "version": "repo-lines-v1:sha256:06748b942dfad926dd26b93e14df213caf8edc0789b2bd777b913bce8173d21f:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmFiZDdkYmM2Y2NhNjYzMjU2ZDIxMTY4MThjYTIyNzEzOWU5Y2FkODllMDY2Yjc0NWZhY2Y3ZGUzNDA1N2NlZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWZiZTFlMGVmMDNiYzQ5N2Q1NjE3OTU1YmRiNzFiY2RkZTU2NDJhNjZlZDEwMGY1MTIxZGE1YWJhZTc4ZmFjZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODIxNmU0NGYxNTNkM2ViM2MzYjg2MjdjNDgwNzZmNzZiZDU5M2YyYzlmYTk4OWQ4ZTY1ZTA5MGJkOTAwZDRlMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmY2MzdiYThkZDQzMGNjYjBiOWY2ZDhiNGY1Y2Y0MTdjOThhNzczYTI0YTE4ZDVjZDMzYjhiYmYzZjAyY2Y2MSJ9" + } + ] + }, + { + "id": "claim_0bbfd1d25d3547a8a6c09db97c716dee", + "statement": "Experimental reset-tracking is unsafe while the pipe is running and skips untracked dependency offsets by continuing at dependent dataset ends at the next pump run, potentially producing incorrect output unless followed by full synchronization.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L595-L605", + "version": "repo-lines-v1:sha256:2cbbabc20e2aca019bf31f82780d9062a3f4ba12ba74ca4c4a586394a023eccc:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxZTU0MjM1ZThlOWNlZTc5NWJlYjRjZjY0MDJlNTVkMmM0ZWU2NzRhMTAyNTMwMzk2M2Q5ZWMwMmFjMjRjNTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgwNDQxNWIyOTgzNzIyNDk0ZWFjZGYzN2FjZTU0MjlkNWVkZTY2ZWZkYWE3NTdkYzFlOTliYzU5MzY1MmJmZGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJjZmJiOTFjZmZlOTlmMTAyM2ZhNDRlMGRlZTE5MDAyMWExN2QwNTE3Y2Y3MDM1OTEwNjRlYThkN2RlZTgwYjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJlZWQxMmVmMTFlYjU2YzFjNzliZDRhMWNiZGI3ZTVlNmE2Zjg2NGEwOWU0NjY0MjgzZGU2YWZmNGQzOTE4ODcifQ" + } + ] + }, + { + "id": "claim_efac12604de14ad0be217ad9e4183576", + "statement": "discard-retries writes a pump-discard-retries marker that causes pending failed-write retries to be ignored on the next run without moving the discarded entities into the dead-letter dataset.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L613-L617", + "version": "repo-lines-v1:sha256:527e4340071c0f73f529f50ff966912eaf540f5b5dfa606f0be27998315f270c:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzM2ZGM2NjBjNWU0YzM1MzAxNDg1MzQxOGVhNWVmMzFkNzFjZGMyZWM2OGNmMjUzNjk0MTViOWE5NDcyYWIwYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTQ4MDBjZWI1MTUwMWJmMTEzOGQ0NGMwY2M2ZTY5MDJhN2U5YTEwMzhmODRkYmVjZWNlNDMzY2Q3NzI4ZGNhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmNhMGE1MGMzZTQzODIxYWVjYTNiYmU5Y2E0YmQyYmI2NTE1MzFkODQzMzY5YWJlZDA1OGE3ZjFhZDNhNDlkMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWQyOWNhNTNiODc0ZDZlY2VhYmQ1M2MwZDU5OWQxNzUzZjhiMWM5ZDdhMDhjNzhhNjhlZGZmNTY5M2RlZmY2YiJ9" + } + ] + }, + { + "id": "claim_a85daf097af044b5b33524d683d2cfae", + "statement": "force=true on pipe creation or configuration update forces best-effort acceptance of configuration errors, which the API reference explicitly describes as rarely a good idea.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L189-L196", + "version": "repo-lines-v1:sha256:d2462ab9a091f961f03f5dbffae736478a22e753c3b76159f37575621ac0f7b0:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmIyZTg0ZmY3ZTJmOWI4Y2ExZDllZjg3ZTNjN2ZiMGU1YzVhMDdkNjUyZDVjMGQwMjhlZGI2Nzc0YTBmZGI3OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjBjYTg3MTIwNDcxYTdjMWM4M2RiOTRlZWMzOTE3ZDRhMTcxMWRhMTNkOWQ0MTJhZGUzOGI1Yjg5Njk5OGMyYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzc4Nzg3MDg0ZWY5ZjI4MGMxMjk3NjdhYTY0OWY4YTFjNzFjNmM2MWMxZjFjNmZmYmJiNGM1MjNmYTVlNjc1OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2JiMmI2MjM0MTliOGI3ZTJhZTk4ZGUzZGZhOThmMzA0YmU5YWUyNzFlOTA0MTI1NGRkMTI1MDkzN2JjMzUwOSJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L283-L290", + "version": "repo-lines-v1:sha256:d2462ab9a091f961f03f5dbffae736478a22e753c3b76159f37575621ac0f7b0:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmIyZTg0ZmY3ZTJmOWI4Y2ExZDllZjg3ZTNjN2ZiMGU1YzVhMDdkNjUyZDVjMGQwMjhlZGI2Nzc0YTBmZGI3OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjBjYTg3MTIwNDcxYTdjMWM4M2RiOTRlZWMzOTE3ZDRhMTcxMWRhMTNkOWQ0MTJhZGUzOGI1Yjg5Njk5OGMyYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTA3Zjk5OTM2OTQ4ZGMwY2E2OGM2NzlkZDIyNDI1MTMwMWY4YThiZWRkNmE2MmYxZTk5MGNhNDUzZWNiNTg4OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjlkMjM1ZjNjYjg3ZjEwYTFlMzFjNDZlOTgzMDA2ZmMzZjQ0OTlkMmM3NzE2OThmZGNlZjM5ODE4ODBjMThlOSJ9" + } + ] + }, + { + "id": "claim_cfe15faf74ee4510837dfb3c7e486bbb", + "statement": "The documented local test workflow runs internal pipes until queues drain with output pipes disabled or unable to send to targets, compares endpoint output to expected fixtures in expected/.json and expected/.test.json, supports stage/endpoint/property filtering, and is invoked with sesam -vv test.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L57-L85", + "version": "repo-lines-v1:sha256:760a771502c41d327be2da630c7c9d61377d20230860680c2530bc4fbbc77fe0:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2ZTVmMDlmNGE0YTJkMTIyYjI5N2U3ZjQ1MzViMDg0OTY2ZTQzNDZlY2QxNjU5ZTM1OTFmNzFhNjAxZTJhZWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJiNGQ0YmQ4YzgyZGFmMGQxODM5ODQ0YTVlZGFiNmUwM2FkYThhMGIzOWY1ZGNkOTAxMTFhZGE0YmQxODY0NjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY0MGY2YWU0OTAxY2Y1NWJmMTM2YjE1MzZkN2JmNjk3YjMyNzU4OGM3OWJmNTNhYmQzZGJhZWJkYTkxNzFhYTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI5NTM4ZjU1YTgwYjVkMWFkNWQwMDc4MWNkZGQzNzc1MTRkZjA2M2NhNGJlODNiNmM5NTQ1MGQ3MjU2Nzk4ZDIifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L21", + "version": "repo-lines-v1:sha256:d728920650b733582762cd2916dd09f6f0f0af185fdda8c3774bd133cdd1ef38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + }, + { + "id": "claim_168ffd67c73a4eb6b863d78dd33b32cd", + "statement": "The Sesam client is intended for personal or CI/CD test subscriptions, explicitly not production; only one client may operate on a subscription at once, and concurrent manual changes should be avoided.", + "evidence": [ + { + "resource": "repo://hub/sesam-client.rst#L13-L36", + "version": "repo-lines-v1:sha256:634f979e06be2327c15ff80a4a5a26a96182e60f180587e0b2241b258e3d46b6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM3Y2Q3NWFjMjI3Nzg0Y2JiMGE0ZTg4YjM5YmM1MTdiZDc2ZGNjNzc1MDI4NTkzZGMwZTA3MDliOThkYWI3OGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxMGQ0ZTdiNmYzMmYxMzMzMGM4ZTE0YmU4ZGI0MTcxMjMyZjI2ZGQ1MWZjYTU4MzNjOWFlZjhiNjBlZTdiMmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjcyY2QyYWU0ZDVmNGE1YjMwNjE0ZjBiYjJlZTVjMWNhMTMxNTlkZDI0ZWY1MGNkNzM0YjM4MjU3ZTAwNmI5NjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE3MDExNWIxZGU0OTU2YjM3NTA3NjE2NzkxZWRjMjA3OTBiY2M4ODc0M2Y4NWZmYzIxYWI5ZmRlOWJiYzk5ZmUifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/operations/security-and-secrets.json b/openwiki/.claims/operations/security-and-secrets.json new file mode 100644 index 00000000000..f70b978aeab --- /dev/null +++ b/openwiki/.claims/operations/security-and-secrets.json @@ -0,0 +1,812 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:47376a80acc8ad67387c44a0bc3e29160d43e1c079c7b01ec8bc3ced2e33029c", + "claims": [ + { + "id": "claim_5afeb551335d41b28f998d6a22af0b9b", + "statement": "Sesam documents two separate security domains: user roles and permissions authorize people to perform actions, while secrets hold integration credentials such as database passwords.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L8-L18", + "version": "repo-lines-v1:sha256:7c4b65b0de9b0e5173090b6bbba04d2b533273d75531644a5ca27c09b50bac4d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRiOTIwMTYyYjkxYzBmMmUxYjFhMDEzM2NkOTgxMmJlYTFkZjdkYmI1M2ZiMTM2MmMxNmUwOGU3NWI2NTg1MjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjMjdhZmY3NGMxM2U0OTE2NWFiODI3MmE5ZTc1NDAxNjY5MjVlY2Y2OWM4MmM1MmM0NjA0NzU3OWEyYTlmOWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdiZWY2NmU2N2FlNWFkNWY5MWRlMDc4MDQ5ZGY3ZGY4ZDhkMWIyMThlZjk1MzEyYjM4NTgzZDQ0YWY3NzdmZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYyYjQ0NTUwNGVjNjhmYTUxNDg3NjNhYmExZWRmOTkyMWE3ODNmZGZlNWNlZjE5YmU1OGFhZDQ1M2YwOGEyYzkifQ" + } + ] + }, + { + "id": "claim_fce2c315aefe47b78c7f47d498bf67ba", + "statement": "Portal roles are assigned to users within individual subscriptions, while node permissions are assigned to roles on pipes, systems, and datasets and evaluated against the user's roles.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L23-L39", + "version": "repo-lines-v1:sha256:2561b1f2374f307c9a94467e9e66ba7bdac6e50c5070f06538cf402d86150641:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhYzJmMDhlMjFiMTZmMDIyODFkMjU1ZDk2YjIxOTJjZDgxZGViMmI1NGExMTUxYWRhMzIwOGY1M2EzY2UzN2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwMmJjZjQ5NmVjYzJmMjU1NTZkY2M4MjUyNDdmZjNkZDU2MTEwZGNlZTFkODE5YmUwOWVjZmY5YWZlYzU0MjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImMxY2NjODliZjQ0Mzk1M2ZmZGIyYjdhMGQyNjQ2NTYwNzdjYTk3MWQxYjczMzZhN2M2NWFlNjI5ZjAxNDc1YTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUxZDJkZGIwMWYyOTViMjEzNzE5MWNjNmI2NGQyNjJiYjVjNzJkNzgzM2JjMTQ2NWJjNTZlZDEyODc3MDZhNDgifQ" + } + ] + }, + { + "id": "claim_913fde84b2734647b55cfa68613d1ed0", + "statement": "In the documented GUI login flow, the portal checks the user's email and password, returns subscriptions where the user has a role, and issues a JWT containing the roles for the selected subscription signed with the portal's private key.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L45-L54", + "version": "repo-lines-v1:sha256:8716a6fb945e9b588d0236d437acc0d468500e17d06de27f0da0bc257a862d6a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmNDA1ZTU5NjUzNzdlOWM5NDliNDc1YjQxMmMwZDdlN2M1OTIzMGFmN2RlMTU4ZDZjNDg5MDgyODg3NmY4OGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhNzJiOGVjNmVjMDMwZDEyNjdhOTc2OGUwODNmMDE3OGUxMjRiYzE1NjZhNGI2NmVlMDE4MzBhYzM2YTc5N2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhkYzYwZGIyMmZhOTE0MzMyZWIyNWQ0ODcxMzhmMjZiYmJmZTM2N2FkMDMyNDA2ZGViZjYyNmYxNDE5MDAyY2QiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFiMTE0ZTQ1MGVjYjllZTgyMzU0MmJkNzM2MzllMTYwZGYzYzNhOWRkNzI5NjU3ODI3MTA5OTEyMGRlMGJkNTkifQ" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L300-L315", + "version": "repo-lines-v1:sha256:520af5d0515aef341f06771f856fb86315c081bb9c6887b33b88a56f68ce587c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxODEwNTg1MWQ0YTFkZGU0NzFiYWIyNTlmZjZjMzg0MGZhNzhkYmUyOTMwOGZlYWZmNTM1MmNkOGUwMGM4MmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNjN2I1M2IwOTg0Y2RhM2ZjODI5ZGViNGE0NjJlNmI0MDNmNDVmZjQ5YzRkMGU4YjRjMjA3ZmUxMDc5NzQ1NTYifQ" + } + ] + }, + { + "id": "claim_e37180e83686499cb30f3153b11b995f", + "statement": "The node validates the JWT signature using the portal's public key and checks the requested dataset's ACL for Read data permission; a permitted read returns contents and an ACL denial returns 403 Forbidden.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L53-L63", + "version": "repo-lines-v1:sha256:b02fc1e7b9cdb24076221a8dbe87567509f13916244ee6c2a0c25786ed6e98df:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2ZDMyYTIzYmRkMjM1Y2Q3YWQ0ZDcxOWU3MGFjYzE1YThhMjg1YjNiZmZiOWVkMjA2ZDkyNWU2NWUyMzQ5NDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU2ZDg2YjdjNGIyNmE1MGU1YjVjY2Q3ZjRiZTIxNzdkZGNkY2I1OTU0MjY1ZGYyYzQwZmY2Zjk1MGRiYzk3NDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFmNTE3MWFiZTQzN2EzMzYzNTUzYjIyMmYzMzNiNTI4NzU3YTg3ZWY4MDE0MjE3MGYyYmJmMjU1NjI0Y2IwNGYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhiOTc1Y2Y3OTBiNGMwNTRhNjQxMTFhODgwM2UwNWExYTk2ZjU0NWNlZWRhNzUzNjAzYTU3ZDA1OWEwNzIwMWIifQ" + } + ] + }, + { + "id": "claim_fc94ed6be0b84264b2505261d2c19444", + "statement": "Most service API calls require a JWT sent on each request in the Authorization header as Bearer followed by the token, and clients must use the actual subscription connection URL, typically a hosted URL ending in /api.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L10-L58", + "version": "repo-lines-v1:sha256:122fa8bd560ec02d4aa8be40b28d436fffc752b6019a53432dbd824df55665b5:eyJzZWxlY3RlZExpbmVDb3VudCI6NDksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2MGRhMTJiNTFlZDQwYmIxZGE5ZWY2NDUwMjFjMDY3Yzg2MmM2NDE5ODljOTY1NWY4Y2FmM2I4NjZjY2JiZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcwODAwNzllOTgwNDFhMzVhNmEwMDJlY2U0OWUxYjdjZDZjNzM4ZGVmMGJmMTU3NDY0MGU5OTM5YzgxYmFhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdiZWY2NmU2N2FlNWFkNWY5MWRlMDc4MDQ5ZGY3ZGY4ZDhkMWIyMThlZjk1MzEyYjM4NTgzZDQ0YWY3NzdmZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM0ZDFjNDM4NDc0MmY2NjYwZDRiYjQ1NjhhY2M5MjE0NTM5NWUzNWFlZGNmY2FiMjMwODcxMTU3MDY2ODMxYjMifQ" + } + ] + }, + { + "id": "claim_2974afa488974d44bb65867a44333185", + "statement": "The portal provides GET /api/jwt for the logged-in user, POST /api/jwt with email/password and optional subscription_id, a subscription-specific JWT GET endpoint, and an RSA public-key endpoint; omitting subscription_id from POST requests a JWT for all the user's subscriptions.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L256-L326", + "version": "repo-lines-v1:sha256:f7e6ffc2d44505daef50208177d9a0afde5446aa81c67b0e0f96ad94469a562a:eyJzZWxlY3RlZExpbmVDb3VudCI6NzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE5YmZhYThlOTdlMGM3Nzk5NDE0ODMyYmNkN2RjNzhkYzM2YzQ0NjhlZWEzNjQ4OWE4MTM5NjVjNTIwYjUxNzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE5Y2M5YmVjY2U1YWViYzBlZDU0YmJjYjVhYjQ5MjQzYTNiMzBmMTIyNzA0YjA5YzY3Mzk1OWEyOWI0NTI2ZTEifQ" + } + ] + }, + { + "id": "claim_302ad5ae6071442c8ae09f81519536c2", + "statement": "The published role overview grants Admin all listed management capabilities and Developer subscription/resource/role/permission management and config uploads, but excludes Developer from admin, other-user, ACL, and license management.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L65-L92", + "version": "repo-lines-v1:sha256:3de9f226b252da0a4529dee4c3b679877ab47aeb736f0cffbc5360c03a37d7a5:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk0YmFmZjA0YTM4MTQ4ODRlMThlOGQzYmM5ZjhhNWZmM2Y1ODAyZmQ2YzZkMGRkMjk4OTBlNDQzNzZlZWExOGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY2NDJmN2Q4NDZjMjI0NmRmY2RkMDJkNjNjNzcyZmI1NmJmOTM3ZjcxMWRiNjYxMzgyMGU4ZjFjYjMwYzVhY2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUyOWFlOWQ5YTBlNTQ2OTVkNWQ0YzBiNzVlNzNkY2Y1MTU0Mzg3YTNjZGMyZmUwMDUxMjQ4MTkxZjYwZWEwN2MiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM3NDQzOGJhYjY1ZGEyNGJjZGUxYjA2NmUwZTI2N2E2YjI3ZWU2NDdhNzZjMGI3ZDQyMWFmYzExNGI3MGY1ZDcifQ" + } + ] + }, + { + "id": "claim_a077fafc9ca54c5ca0e9d7eeb8bb5b39", + "statement": "The role overview allows User to manage own pipes and systems and manage datasets, while Guest can only view pipes and systems and has no dataset management capability.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L65-L92", + "version": "repo-lines-v1:sha256:3de9f226b252da0a4529dee4c3b679877ab47aeb736f0cffbc5360c03a37d7a5:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk0YmFmZjA0YTM4MTQ4ODRlMThlOGQzYmM5ZjhhNWZmM2Y1ODAyZmQ2YzZkMGRkMjk4OTBlNDQzNzZlZWExOGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY2NDJmN2Q4NDZjMjI0NmRmY2RkMDJkNjNjNzcyZmI1NmJmOTM3ZjcxMWRiNjYxMzgyMGU4ZjFjYjMwYzVhY2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUyOWFlOWQ5YTBlNTQ2OTVkNWQ0YzBiNzVlNzNkY2Y1MTU0Mzg3YTNjZGMyZmUwMDUxMjQ4MTkxZjYwZWEwN2MiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM3NDQzOGJhYjY1ZGEyNGJjZGUxYjA2NmUwZTI2N2E2YjI3ZWU2NDdhNzZjMGI3ZDQyMWFmYzExNGI3MGY1ZDcifQ" + } + ] + }, + { + "id": "claim_799ba15c312844e2ad2f89bccca95ff5", + "statement": "Pipe and system configuration permissions are lists of three-element ACL entries containing an allow/deny action, a group or role list, and a permission list; prose uses ALLOW/DENY while published JSON examples use lowercase allow/deny.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L109-L114", + "version": "repo-lines-v1:sha256:dc41449fd0ffef2c5fec71f6c2b1dc8371e9adf09ea7491127cac2ebd57417cc:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2Q2NDQ4YWE2ZTA2ZmVjYjdmNDViNmE3ZTU5YzQ0NDI4YmYzMGEwMzgxNmNjZTczNTVmMTAxMGI1MTE0NWI5YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTVlZGY3Njk2N2IxZDMwY2MzMmE4MGQ3NDcyOTliZjQxOGI1OGE4N2FmM2ZhZjBmOTgwMzE3N2JhMzBhZjBkNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems.rst#L19-L35", + "version": "repo-lines-v1:sha256:e63bc13f697770ccbed80f484de19623f0d4fc0923ef7db15b39310a0985e664:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNlYTU2NTkxYThhMmZmNjFkMDMzMTdhN2JiMTRjMDdiYmJlMDNmYThhN2VjZDBjNjMzOGNiMTgzNGU1YWM5NWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNkNGZhOGFiNzc2YjFmNDlmODM2YWIzNTI0NDQ1MmFiMTZkNWRiOTI3YWViNTJkNjllYzAzZmQ5ZGRmYWJkMmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhhZGQwZTY5MmUzOWFmMTZiMWU4MWIxZDAyNjE4YWYzNzBiYzY0ZmMxZjBjYTllNzM1NWE1ZTNlM2MyODE5OGEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems.rst#L88-L93", + "version": "repo-lines-v1:sha256:b282f4da89c4557943f0163b6cce5405ee5bb22335bc4882be5376f85896783f:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2Q2NDQ4YWE2ZTA2ZmVjYjdmNDViNmE3ZTU5YzQ0NDI4YmYzMGEwMzgxNmNjZTczNTVmMTAxMGI1MTE0NWI5YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjc1NTMxYzM4MWIxYjg5OWEzMGU0YjcyNGNkNDA3MjVhNjFhZmQyOWM3NGQ4MTUwZjE0NTFmY2M3OTkzYzMwNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTYzZjU1ZGQ3MDBiY2EyYjQ3YWJhN2I4ZGI4ZmU0NDg4NGMwZmFhZGZkZmRmZTE5MzY5M2U4MjlmYjlkNzc4ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + } + ] + }, + { + "id": "claim_ef2cc6a6a60e47acb8ef7b458ae7d90e", + "statement": "The documented pipe Developer ACL grant distinguishes read_config, write_config, run_pump_operation, read_data, and write_data, while the system grant distinguishes read_data, write_data, read_config, write_config, read_proxy, and write_proxy.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L94-L113", + "version": "repo-lines-v1:sha256:8e164581a0a17bba0ed7edb6f2abb4947cee1ab6b0b9129a0458b94d15779777:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE1NWIzMzM5NTNlMzgzZTU5YmU3NWUzNmM4Mjc2ZGMxNjA2MjdlMTJkYzE5MmExOTU2YTFhZTNjZTY2ZTdhNmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM3MGQwNThjYTdhOTdiZGI4ZTkwNzE0NWI5M2RhZTEwYjZjOTBjNzNmYzIzMjZkY2NmMzQyNjY3ODRkMTIyNjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhODU2YzdiZjMzYWRkZjIyYjlkOGVhYjk2Y2E2NTVjYjJjZmE1ZGQ1OWJhNzI4YjQwN2E2ZTg3MTgxMzJjYzIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk5ZmViZDU1MDg4MTE4YzNjZGRmMmJkMWVkMTk2NjQ0ZGFkODIzZGJlMDM4NGI4MThmNDgyZWE1MTI5ZjBhZGIifQ" + } + ] + }, + { + "id": "claim_fe3e3469704f46b5823b859e378781f5", + "statement": "A newly created pipe inherits the creator's roles and stores those roles in its configuration.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L115-L118", + "version": "repo-lines-v1:sha256:2389548bbd78a3f7802f7bec998e3267082d0ebeac6d9170e15f2bcf46aae8ac:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDRhZmI2ZmM0ZmU1N2YwNjVlZjMzZDliNjdiZjQ0MDNiYzlhY2UxYjgzMTAxMzNiZGI2ZWFlNmFjNzNkYjQzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjZmYWIyNDI1YjkzMmNhOWJjMTMyZWY4YjUxYTNlNTFmODEyYWU2ZTA3NTAwMDI3MzkwMDhjZjdjZWY3NDcyYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2VmYjAzMTcyYzJjN2QzYWI4NjVkY2JjNzg2YTI2N2QxYTcwOWIxMDY3ZGIwODA3OTZiN2JhNDg3M2ZhODdjZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGY1M2FmNTNlZGM0MDk3OGJjNjI3NzEwMGQ1ZWU5MWUxZjk4YmViYjlkNTU3YmJkYzhiMWViNThjZjEyMzM4MiJ9" + } + ] + }, + { + "id": "claim_1a5eaf668c234d08adbcfb3b6d1c7de8", + "statement": "Runtime permission checks verify that a pipe may read its source system and write its target system; a failed check fails the pipe run and displays an error on the pipe's GUI page.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L118-L123", + "version": "repo-lines-v1:sha256:32a94cbdcc85458d22fc6d8bb5e7ef12eedd3975e8dc939117884300901cbe87:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjZmYWIyNDI1YjkzMmNhOWJjMTMyZWY4YjUxYTNlNTFmODEyYWU2ZTA3NTAwMDI3MzkwMDhjZjdjZWY3NDcyYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWE5N2E2MGYyNmRhMmYzOWE1ZTE1NDQ0YjgzNTU1Yzg4ZDYwZjZmYzM3YjlkOTk0ODM3OTNmMTU1YTcwYjkwZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGM3OTE0NDBiOTk3M2FmNjZhMThiNDhlMGUxZTFhM2NiY2FmOGUwMjg3OTY4YWE3NDUzZDg4NTg4MzUyNTM5ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWFjMmRlYjMwZGJmNDQ4NTQ5NDkzNDY3ZGQyYTI4NzQ0Njc3ZWQ4MjYxMzQ4ZjNlODAyMjlhNmExZjdmNzNjZSJ9" + } + ] + }, + { + "id": "claim_b34abc3227ea4285a359c01107bc469d", + "statement": "The portal supports listing, creating, and updating subscription API JWTs intended for scripts and cron jobs; creation requires exp and principals, and a token-specific DELETE endpoint removes an API JWT.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L521-L692", + "version": "repo-lines-v1:sha256:c1a24328090711682534573656fd4e90d642d2893af77de200ce387de5e0242c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcyLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiI4ZmQyODEzMjJmMTU1ZDdhMjM1NDdhMjEwZDA1ODA4NjEyZWEzNDM3ODU1NTUyNTM1ZThmMWNjMWY3MzhkMjk3IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJmMzlkYmJiNDBjNDc0ZjU4OTBlM2IzMzUyZGM5YmYyZTdmNDI5OThkMjM5ODE2NGFkMTNkOWYzZTZiZmY0MDEyIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiIyYWNhNzhjMzI5NzEzZjkwODYxYzkzYmY1ZDMzYjU3NWRjYzNmZTg1ODM4NTUxZjRmOGY0ZmI5Nzk5MmFlMTI1IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiIyODMxZGU3NGI3MGFlNDcwZTZkYjkzZjFjZWUzMjhlODIwODRiZmViNmM3MWQ5NGFjNzYwYWY1NjdkZDNjYjJjIn0" + } + ] + }, + { + "id": "claim_f109b8cee2464802a634fb614d96cda1", + "statement": "An API JWT's configured exp is an epoch expiration date without refresh_interval; with refresh_interval it is the last refreshable time, while the signed token expires at current_time plus refresh_interval.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L4727-L4733", + "version": "repo-lines-v1:sha256:4ef5ce5646464bf50f22383e015c0bc61c2df587d98b0c98796242f9787e69fe:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTRjYWZlMWJiZDAyZDlhNGY1YTIzYmU0M2E0MzA3ODIyZWQwMThiNTc3YjhmODJjOWYyYjQwZjFiNWJkNjgwYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzc5YzhmOTBiZTEzMmJhNDdlODczOTY0NGQzZTBiNjNmYTQyMmFiMDJiMzFmMDE2MjQxZTE2NzQ5NzlhZTE5MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzZjMWY1MTFiYTdmNjY4OGVkZTRlZjc2ODZiMDM3YzRkNTA1ZDE3NDIyNTg2NjJhMjMyOWU4MDg2MzkyODNlMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGU4NDE2ZGY4YThlOTNkNjBkOTU4NzllZGVjZDgzOWM0NGIzY2FlNzIwMjFmZmU0M2M1ZjdhNjYyN2M1ZjFlNCJ9" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L579-L596", + "version": "repo-lines-v1:sha256:2e38350cad2b37e81ea53cfde7d097b69e9c25a7d274a2e8001253096a8dc8e1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzMTMyM2Q4YWQyMDhmNTRlNjIxYzM3YTg1YTUzNGIzYzZjYjI3ZTY4NDMxYWU3OTI5MmZlMzc1YzJkMDUxMDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVlYWYwM2FlMjgzNGJmZWNkYjk3Y2VkNWEzZWZmY2RhN2U2MGFhZDI4NGQ4YjM0ZDIwN2E5OTM2ZTc5ZWM3NjAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg1NzJhYmQ2ZDUwYjFhNzFmMjcwYzRjYTU3ZThhY2I1ZTlmMzQ1MGQyNDMzZWZmMjYyZTU1YjFhYWY3MGY2ZjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNiYjJiNjIzNDE5YjhiN2UyYWU5OGRlM2RmYTk4ZjMwNGJlOWFlMjcxZTkwNDEyNTRkZDEyNTA5MzdiYzM1MDkifQ" + } + ] + }, + { + "id": "claim_c18a174156004a18b225ab24f833740a", + "statement": "Subscription API JWT jwt_string is returned only on creation; refresh-enabled tokens have client_id and client_secret, with client_secret also returned only on creation, so later token listings do not recover those credentials.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L4767-L4788", + "version": "repo-lines-v1:sha256:732552f76a76d15edb66789af573f30e423391907290d0cffd474691fe3dff17:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZiMmM1YTUwOWM0M2ZmODIzZDg4MGQ5ZTZhZDk1YmE4Y2FlMDhmMDQ0Y2Q3MmRmOTUzNjEzMGVhN2QxNzEzM2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcwMTUzYWUyZjA4NGY5MTQ2NDkyZGRhNGM3NzI3NGY3ZDY3MGE4NjRmNTdkM2Q4Yzc1NmM4OTQyN2RhYjRmZWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU4YWUzOTNhZmVkMDEyMmRjOGUzOWMzZTY0NzAxNjk3MmFjODI1YmNlNTIzZDVkZTAwOWVkMWU4OWM5NDI3MTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRhODUwOTA1N2RhY2E0ODY2OWVkMzZkMDkxMzQ0ZGZhZDgyZjhkMDM3MGM1OTYwMWRkMjk5ODVkNmUzOTQ4OTkifQ" + } + ] + }, + { + "id": "claim_5efed53119e54829aca5202f2517028c", + "statement": "The portal's POST /api/openid_connect/token accepts form data with client_credentials or refresh_token grant_type and client_id/client_secret; this portal authentication surface is distinct from a remote provider token_url configured on an outbound URL system.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L141-L152", + "version": "repo-lines-v1:sha256:adf67eadf978b476846d16488df9b9a689238c4d347beaaa01618283617d7f05:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJlMDQyZDI4MDc4NTNiYTQ3MDNiN2EzNzUxNzBhNzIwMTUyYjMwZjVkOGVkMThiNTM0MjRhMjg3NzNhMzkxODkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxODk2MmVjMTM4YzU2MTg3YmY3MzJiZWI1NzljMWEwYjhhZDI4ODY4YTU1MDQ1NTUxN2JiNDIxYTdhN2VjNjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgzYmEyOWMxY2ExMmQ1YmM3Y2M5MDUyZTUwMTk0ODhmMzk1ZTcyYTY0MGViYzNhNDRlY2FiZTQxMjk2MmJhZDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L2794-L2821", + "version": "repo-lines-v1:sha256:5e7b419b82c55c4b8d2e0d47240c81bb3229089c82565126cb3bdc34fa30219f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwMzZhNjcyZGUzZDk3OGY4Yzc5ODExNTkyMmI5NDRiM2E3NjU5YjMzOWE3NWE4YjQ2NTY4YWYzNzJjZDJjZDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZlZWQ3YTExMjA0MTRlMTQ4NmNlMWJiZmRjZjMxYjBmY2JhMjEzYmJjYmIzMTEzOThiNWVmZmRlYjYwYTM2YWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY5MWYzMmVjYTIwMTY1NzlhYTMwOTQxYzgzZmZiNWFkNjMyMDRiNDBiODhhMzM5YzJkYzFhN2YyY2E5YTFhMzYifQ" + } + ] + }, + { + "id": "claim_624acc13242c43c8bf69d0bc541768f1", + "statement": "The subscription revoked_json_web_tokens feed is intended for nodes to learn about changed user permissions and revoked API JWTs, covers transient GUI and long-lived API JWTs, and supports continuation using the last entity's _updated value as since.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L2627-L2659", + "version": "repo-lines-v1:sha256:76726d00d987bccce6b2424e284450ebe6ecf375e54b790cd7bbc224eb1b1cd0:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxOGUzMWZkYjhiZTcwOTMyYzg1MTVlZjY4YzVlNmI2OTYyM2UwMDdiNDRkNTQ3NDdjYmEzMDQ4MTQ2MzM2MGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiNWYyZDVjOTc3ZWMwZGRiNDExZjI1YzJlMjJiZTM0YjRiNTY3YjNjOGMyZTA4ZjU2MjM4YTZiNWRkZjdiMzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI4NzU3Y2IzZWQ5Mzc3YTZmNTM2NzcwY2MzNmMwNTRlZDZiZTQ5N2ExZGY1NzVjNjBiZmEwNzkyZDNkM2ZhNmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjcifQ" + } + ] + }, + { + "id": "claim_615e5fd519b244ada543faacfb2f2294", + "statement": "JWT revocation records identify either user_principal or api_token_id, never both, and api_token_id identifies one specific API JWT to invalidate.", + "evidence": [ + { + "resource": "repo://hub/swagger_portal.yaml#L5487-L5503", + "version": "repo-lines-v1:sha256:2c83ac8dc7fe3d7dd9bc83ffb0d12f63a52c3114550105a80015c54ee3afe605:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY3MDBkOWE2NjdlNmU3MWEzMTVhNWYxZTc5MjVkYWNlOTRlY2Y0Y2ZhNWQwZmNiZDgyN2UzZGQzYzUyOGM3YTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkxNjNmMmE3Zjk0YjQyMDc2OGJlMmRiYmNkMTUwMDYxZGQzOTMwZTQ2NTY4NjQ4OWQ5OThjYWZiYjIzOWRjMWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE5NzZhOTU0ZmExOTdiYzAwMzFjNjAzMGMzMTI5ZDEyYWJhYTBkYmY0MjhkMWNjMzdlODhhZGNkNDE5ZTMyNjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgwMTdhOTgyZjU0YmI3MWIzZDEwY2ZlZGYzMGIyMGQyNjQ3Mzc1YzA1OTY4ZTYxYTIwMDY4ZmNjOGZhNmRmMjQifQ" + } + ] + }, + { + "id": "claim_c907716038d84a62aa95e4e40585c74d", + "statement": "Every pipe and system is assigned a config group using metadata.$config-group for individual endpoints or the URL for grouped bulk endpoints; omission selects the default group, which is also used by /api/config.", + "evidence": [ + { + "resource": "repo://hub/features/api-config-groups.rst#L8-L43", + "version": "repo-lines-v1:sha256:db03ec51292f95a47c5d11f5767bed7c8e9fcccc173656679470b598df14a389:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUzOGQzYzJlN2NlMDBmMzJjMjFkNjU1ZDhiYTc0NDE0Y2RmMDNjNjhjZTUwNjNlZGUxYzI2OGIwNmM1MmNiNzkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcwMTYzOTRiMTMyYThiZjhiZTVkNGI2MjYxMDdkYTgyOWNlODk4ZmJmZGM4YWViODMwNTU2NTY2NzY5OTJlZTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMzMDc1MzMzNDI2ODg0YzVkNmQ5MDRkMTcxZDdmZWEwN2Q4NWUxN2Y1MDM2MWZmZWQ0YzNlNzVjNGM4YjdjODciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdiYWIyMmMzZTBjNmMwZTNhYzJmMmE2ZWZiZmZiMzg0NjY0ZDgwYmYxMmU0NjViNjMyZWRlNzZjNDkyZjdiZTMifQ" + } + ] + }, + { + "id": "claim_9e075d9f77fd4389a8a8a5b22ef42d96", + "statement": "PUT /api/config and PUT /api/config/{config-group} replace all configuration in the selected group, while PUT /api/config-all replaces all groups; config groups define configuration replacement scope rather than the role principals used by resource ACLs.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L26-L39", + "version": "repo-lines-v1:sha256:25dabc76de25b06390bffc3296a31a5d7c1607f05f2f8e70f85a1eae6591abbe:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMwNTdhMTZhNjhjOWZiNGJiMThjYjQ2MjZiNDAwMTYyZTU0ODdiYzk5MjhhMTRiYTY1YTg4ZGMyMGUyOTIwODYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwMmJjZjQ5NmVjYzJmMjU1NTZkY2M4MjUyNDdmZjNkZDU2MTEwZGNlZTFkODE5YmUwOWVjZmY5YWZlYzU0MjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5YmUwZTVlMmZkZDkxYTZjMDY0MzVkY2JmZDZiNzhhYjE4NGY0YjliODU0NjYyZGEwNWY1N2QyYTk2YjM4YmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUxZDJkZGIwMWYyOTViMjEzNzE5MWNjNmI2NGQyNjJiYjVjNzJkNzgzM2JjMTQ2NWJjNTZlZDEyODc3MDZhNDgifQ" + }, + { + "resource": "repo://hub/features/api-config-groups.rst#L29-L46", + "version": "repo-lines-v1:sha256:4f2734fae0d1257520157afff36c3279249b4eb9394a75d856beeeac2b419b9b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdjMTQ4ZWM4ODlkNzgwZGZhNGQ4YzYyODY1MTJmNWU4MTlhNWUzMWM2NjE4NWNlNzY0MzZhOWQ4YTVjZDY1ZDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhhNTM0YTY2Y2FhZGIwODhlZDY5MGM5YTAzOTM0NmI1YjM5MGNiYjNkMmIxOTM4N2ViZWE0YzRiZjQ0NTg2MzUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY1MWEzYjVmYTE1MTYyOTIyNmViYTUxMTFhNThmNTVmMjgxMmQwYTVkMGJmNWQ2MGM3ODJiMjUyYzkyNWEyYmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L1311-L1348", + "version": "repo-lines-v1:sha256:658abbe864e0427f32041dc89f052bee747a83ad9a675e72c93f116fc0df14db:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ3ZmYxODQxY2M3M2VjMGVkNTM2NGEwYTdkMWQ2NTFjMmIwYjI3YmUyZDI0NTEzYjVjMmI4MjYwMzhlZTJjMmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ2MDk2OTBjODc2OWEwMThmMmFiODc5ZTc0OTY2MjI2MTcxMzcxZDcxMmMzN2U2MjMxOGI4MDdmNGM2MTVkZGQifQ" + } + ] + }, + { + "id": "claim_ad707c4448584f17a8f84a82566d12c2", + "statement": "The default-group and all-group configuration PUT APIs document force=true as accepting configuration errors and applying configuration on a best-effort basis, with default false and a warning that this is rarely a good idea.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L1243-L1258", + "version": "repo-lines-v1:sha256:229e0ae01a594d6255fa41f366b3b0c6ab5dbc0fa4aac9cd5d093ecbc8951cfa:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5MWE1MjE0M2UyNWNiZTYzNWRhY2Q4YWZkMmY4NDFlZjY5YzdmMjQ2ZmQwYjMwNTg0MjQwZWQwMTdlZWEyMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwY2E4NzEyMDQ3MWE3YzFjODNkYjk0ZWVjMzkxN2Q0YTE3MTFkYTEzZDlkNDEyYWRlMzhiNWI4OTY5OThjMmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhhYWRmNDk5NmM3MDI0ODFmOTc5YjNlMTYwNDY1OWY4YTM4ZTJjMzJkYWU5YmFkOWE0ODk2YWRjZWJhOWFmOTciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhkMDhmMmYwZTE3YmJkODc0OTlhNTlkNDc5YTI0ZGY0NTU5ZmIwY2U5MTcwMDExYzhlMTc0YzBkNDAzY2E0ZmIifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L1329-L1345", + "version": "repo-lines-v1:sha256:0283033c062489598cc53108f93f7add2ac107b6bcc51ba9cc09539aee397f45:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5MWE1MjE0M2UyNWNiZTYzNWRhY2Q4YWZkMmY4NDFlZjY5YzdmMjQ2ZmQwYjMwNTg0MjQwZWQwMTdlZWEyMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwY2E4NzEyMDQ3MWE3YzFjODNkYjk0ZWVjMzkxN2Q0YTE3MTFkYTEzZDlkNDEyYWRlMzhiNWI4OTY5OThjMmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhhYWRmNDk5NmM3MDI0ODFmOTc5YjNlMTYwNDY1OWY4YTM4ZTJjMzJkYWU5YmFkOWE0ODk2YWRjZWJhOWFmOTciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhkMDhmMmYwZTE3YmJkODc0OTlhNTlkNDc5YTI0ZGY0NTU5ZmIwY2U5MTcwMDExYzhlMTc0YzBkNDAzY2E0ZmIifQ" + } + ] + }, + { + "id": "claim_3e3ac401af174ba9b8acfdebf0626bb9", + "statement": "Secrets are write-only credentials: uploaded original values cannot be extracted, only secret names can be listed, and operators must securely retain original values off-site for later re-upload.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/secrets.rst#L6-L10", + "version": "repo-lines-v1:sha256:d22d17c95c8159d3de42a67f87a74605774655a02fc85a60c296e52cd9fdb56f:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWQ5MWUwYmZkNDQ1NjVhMzE2NGNjNGQzNjE0ZjJmM2I3YzAxZDQxZTcxY2IyOGJjNzdkZTdmZTVkNzZjNjQ3NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjc4MmY0NjRkZGYwN2RjOTZmZWUyMTNhNDdhYWE5MDZhNDFiMzA0ZWNlMzMyOTMyN2EwMGViMmEwOWEzOTY1MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjhjMDNhYzdiNTgzNmNmNTQwMTRjMTBlNzlhNDZlOGY5ZjJjODdkZTUzNTE4ZjdiZTM2YjcyMmZjYTg2OWMwYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/security.rst#L162-L178", + "version": "repo-lines-v1:sha256:bfaf509d512395f2c155eb5a63d8e74f172058f667fb105eaa4a542c0656b37a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdlMmJjZjg0ZmM3ZDdhYjdmOWQzYmNkZGQ1YzM1NTBkNzhmY2ZlYzRlMTYwZDc0NTc5MTk2NDY4NGIwYTE2NGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwMjU5ZmY3MDNiYTUwMmI5NDYyNjVkYWM1ZDJmOGE1NDY3MWMwZmFkM2NkMDUyZWY5ODM2NzEzYmMwNmRlZmMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgzZGIzMjZhYWMwMjAxZGE4NjIxYmVmODFlZDc3MjJmOWQ0MTBmOTU4ZGRhOGY0MmJmNTk0Y2JhYTRhODljZTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMyM2RjZjBlOWIxMjhhMzU5YTI3NTc1YWY3Yjc4ZDAyYTBmMzA0ZjgxNzVlMTQ0YzNmNmQ3ZDJkMzU1NDMwYzYifQ" + } + ] + }, + { + "id": "claim_6259e977a2af43bbb1369f0ddcf60f1a", + "statement": "The secrets manager stores secret values internally in encrypted form using a key unique to each Sesam instance.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L176-L178", + "version": "repo-lines-v1:sha256:5346a52c1fbebedc3cedd7918ebe2139da7e1373f476f729a59a936ca4cd0245:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODljN2QxNTkzY2QxNWI2MTA2NjViOTU0MjdhYjRmYzJhMTY3MzkyZWYzZTdkNjFlMDJlNGViZDEwNGFlMTBiMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjAyNTlmZjcwM2JhNTAyYjk0NjI2NWRhYzVkMmY4YTU0NjcxYzBmYWQzY2QwNTJlZjk4MzY3MTNiYzA2ZGVmYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzE0YTY2MDc4N2ZjN2ZmNWEwNjI5ZDBjZmYxYTRhNDcwYjhmZTZjZGUxMWMwNGRkZTIwMGM2NjMyODgxYzQ0OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzIzZGNmMGU5YjEyOGEzNTlhMjc1NzVhZjdiNzhkMDJhMGYzMDRmODE3NWUxNDRjM2Y2ZDdkMmQzNTU0MzBjNiJ9" + } + ] + }, + { + "id": "claim_03cc311a4ed24c97a173db12378ede69", + "statement": "System-local secrets are visible to one specified system and are recommended; global secrets are available to all systems but are not recommended.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/secrets.rst#L10-L10", + "version": "repo-lines-v1:sha256:6782f464ddf07dc96fee213a47aaa906a41b304ece3329327a00eb2a09a39652:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjc4MmY0NjRkZGYwN2RjOTZmZWUyMTNhNDdhYWE5MDZhNDFiMzA0ZWNlMzMyOTMyN2EwMGViMmEwOWEzOTY1MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjc4MmY0NjRkZGYwN2RjOTZmZWUyMTNhNDdhYWE5MDZhNDFiMzA0ZWNlMzMyOTMyN2EwMGViMmEwOWEzOTY1MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjdkMmFlNzgwZTE0NDI0ODU1NjczODdjMjViYWViMTE4NWI2NjA1MDEwZTg0YzFlOGNmOWFiNjAzYjg5NzUxZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/security.rst#L149-L159", + "version": "repo-lines-v1:sha256:9e4552bfdeaf2082c0fd2e06fe3faf278ed7e9aec0da305d1f96c2efb2a0350b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhhN2M3NWIxN2M4ZjRkZTgyM2RlZDAzMTcyMTc1ZmFjZjQ0MWI1Zjk2ZjU0MWY2OTE4MDZlY2VkYzFlZjM2ZjkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwOTQ4Yzk1NzMwMWRlNDE5YjBlMTJkN2RhYWUwMTVkYzEwMmY0NDQwZGY3NzJkODhhMTM0MWQwMzAwNzdlNTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIyNTEwNWEzNWZjMjUxM2FhYjQwYTY1NWQxNWE5ODU5Y2JkMGMyODY5YTdkZGEzOTg0M2U3OGUzMjBiMTEzNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM5NDM1NDZkMGJmOWVhMTYwMDkwOWQ4NTFjNzNhZDNmYjU2MGRhYmEwMDVjMzVkY2NiN2ZiMzJiOWE2M2FkMmYifQ" + } + ] + }, + { + "id": "claim_db3ec957efb543b6bf898b8a8beceaca", + "statement": "Global secrets live until explicitly deleted, while system-local secrets also disappear when their system is removed; deleting and re-adding a system requires uploading its local secrets again.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L181-L187", + "version": "repo-lines-v1:sha256:ae0d79656aa9b5d00a553ed3cedec708e427f0e479000ff793544ef49c3f8eb5:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTAyOWExMDBhZjA3YzcxOTFjYjAyYzFiMTFkODY5ZGIyNGRhMWJmYWU4NWM3YzU0NDlhODhmMjM2MWVhYjY0OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGQ0MTQ5NzM4YTdmMmZhODE1NTZkZjNhY2Y4MTZiMjA5NGY1NWMwYmIwNjNmODMzZjk0YTgzNTZmMjczMDk4MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzc1ZjVhMDE3MmNkMWY2ZGZkN2U1NjI0YjgzZmI1ODJlZjE4ZjczMmM3NDU3MGIyNWIxYTUxYThjZWU0Zjg4YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDBmZDQ4M2Q4ZDFjNWQ5NWQxYTc2Y2Q0ZjlkMzllZGE5NmY4NzBiM2JlYmNjZjJjNmQ5M2NiYjdkZWJlNTEwOCJ9" + } + ] + }, + { + "id": "claim_7d8bbd4c45784fc7b9a73aa28934e8eb", + "statement": "Secret-upload API payloads are JSON objects mapping names to string values, although the narrative security guide also mentions lists of objects.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L137-L145", + "version": "repo-lines-v1:sha256:8bb858065838bc865a619091cd4ceb3d5db636efe9a915975c558766072def65:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjExNGNjZDU2OGMyMTNiN2IzMWRiZmIwYjkxYTI0MWI1Nzg4NmMyMTE5Zjk3NDQ4YmE1Y2U0NmYyZmI5OGMxNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTNiOGU2NTI0ODBmMzJmYTBhNDZiMTdlZWVlMTgyYTkwYTczNjRjZGVhZWZhMDlkZTliMmJiZTI2ODgwYzFkOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjI1MTA1YTM1ZmMyNTEzYWFiNDBhNjU1ZDE1YTk4NTljYmQwYzI4NjlhN2RkYTM5ODQzZTc4ZTMyMGIxMTM2ZCJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L1514-L1529", + "version": "repo-lines-v1:sha256:386af47171fd84cbefc3acc3873e06bdaad079f6df5efa45f48265d181b78650:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5MWE1MjE0M2UyNWNiZTYzNWRhY2Q4YWZkMmY4NDFlZjY5YzdmMjQ2ZmQwYjMwNTg0MjQwZWQwMTdlZWEyMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYzODQ2YWNhNTFlMjFlNGZiNTI4NGY4NWQ4ZTM5YzYxYTJjYmQ3MGE0NmRiNjdlNjUxYjQ0ZDBjMzY0OGVmMTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFkY2FhY2IyNGI0MThmNTUxNjIyY2NiNDg0NTcyYTQwMWUwMmY0ZGRmNDliY2U0MzI2NzllZDk5NzY4YjU2YTEifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2576-L2603", + "version": "repo-lines-v1:sha256:788ee5f4c593f58b04219ff9e43bd68cee9154a3034b354120576ab84e006008:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5MWE1MjE0M2UyNWNiZTYzNWRhY2Q4YWZkMmY4NDFlZjY5YzdmMjQ2ZmQwYjMwNTg0MjQwZWQwMTdlZWEyMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYzODQ2YWNhNTFlMjFlNGZiNTI4NGY4NWQ4ZTM5YzYxYTJjYmQ3MGE0NmRiNjdlNjUxYjQ0ZDBjMzY0OGVmMTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImExN2QwY2VhMDA1MTllNDY1MzFkZGM0ZmViYWRlMDZhNDE2MWY0Yzk3YjRiMmEyNDc3NTlmYzMwYzE1ODZlODMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVkMTM3ODk0NmQ3NDM4MTkxNmVkMmE5ZDhiNGU4MTZiMTdhM2QzMjkyODhlNjk0Zjk0Mjg5M2YwMjM1Y2YyMzkifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2926-L2930", + "version": "repo-lines-v1:sha256:b69d9f39827df1bec293b1ce583d296f9dc83d10e6d425510cb3a7e982ca723f:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmZmNzU3NmI3NGY0MzJiZjY2YTMwNWUyYTViN2U2YWNjNDhiNGY2ZTAxNTZiMjljZTdjYWRjZjA2YjRhNDM3NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGEwYmVmMDg0M2NhMDI3NWVhM2ZhNjQyZWNjYmM2MTA4YzdlNDc4ZDY5ZTA4OGNkYTliYzMxNTA4YmZkMmVjMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTE0NjE5MDllNWRlOGIwODM3MDZlZjc0MmZkNmEzMGIyNjJkMWJlMDY2NzlkNWI1YjMxNGE0ZThlOTJlOGJkNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWQ3ZGQ3OTY3MTYxMTk3OGJhOWM5ODI5ZWY2ZWZkZWJhZTllODQzNzQ2ZmM1OTRjN2M2M2MwOGEzNDhiYTk1ZCJ9" + } + ] + }, + { + "id": "claim_30e2e2dcc7784c4f94b4a4301e5d060a", + "statement": "Global and system secret GET APIs return names rather than values, and DELETE /secrets/{secret_key} or /systems/{system_id}/secrets/{secret_key} removes the named secret in the corresponding scope.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L1504-L1512", + "version": "repo-lines-v1:sha256:4844418ddad4cf9e6aa65a71a97d8ea82b14ae23b76186ee57a19a93f120136c:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODI4ODk3ZTU3MzEyZDU5ODY0YjcxOTBmNzNmZDRhZTkzYjY1ZDNhZjI3NzVlMTNlODRhNDAxNzQ4Y2I1YWQ4MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjM5ZGJiYjQwYzQ3NGY1ODkwZTNiMzM1MmRjOWJmMmU3ZjQyOTk4ZDIzOTgxNjRhZDEzZDlmM2U2YmZmNDAxMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzQ4MDY4ZjcxOGNiY2ZlY2U5ZWMzYTVhMzI1MzliMDcwYmJmMTMxNjUyYzIxMzgyZGE3ZmQ4MTIxZTkzNjhlNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGY3MWI3OTY5OTJkMjFiMDA4OTA4MThlYzIzNDI3MmU3OTc1MTc3ZjI2NmY5MzYyZjJkYzM5ZDUyODA2NGQ5MSJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L1536-L1551", + "version": "repo-lines-v1:sha256:46649fa11b1d57cc628baf2be01fc34cae8d972358df6b4403a1c1b0508e2fd5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVkMzIwNTU1NzBkNzBlM2EzOWI3ZTAyYjk1OWQ1MTA4ODY4NzI0NjAxYWEwNTE4OWI2ODM4OWUwNDNjM2EyYWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk3M2MzMDhmNzA0YzdiOTQ2ZDg1YzgzNTJjOWM2MjYzMzA4Zjg5NmI2NjlhZGYwOGIwOWQ5YTUwOTFmNjVjNWQifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2556-L2573", + "version": "repo-lines-v1:sha256:12d507b1b9db1d0929388b18c5ed6d915b42340198c72bc8828331ef8517be5f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVjZTZkOGQ0MzE1NjQ2NjAzZThhNDJlNGRlMjNhZjQzNGYyYjVmNjRjOGJjMzdhYzMzNWZhMTNmMDRhMjZiNGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM2YTE4Nzk2ZTljZGViMTJkNmY5YTE2Njc5YWM4NjAzZDc3MzBmMWJiODQzZGM3ZTZjMzY0ZTI5NDJlMGJjMTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNjYTA4NDJjZWEyODJjODQyMTdiYzIxNDNkMjRkMjllOWUxNDRjYTk2NmE5YTExMDUxNDVlMjk2MjFhMzNkNzUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEwMjRjMzM1ZWE2ZGU4Njg2MDZjM2U3YjQ2Mzc0MzI2ODU2MTY4MjZiMGI0MGI1Y2JjMzE3OWE0ODUzOGI5NjAifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L2620-L2640", + "version": "repo-lines-v1:sha256:9187ce4a43aabd568dc502af3ddf1e40652566077bb3494377be41167ed88c06:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkyZGUyYTk5ZmY2MDBjOTQyZDlkODdhZGNkYmVkYjYwOGMxZjNmNzNjZDQwODYzYjhmZmEyZWE1Yzk0YjdiNDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyNGQwODZmMTI0NDVhMTVlZGViMDcyZWU3YmY0YTdlOGUwMzBlYjNjYTQwZDdhMGEzMmZhN2QxNTc4YjlhMjQifQ" + } + ] + }, + { + "id": "claim_0b1e0be7776f4f889412b47d0ea90242", + "statement": "The global secret PUT contract adds submitted secrets and overwrites matching names; global POST explicitly adds or overwrites submitted secrets without deleting existing secrets.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L1514-L1533", + "version": "repo-lines-v1:sha256:d555b25fd67b78215c44ab22af845b770ba1923a2cdcd847432e18edb871fbf9:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5MWE1MjE0M2UyNWNiZTYzNWRhY2Q4YWZkMmY4NDFlZjY5YzdmMjQ2ZmQwYjMwNTg0MjQwZWQwMTdlZWEyMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYzMzllMTU0NWI1Yzk5ZTAyNTQzY2U3YzVhOTcxOTRkZGJhOWQ3MzBlYTcwYmViMjExMzdjYWMwY2YwMzZlYjUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRjZjUwNWQ5OTM4ZmUzMDE2YmY4YzkyOTRiMDhjYTA0MzViODZkOTdiNDdiMjBkNTg1ZWJlZWQzN2I1YjNkZWMifQ" + } + ] + }, + { + "id": "claim_e6c930d0a05f486b9284d3a81e4b22d1", + "statement": "System-local secret PUT overwrites the secrets for that system, whereas POST adds or overwrites named values without deleting existing secrets, making POST the explicitly additive operation for a targeted rotation.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L2576-L2618", + "version": "repo-lines-v1:sha256:337ca274e3e1aa834327c499e6c61f68de5478bb171e93ad978975452b30e149:eyJzZWxlY3RlZExpbmVDb3VudCI6NDMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5MWE1MjE0M2UyNWNiZTYzNWRhY2Q4YWZkMmY4NDFlZjY5YzdmMjQ2ZmQwYjMwNTg0MjQwZWQwMTdlZWEyMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImExN2QwY2VhMDA1MTllNDY1MzFkZGM0ZmViYWRlMDZhNDE2MWY0Yzk3YjRiMmEyNDc3NTlmYzMwYzE1ODZlODMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjViMTA0ZTQ1N2IyMjQ4YTRhZmEwYjE4ZjI1MDdiZGY5ZWIxYzEzZjkwZGEyOTZkY2RiN2M4NWRlNThjYmRmMWMifQ" + } + ] + }, + { + "id": "claim_10517316e4ba49a285ef27f980be70bc", + "statement": "The documented CLI put-secrets and get-secrets commands address system-local scope when given a system ID and global scope without it; get-secrets outputs key names only.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L147-L178", + "version": "repo-lines-v1:sha256:ca4e3b6440cd5fe8bd58f83beb5c5d69b9585d0ca01b949ea020ded79fbdab9c:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg5MmZhZDMxZTEwNWNiZmUyMDNlYWY3OGIwOTcxNzU4YzM0ZjlhYTA4M2ZhNzQwNDNlMjRlODkwNDQ4ZjcyNzAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwMjU5ZmY3MDNiYTUwMmI5NDYyNjVkYWM1ZDJmOGE1NDY3MWMwZmFkM2NkMDUyZWY5ODM2NzEzYmMwNmRlZmMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkyNzAyZmVlZDkyOTY4NzdhNzUyNDZkOTEzNmYwYjllYjNkMzQ3NWU2ZjFmMDdlNjRlNDM3Mzc1NWMxZGFjMjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMyM2RjZjBlOWIxMjhhMzU5YTI3NTc1YWY3Yjc4ZDAyYTBmMzA0ZjgxNzVlMTQ0YzNmNmQ3ZDJkMzU1NDMwYzYifQ" + } + ] + }, + { + "id": "claim_2e9b25257eeb454898d26742b384f987", + "statement": "Secret references use $SECRET(key) in supported System configuration locations only, with substituted values used as needed at runtime rather than exposed through the configuration API.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/secrets.rst#L6-L8", + "version": "repo-lines-v1:sha256:dc8c2cbde8550b40bb113bfaf8b31dd020e2ca274ae05bbf41854ae63cf39364:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWQ5MWUwYmZkNDQ1NjVhMzE2NGNjNGQzNjE0ZjJmM2I3YzAxZDQxZTcxY2IyOGJjNzdkZTdmZTVkNzZjNjQ3NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzI4NWJhYjBhY2ZjZGMzNjdmNGMzOGQyMjNkYmZjZmFiOThmMTEyOGQ2MGZjMjM4Y2UyYTgyNWYzODRmZWE2ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjhjMDNhYzdiNTgzNmNmNTQwMTRjMTBlNzlhNDZlOGY5ZjJjODdkZTUzNTE4ZjdiZTM2YjcyMmZjYTg2OWMwYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjIsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjIyN2E2ODA3ODQ3NWFkZjMzZjQ5YmQ2NDQzMWJlODMzZTI2ZmM3MDY3YTExYTBmOGIxOWViM2EwYjE5MDMzNSJ9" + }, + { + "resource": "repo://hub/documentation/operations/security.rst#L193-L253", + "version": "repo-lines-v1:sha256:6c01f98f0c7ece6257ef4148c357c5ab307741e301e0b33553f08b598366bcae:eyJzZWxlY3RlZExpbmVDb3VudCI6NjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU1ZmY1YzY3ZGJjNjVkZWRmMTQ4NTM4NDdhM2FiMTE3NTI0ODdkMmY1ZjkwMmRlM2EzNzFlZWJmZTBlZGZmZDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQyNWRhMGY3ZWExZTRjYjA4ZmQ3MmI2ZTBkOWNmOWM1NTk0MjBhOGNlMjExODY5YTAwMjFkOTRmNDI3NzRkOGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5ZWYyMDJiNTc1ZGRhNmVlYTU0Nzg4ODVkMWU0MDg5NGZkYzE0ZWM1OTEyMGJiZWQ1N2FmODU4ZDRlOWNmZjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_f663c553ca79418696e0c0fe989e8e4c", + "statement": "Environment variables use $ENV(variable) for nonsensitive configuration parameters, are global only, and apply to System, Pipe, and service metadata configuration entities.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/environment-variables.rst#L6-L10", + "version": "repo-lines-v1:sha256:b40f587f3f0f10e1812ba475ee9dcb0a739e00549e412f2de48934210dfe68ec:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODE4OTE3OWM5ZjhlN2RmMmM5ZDkwOTY5N2MxM2ViMDU1MGY4MDA0YzMzM2RiZjJmYWIyOGM4NDhjNTQ4NjM2NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDcwNzE3ZmYzYmQ5MDFiOTNiYThkZmY4M2RlZjBhM2VjMzQ0M2QwMzA2MmFkMmQ0ZWRlODVhZDQyMTI5MDUwMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjJiN2RiZGM4YWE3NTE2YWFkODcyNGM2MzgzNTQ0N2ZmNzE1NTBkY2EwNzViNmIwYzYyOGFjYjhhZjg3NDk5MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/environment-variables/environment-variables.rst#L6-L46", + "version": "repo-lines-v1:sha256:1e74dcf672f9060457886ed96e9a58dd23bf7c9447ef462731d4f5cf96bb6efd:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVhYjNjMDU2ZDliZmQ5NDRkMTNhYmRiN2ExMjg5MDYwZWE3NTBlMzM4ZTFhYmVhY2M4MTYyMGY3ZDRkNmQ4NGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJjZmVhZmM0NjRiZDM0NjA3MWEzZmU5ZmRkNjI5YjhmNDUxYzk4YzIzMDNiYjI1MGQ5N2EwNDcyNGI5YzgyMTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdkMTNmOWM3Y2E1ZWI0NmUxZGY2YTM1ZjlmMDI5NmU2ZGRiMjA0NGE3Mzk5ZDY2NTUzZGE5YzE3MTNiNzVjYjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY5ZDhmMDM5YTQzZDE4N2I4ZjFhYmU2ZWJhZTMyYWM0YzYwNzY0ZmIwYjMzODA0M2ViZTc2MzU4MWJjMzAxZDMifQ" + } + ] + }, + { + "id": "claim_5cc5be11d5f4450fa2beee55a5e1c15a", + "statement": "Multiple secret or environment references can be composed into a property and mixed with each other, but cannot be nested; properties composed from multiple references are always strings.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L237-L253", + "version": "repo-lines-v1:sha256:0d76d0ea537ae40f73e0ef9e0fa323d378d8f606a070b5ba0c84d7be9d9b1090:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZmZDFiNzg0MDM3YTcwNjU1ZWQ0NTcwMDZmM2IxNTQ5NGI5ZWVkNDFjNDkzNDNkZjllODUyYmE1NTEyMjgzZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQyNWRhMGY3ZWExZTRjYjA4ZmQ3MmI2ZTBkOWNmOWM1NTk0MjBhOGNlMjExODY5YTAwMjFkOTRmNDI3NzRkOGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY3ZmM0MGFkN2EyNTBhYTliNmZmZDEzMzZhZjQzN2IxZTRmZTMxMDZkZWExMGY4OGZjNzIyNWY1YTM4ZmM3YzUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/environment-variables/environment-variables.rst#L29-L44", + "version": "repo-lines-v1:sha256:748913f3c5d9c68599e1525b1db961ca2afffcda2ac1a83ed85fc32287106ece:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4ODg2OGQwMTY2YjUwMGNkZGEyY2E5MmFkYzE5M2M3MDVjZDA0OGZhNjE3N2YwMzBkZmVmODQ0MGZkNjE4ZTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY3MGQ4NmVhNWU5ODBmZGEyM2FhZDkwYzIyYWFlNTZmYTA0ZmRiZjg2NzM5ZWU1ZGZmNWY5YmQ0MDE4OWRmNzUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE2YjBmM2VjOGZiYWJhNDM1Y2JiOTM3ZDEzYzdkZDc3MGVmN2RiZDE1OGQyZGViNDNlMzY5NGE2MDRhM2ZkYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkxNjg4MjNmMjgwMjA1MmQ0M2Q5ZDQ5MzUwMmYwNzA5ZjhiYWY2MDgxZWRkNGU3NWJkOGZiMzIwMTkwNDdlYWIifQ" + } + ] + }, + { + "id": "claim_871e499d67a84d8289dc6ddf1c53be7c", + "statement": "URL systems provide HTTP/HTTPS session handling, connection pooling, and authentication for sources and sinks, and REST systems extend URL systems and inherit all URL configuration properties.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L6-L16", + "version": "repo-lines-v1:sha256:3b15c042c198bb110faf27b8c5570c99aea7ab59e86d74c71c6873042505ed26:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkNGZmN2JmMWQ2NGQ1MDI0ZjU4NzA2MzE2MTEzOWIxNmE2ZjY5ZTdhNmQ5OWMwYjkwYzg1NTQ5MDUzNzBlY2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIyNWU3YzFkOTdmZWFkMjYxZWI4NjI3NTk4MzgwYmU0NGU4NTUzNzA0OGRmZmE5YzEzMjQ5YmZjMDRjZmQ5MWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzODVlY2E0MjYxNDlkN2FhZTIyN2YwZDY2NjA5OTA4YzVkNmQ5ODhiOThlY2FlYjg2MTk3ZjZiOGMyM2I2NjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI3ZTNjYzhmYjIxNWQzNDU5ODA0ZWQ0MTM5ZjhlMjIxZjRjZWFjN2I4NDNmODk1OGI5ZmI4YjQwZDc1ZTRjYTMifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L6-L9", + "version": "repo-lines-v1:sha256:e99ce376b340573badc32d907dd59f0d30dbefcd445fe5daf959363ae249e813:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDlhMzlmYjdhMWI4MGJhNmQ0OWYwZTViYmNjYjNlNDgxNzAwNGIwZmZhODE0NjYyNmVlY2JiNzhiOTI2MzVhMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDIxMjJlYmJhM2NhYWEwYzA1MTI4ZDhjOWQ1MGY3OWI0NTM0Y2Y1MjkzZTY4YmMyOTE3OGY2OTUwM2VmZDk3MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDk0Yzk4Mjg4M2U2YzYxOGY5ZmYyMGE0MzU3NTM5ZWViNTE4YmExYzViNjQ4ZTM0MjI2YTE4YzMwMTA1N2E4NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2RiZjhhYTMxYWI2ZWVkNWM5ZGIxMzM5NDNlMzdiOTM1Njc3YWM1MTczNTlhYmY5NzQ5MjM0NjljOTEyYmMzOSJ9" + } + ] + }, + { + "id": "claim_79d4c7cd66c74a1299ac5fd1699f4019", + "statement": "Outbound URL-system authentication is opt-in with none by default; documented modes are basic, digest, ntlm, tripletex, and jwt, and a username requires both a selected authentication protocol and a password to have effect.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L101-L135", + "version": "repo-lines-v1:sha256:cc6b1414b03523c7f4947281c87866289028f1b609e960bb0b6589951cfa6857:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4ZTE5YzU0YTQ0NmM5NGEzNDcxNjMwODIyMjE5NzA2MGQ3ZWJmMGFmYWJlYzk3MWY1ZGM5MzU1YWY2MWYzZDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1NWNhMjJlMzY1Y2I4YWQ0NjkzMmY0ODY3NDVmODllOWEzMmYyNmJkN2IwZGE1YjFlY2ZiNGNlZWNjMmMwYTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_de10d1290a3d4c55b491d07c90b3ab88", + "statement": "Outbound jwt authentication requires jwt_token for the remote server, and using jwt_token overwrites a supplied Authorization header.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L114-L135", + "version": "repo-lines-v1:sha256:8f7a38d0a5f762dbecd34305b12e2f6fffd7a9a80f930d3bb6db126b6e9d3598:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQyZTM4ZmY5YTUzZDJjNjlhZDBjNzU2ZGQzN2Y3ZWI0NTc1M2NiMjhmZmJmYWY5ZDgyMzc0YzYyNDQ4Nzg3ZWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1NWNhMjJlMzY1Y2I4YWQ0NjkzMmY0ODY3NDVmODllOWEzMmYyNmJkN2IwZGE1YjFlY2ZiNGNlZWNjMmMwYTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUxZGZjZmY0OTkyYjFjZDU2YjlkMDk2ZGNjZjUzNjUzZjRmMDE3MDU1YWE4ZDI1MWUzMTU5NTBjNjQ3Y2FlMDYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_ea52a76814d94149b24150519ed954f2", + "statement": "REST system default header keys can be overridden by operation-level headers but cannot be discarded.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L105-L110", + "version": "repo-lines-v1:sha256:7174cc6c932a5d69e37e1cc5837c24ca6d3012426bc3b0573cd7ac84b8838a31:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmMzZDU3N2U1MDE1YmY2OWY0NzA4NWYyZjQ4N2QxYTEwY2RhY2NiYmRiYThjNTJlNGM4ZTYzYmM0MGQzZjM3NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODNhNGFjYzQ4ZmRkYjA0ZjA2ZjhkOWY4ZGZiYTYxZGZhNDc3ZjNiMjk4YjI5NDI5MThmNmYxN2FiMDJjNjI1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + } + ] + }, + { + "id": "claim_0ce2c9904fc04ef2be201f7af7c7c606", + "statement": "URL-system oauth2 supports client-credentials and refresh-token grants, requires client_id/client_secret/token_url, additionally requires access_token/refresh_token for refresh-token grants, and supports scope, extra token-request parameters, and a refresh_window defaulting to 30 seconds.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L141-L152", + "version": "repo-lines-v1:sha256:adf67eadf978b476846d16488df9b9a689238c4d347beaaa01618283617d7f05:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJlMDQyZDI4MDc4NTNiYTQ3MDNiN2EzNzUxNzBhNzIwMTUyYjMwZjVkOGVkMThiNTM0MjRhMjg3NzNhMzkxODkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxODk2MmVjMTM4YzU2MTg3YmY3MzJiZWI1NzljMWEwYjhhZDI4ODY4YTU1MDQ1NTUxN2JiNDIxYTdhN2VjNjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgzYmEyOWMxY2ExMmQ1YmM3Y2M5MDUyZTUwMTk0ODhmMzk1ZTcyYTY0MGViYzNhNDRlY2FiZTQxMjk2MmJhZDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_90ab8df0d51044638643c03d1a6f69cd", + "statement": "URL-system oauth2 cannot be combined with JWT authentication or jwt_token, and its contract requires TLS-secured transport for both the token endpoint and the target url_pattern.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L148-L152", + "version": "repo-lines-v1:sha256:c04613e181c3fb819c22b3a5ad11482e4289e1c5e2ece1851132a51a9e514ba2:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzA1Yzc1YmI0NDhlMDAwYTViMGZkMTYwMGI2Zjg5ZWYzMzNkZDAwYzZkYTI3MTY2MDJhNGI2ODM2NDE5OWQ4MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjE4OTYyZWMxMzhjNTYxODdiZjczMmJlYjU3OWMxYTBiOGFkMjg4NjhhNTUwNDU1NTE3YmI0MjFhN2E3ZWM2OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjlhNTM2ZTdmMGM2YTg0MjFiZGU3OWJjNzE1MzhmZGI3NjIwYzhiYTUyNGQxZmFiMmIwNDIyOWExNzJhOTJiMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + } + ] + }, + { + "id": "claim_0f31eb84a69441839f22d07c124241ce", + "statement": "Tripletex outbound authentication requires consumer_token, employee_token, and token_url, defaults ttl to 48 hours, and automatically attempts to refresh expired access tokens.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L156-L163", + "version": "repo-lines-v1:sha256:59c84ebc10a952ddaa12c101f02816987411fbeaccc5de9be5e6f928c4d620fc:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGYwYjM5OTJhNTVkZWQ3ZDdmZDc3N2FmY2YwNTY4YjRjM2Q1NWYyNWIxYWVlMTZmNDllOTEyYmRiMGU2NmE1YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjc2Y2U4OTc1ZGVlMTQxZDJjNjA1NTg2Yjg2NTY3MmNkMGIxMGEyOTEzNzM3YWQ4ODFkODliNmQ3MjIwNTQxNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + } + ] + }, + { + "id": "claim_902714f785b64ec789cc7f897aec990a", + "statement": "URL-system proxy configuration supports HTTP(S) and SOCKS5 proxies with optional embedded authentication, and the contract instructs operators to keep embedded proxy username/password values in system secrets.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L167-L174", + "version": "repo-lines-v1:sha256:c7ed218f4357937be9f96123fe11e0826d6ceb57a877c1fe62583e21225b81fa:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTAxMTVkN2U3MTRhOGIzM2Y3ZmNjZTdmYmM1NGE1MGYyOWU3MDU1ZWNmYmU3OGY5YjYxZTFhYzY2NTg4ZTBmMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2U4NjlhYjY5N2UwZmZmZWJmNjkyOWNjNTQ0YmZiNGFjNGUxMzk0NDA5NTY0ZTNmNGY1MGYwODRjNGQwZjE2YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + } + ] + }, + { + "id": "claim_f6078301134e485fb7e72ba5be72ef55", + "statement": "Experimental REST custom_auth uses a required get_token_operation and optional earlier get_refresh_token_operation; responses from both are available through Jinja's token object, while initial_refresh_token values are immediately available and later overwritten by fetched refresh tokens.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L488-L500", + "version": "repo-lines-v1:sha256:98b4bcd11a310177f36476b77b19e2020c865ec991a92f14a4d0a397a367a8ba:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2NDkzMDRmYjNkMmMyNDRlNzNkNjgxOWY4M2NhNmM4Yjk3N2NmMjdmNzZiZWM0MjMwYjhjN2IxMTM1ZWI1ZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVlMTA1MTAwM2MyY2I0ZDZjY2IxM2UzYmQ0NzdjNDBkMDIxOTczMmQwYTljYWRhYjA2NGY0NjljOGYwNzFiZDQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJlYmM4ZWIxZDFlOWVjMWNhMDk0ZjJhZjM3YTU3ZjkxYzUzMTUxZmM3NWM5MjkwYzA4YjQxNTI5NGFiMWQ3ZmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUwOTBmYzliOGIwZDdmNTcyYzEzNjRjMTY3Nzg3MGE2ZWI1ODdkNjEyYjM3NjI4NTllMDBmYmM3MDQ2NjA4NWEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L541-L544", + "version": "repo-lines-v1:sha256:2a626ca8b2f2b644714a855c15805341ad11d62f3759450b38c9213f17264eda:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTM3ZTFkNTAwZmY5Njg2MzUwYzAwNDBlYzk5OGNiOGE2NGU0MjcyMDUwZTA0NzQ1NmZhYWMxNWZmNTBiYzg3NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTc4OTFkNWM4ZGZkNTA2NGQ1YjdiMTZkN2I4Y2ZlZTU0YjE5ZmY5ZDlmOTk1MDQzZDc1YTIzNDViYzI3ZTYzOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmU0Y2RjOGQxYTlhMjliYzFlMDg2NDRlYjZjMTUwNDE5MTU0OTRhNzY1OTcwYmVjMDRkY2E0NzRjNGMyOTA0MCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L582-L599", + "version": "repo-lines-v1:sha256:3b776aef37eb1b63558537926f18c6cf062c0271de392fb8cd20d3e0f07f4c4d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE0NWVkM2VmOTc0N2JkYTA1YWM3NzM1YWM1YWEzZjE1MDYxZGEwZjM2ZmIwNDZhZjFiYTkwOGU5MmJkN2ZhZjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImIwYjZiYzIwYzBiYmE5ZGNlNjRjZDE3OTg5NDI1MzI2YjYzNTY3Y2VhYmZkMmYyZTMxZDlhZDBiMDNhYjVlZDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhiZDlhZmE3OTkzY2MyNGVlZTlkNDc2NDZiNWQwOTJmNGQ0YTk2MzJkMTEwZDVjOWFjMDUzZDY3MGRhNDRkYmEifQ" + } + ] + }, + { + "id": "claim_177b4a357e49467e9a0154243b1b04c7", + "statement": "REST custom_auth requires an absolute-date expires_at_expression or a seconds-valued expires_in_expression, gives valid absolute expiry precedence, defaults refresh_window to 30 seconds, and requires corresponding refresh-token expiry configuration when a refresh-token operation is used.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L549-L580", + "version": "repo-lines-v1:sha256:a6c9ac92c28b4a42b47a7163bba82710e17e797fef7a681bfd724083b7d206b8:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwNjBmYzU2NjMzNTkwYmYzNjVjNzM2NjNhMGRmZmY1N2Q2MWFlNzZlZTg1YzkyMGI0NTk2OGQ2NWUyM2YyZmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2ZmJjYWI1ZTFkNDA2ZjdlNWQ0NmY4ZTEyZjQxNTdhNzM2ZWU5N2Q5Zjk2OGI0NzMxZGFkMDQxNGI4ZThlYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFiNTZmMTc5YzFhYTAzMGUyMjA4MDQwOWEzZjU0YzI4M2MwNjk0YWI3NWI3YmFjNTBiY2U0Y2NkMTZjZDdlMjgifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L601-L613", + "version": "repo-lines-v1:sha256:1d6dc0f024b336c9de8a1957fef6b021a8e0200cde1b23f61bfbea97c1e397a8:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4M2U2Yzc2NThlNzM4MjJjNTQxMDg2Y2Q1YzBkM2ZlYzBmODNlYThlNDdhZTliMzNmYjBlNGUyZjEwN2FmMzciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwNjJjMjBjMDAyYmE0NDIxZmNiMWFkNmNhMDUyODhjMzA2OTliMzEwMTY4Yzk1NDhmMTc1NmZjZDlkZGM3YTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyNjkxM2VjMTY3OGVmMmE3MzkwNTc5MzMxYzRjMDVkMTQwZGVjYzBlMmI1MGE0MWE5NDg2N2NjZjk1YWQzNTkifQ" + } + ] + }, + { + "id": "claim_60d12f24a5fd4ffbaf7b427a9462bf29", + "statement": "REST custom-auth token response properties can construct business-operation payloads, headers, and parameters through the token object; access_token_property and refresh_token_property helpers are deprecated in favor of direct token references.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L615-L631", + "version": "repo-lines-v1:sha256:e4851ff9db4354dffe7384cf7a83599c3594b0eb2afd7ef8bb67070e832b7aa9:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJkYjZhYWExNDlhYWEzM2IwMmQ1Mzc5NmIwMWNlMDg5MzM5Y2Y2MGJlYTUyNzVjNTdjZmU2ZGZjN2Y3MzFhNjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU3NGVjMWVjZWM2MWE5NmM0ODE4MDdjNWI3OWNhYTQzOTM1OGJiOWJhYWUwYzBiNmYyYjE0YWU1NjQ1NjJjNjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5MmVhMDk3NDlmMGZjZTc1NmUwNWJmNTQ1YjQxYTNiMWQ2YTVkZTYwNWY4NDdlYzY2ZjcwYzExYzkzNTI0ODAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVjMmY0NzVkNzRlZmQ0YWJjM2NhZGUxMTI0MzhmYjdiZmQ2MjQ1N2U5YWU5MmEyZjVjODAxOWU4ZGYzNGRlMjgifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L715-L730", + "version": "repo-lines-v1:sha256:a83439c3dab5b69e0214cf7254c1475bda8e58d5aa93dfe9a6b9c2b0109f4b24:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJkNTA3YzY5MTg0NzhlMmM5NzdlZDRiNDgzYjY2ZDVkNDc4ZTIyZmFlZTEyNzk3OWNhMTFjZTBkNjBiMGZiYWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjMGEyMGU0NDQxMzEyYzM5YjhlZThjM2JiZjgxYzMxZTQ4ZjU5ZWZmODAyYzVmZTkwNTI2MmE2MjFiMjkxN2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk3ZDg2MzJlNTRlOTI5OGFiYjk1ODcyN2UyZDUxNDA4YWJhZjEzNjYwMzUzNzkxMDE0MGFiZjY1YjMwYWI2MTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg3NzZkYTQxMTU3ZjMwNTJiZTY3OGI0ZTZlZTQ4OWZjN2FmNTBiNmIzZjI0YzA1M2YzMTIzMjM3MmI3MGUwMGIifQ" + } + ] + }, + { + "id": "claim_670ca82ef1b34ce7a33c97e2c174b7c1", + "statement": "For on-premise single subscriptions, newly fetched custom-auth refresh tokens are kept only in memory; after reboot pipes fail if a new refresh token had been fetched, and initial_refresh_token must be manually updated to that new token.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L633-L637", + "version": "repo-lines-v1:sha256:22aca75f571bc90016365580cb65d10326c6e6907b7e6c6a7c34c429d60a1568:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzc4NGZlNDUwY2Q5NTk0NzQzMzc1N2RmODYwZjNkMWIwMThiMjliNjhkOWFkNjc2OTQ5MDZkNTZkMTQ1OTdhNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZWQzMGViOTc1ODUwOWMxOWIxYjhiMDU4N2VjZWM0ZTBiODZmNGUxZjZhNTFkYTc5N2FiYzk0M2EzMDZiNzViOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWY3ZWJhZDZkZmJlNmQ3NDFkZjg1YzZkNzQ0M2NhMDkxNTBjY2RkNzZmODZhYmJlNDRmNzcwMzkzYzUxN2JjZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2Y3ZGJhNGQ2ZmFiNjU4ZmI2YzBjMmJmYTQ3MDJhNzJmOTRiZjI4MTA5MWQ3NmIwNDVmZjYxMGU3ZDQwZWY2ZCJ9" + } + ] + }, + { + "id": "claim_2142e3dea0384fc48a332135ca3f6c1b", + "statement": "URL-system verify_ssl and service metadata global_defaults.verify_ssl are documented with default false; custom_ca_pem_chain supplies verification certificates only when verify_ssl is true, and REST inherits these TLS settings.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L354-L360", + "version": "repo-lines-v1:sha256:6065d87932888330946995c6dd4ade51d8d6191759478d8157ffd800d981d8c6:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDk5MGJkZmM2MjhlMDNlNjJmYjMzOGI2MWExYThiODU1NjcyNmMxMjgxODRmNzIzMTNlOWI1OWM1YjMwYzRkZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzc2YzhmMzM1MjgyYWI0MDdmZWNkZjM1NjUwYzk4MzUzZWY4M2Y5M2I2YjQ1MTQ3MWE0OTczNmRlNTUzMjRiZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTQ3MjllMzFjMzE5NDJjY2VlYmYxZTA1MjI1M2NlN2I2YjAxMzdlZWIyZmQwNmMxMjA3NDYwNjk4MGEyZGU2ZiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L15-L16", + "version": "repo-lines-v1:sha256:c75fe1a100a2b5f9d850e48fecf5a4a7561e7588f47781fe7a063bf7a8e83f5f:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTZkYjgwOTVjYTlhYTFkYmFiOTNmZDRiYmVmNjhiNzczM2U3Nzg3MDVhMjM5YTVmNGQ4NzUwNGJlNDNjNGJhYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjI1ZTdjMWQ5N2ZlYWQyNjFlYjg2Mjc1OTgzODBiZTQ0ZTg1NTM3MDQ4ZGZmYTljMTMyNDliZmMwNGNmZDkxZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTgwOTEzODFiNzM3YTExZWMwYzNjZDRjZTZjN2IwMzg4YTRmMzI0OTY5MjI3YWZkZDNlMzc4MDM1ZmExMDhiZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjdlM2NjOGZiMjE1ZDM0NTk4MDRlZDQxMzlmOGUyMjFmNGNlYWM3Yjg0M2Y4OTU4YjlmYjhiNDBkNzVlNGNhMyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst#L86-L97", + "version": "repo-lines-v1:sha256:261a57a04c1daf72643c05df723a612f3338d12c0aa633951b81b59091ff98e4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg1YzFjODk0MDBkYzVjYjE5NzM5NjM2ZWMzM2YzN2Y1ZDBhMTY1MTY5YzAxODE3ZjdjYmQxNTBiMDA4NmJhODEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJiNGIyODEyMDY2YmMwOTAwOTNjNDU3MmE4ZDRkYTMwNDM4NGRkMWYyY2QzYWM1MmM1ZjBjMTY1ODgxZDQxODkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_3b1f279fe89e4fd4beb4d9821a1cc5f1", + "statement": "The hosted architecture places an Azure Network Security Group in front of cloud services with only service-API port 443 openable, and a reverse proxy terminates TLS and routes traffic using Let's Encrypt-managed certificates; the single-machine description also allows user-provided certificates.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L113-L116", + "version": "repo-lines-v1:sha256:8125117c88cf0e1da14cf32f6eaecdb22ee183a3e074481eed5dcdc0588431cc:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTM4OGNiZjQyYzRlNTZlOThmNTQwOGZmMjk0ZDIzM2RjMjBkOTc4Y2U1Y2ZjOTY0Zjc4ZjZjMjUzOGU5NWI1MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjE1MDBhNTIzYjNjZjFhNzc3YTY3ZGQ4ZWRjOTIxZDI1NzU5MGRhYWM5NmQ5MDQ4Mjc4YjM4NGE5MGI1NDZhMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjQ2ZmNmMDVlZjdmNmFiYzU3M2Y5MGEzZTEwMGYzY2IzMmY4NzdjOWY5MTc5NDNjNWJmZmMxMzE1NTI0NzNiZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmIwYzc0NWZkZWZmMzdhOGQ3NzNlZGUxMDlhMjlhYmUwYzJjNjlkMzE4NjRmZmRiOTA0MmUyYzJjOGMzZDFjZCJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L27-L35", + "version": "repo-lines-v1:sha256:fa31b3277ba26e0ea5b29267cc7fcf1111ce8cb405a82f5fa40158db48a3b175:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTcwMzM0ZWRhZmNjZmQwOGNhZWQ2MGNhMGQ0OTkzOGIwNTJjNmFiNTJmZDYwZGUzM2YyMTA0ZjkzY2IwMWY5MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTczMzNkNWE3NTliMjE2NzZiZWMwZDIzYjdmODI0MWY0NzA5YTFlMjA5NmY5ZjQ5NmNkZmUxZWU5MjdhMjUyNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDRjODVlNzljMzU2NWJiYWY4ZTZlYzU2NDVkYTU1ZjgxY2Q1NzcxNjY4OGExYWE5NGJlMjAxNjM2NTkwNWNlOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTliYTQ4YzIzMzIwNmFhY2UwMTQ3NjIwMjYyYmVhMjZiYTFkMTUzODFjNDQ0YjlmNTUxYTZlZmNhNThkYWQ2NCJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L58-L64", + "version": "repo-lines-v1:sha256:d8b8e43c841da454a7bb936ca3b341cc1d9b45a42311162c4445039d7c650619:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDRjY2YxMDBjZjlkNGRjN2UzNjFhZTEwYzA4OGRiM2UwM2VmYmRjZGU0NzdmZDczMGRiNDk5M2I2MmFhYTBkOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWQxMjk5YTZiM2FmOTU4MDQyZGMyOGMyM2Q1NTViMWEzMTZhZjdjM2IzZDMzNDczN2Q1Yjc4YTE3NzFiNTVlZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2VhMTQ4M2YyYmVmNzM0OWFkNDQ0Y2E4ZGEwMTI3MTJjOTZhZGQzN2NhZWIyMGEwZDUzYmU2YjE3YmZhYWFhOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzhmNmM4NWQ3MTE3MGIyZDM0NGM2MGQwYjc4MzY0YmVlYjViMGFhMDk5NzQ4NmI1ODJmMTE3YjRlZmU3MjFiYyJ9" + } + ] + }, + { + "id": "claim_dd4aa2d3d05b4d449aa595384dccc02a", + "statement": "The network-policy feature supports blocking all public access or allowing only listed IP addresses/ranges; the described new architecture supports reverse-proxy IP allowlisting and custom pipe rules for public and restricted access.", + "evidence": [ + { + "resource": "repo://hub/features/network-policy.rst#L6-L9", + "version": "repo-lines-v1:sha256:84ce04e914127b16231844f8318ee8202c0d99878cd08b89526ba1865f5896ce:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWNlNWIxMGQwNGM3OTVjMTc1Y2JiNzMzOTdmNDg0ZDJhYTQzOGY2OTFlZmJkOWZkNjdlMGYzYzgyOGFjNWYxMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWEyMWYzYzc5ZGMyYTAwMmNlNGIyOTYzNDMxNGY2ODFkOTVkZTgwMzgxN2UxZTdhMGQxOWZkZGExZDJhZjY3NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzZhNGQxNWFhZmZmZjQ2OGUyYTViMGU1ZTdhYjk3MjE3YjVkMjZjZWM2MDgzZTQ3YTY2ZDcyYTA0MTY2MDE3MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_89b3ec2435e24595af62d07aa7fc8c78", + "statement": "The network-policy reference explicitly states that outgoing traffic currently has no restrictions, so that feature is not a documented egress allowlist.", + "evidence": [ + { + "resource": "repo://hub/features/network-policy.rst#L9-L9", + "version": "repo-lines-v1:sha256:1a21f3c79dc2a002ce4b29634314f681d95de803817e1e7a0d19fdda1d2af675:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWEyMWYzYzc5ZGMyYTAwMmNlNGIyOTYzNDMxNGY2ODFkOTVkZTgwMzgxN2UxZTdhMGQxOWZkZGExZDJhZjY3NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWEyMWYzYzc5ZGMyYTAwMmNlNGIyOTYzNDMxNGY2ODFkOTVkZTgwMzgxN2UxZTdhMGQxOWZkZGExZDJhZjY3NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjM2NTFjYTZkZjgxZDBlYzU5NjM4YTNmYzY4NWYzOTI1ZGYxZTk4ZDhmZDVlNDg5OTExOTE3YWQxNzBmNTdhMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_b43f748fc11f490fb6047924e46734ac", + "statement": "Portal network settings expose public-access and network-acl; a network ACL entry requires address and optionally supplies access as Allow or Deny and description, using an object format distinct from resource permission ACL tuples.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems.rst#L88-L93", + "version": "repo-lines-v1:sha256:b282f4da89c4557943f0163b6cce5405ee5bb22335bc4882be5376f85896783f:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2Q2NDQ4YWE2ZTA2ZmVjYjdmNDViNmE3ZTU5YzQ0NDI4YmYzMGEwMzgxNmNjZTczNTVmMTAxMGI1MTE0NWI5YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjc1NTMxYzM4MWIxYjg5OWEzMGU0YjcyNGNkNDA3MjVhNjFhZmQyOWM3NGQ4MTUwZjE0NTFmY2M3OTkzYzMwNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTYzZjU1ZGQ3MDBiY2EyYjQ3YWJhN2I4ZGI4ZmU0NDg4NGMwZmFhZGZkZmRmZTE5MzY5M2U4MjlmYjlkNzc4ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L3832-L3846", + "version": "repo-lines-v1:sha256:528211f95bd5f3b3c7bbb91010873958a49127a02d653d240fb3063c0d6e2dea:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNlNTQ0ZjE2MTJmZDk3Y2Q2NjFlOGQ4M2Q5NDUxYzZiM2RjNzQ0OWI2MWRiNDE4ZjgwOGFiNTNmOWIyZmQ2YjciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2YWJiYmIyNjgzMzcyN2Q0YmQ4ZDA3YzFkYTI4YjhmYTU5ZTk2ZDg2MzdhNGQ1ZjgzZTM2YTIzOGNiOTdiMDMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgyN2E4OGQxNWMwZDMxYzY5NzM0N2VhZGQwZDg3ZDdmNzRmZTFhZDllOTc3ZWQxZGQxMDMzMDlmODY4Yzk2ODgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY3NjA2YzkyZTYzOWZkNGQ0NDUwMzAyMzYzMzkyZGY1NjQzODVmYjI2NDJhNzUzYWQ2MGUzMDhiZGQ3ZjIwYTEifQ" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L4507-L4519", + "version": "repo-lines-v1:sha256:3a2396a3b50fa8e665edeb253ee8fdeefda187bba6452af3edf53a7bde503020:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmYjk0Y2I5YjU3NjE2YmFkYjkyZjk2YTAxMTcwMDJkMjViNDcyZWQ0NjBmYWQwOTJjOGEzZGE4MjkyMzUxMGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxMmE0YTY5NDFlMDA5NTlkMTAxMGVjOWIyZWFjOWQyZWNjMDJjMjFiOWJiNzZkNjFhOThjZTNlYzc1MTQ4YjQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUxZjM3NTcyNTgyN2Y5ZDEyZDI1YTQ1YThkYmZhODViNjA3MDBkYTAwZjhlZTNkNzU4NDAzMzcxNDk1NTgxZGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIwNDJiYmM5NGIxOTBmYjU2ZDNhNWIwY2U5ZjMxNGFlNzRiM2JhZTFiZWVjM2VmZjY5MmNlY2Q2NDVkZDM3ZGIifQ" + } + ] + }, + { + "id": "claim_47dd4a5ce95a4246ba99f4812acda6d7", + "statement": "The hosted isolation reference describes subscriptions on separate isolated hardware but subscriptions within the same subscription group sharing a network.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L108-L111", + "version": "repo-lines-v1:sha256:05b4bb3107530085634dbacaf161485344e5579f0a1cbe3dce88b90c7425b5e5:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDk1ZDkwODk3NGJkYjQzYTI4OGE0ZjUyZmMyMzhmNjdlMTU0ODMwNmZmMjRiNzYzNzBkNjE3ZTlmNTZiOTg5YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGFhMzVkYjQwN2Q3MjNhNDJhOTUzYjVjMzA1NTc1M2JhNjM0OTk0NDcxMGY2ZDI1OWM0ZTdjYzUyMTY2YzVhZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjNhYjgyOTM4MmVhNWI2OTMzZTM5ZDNjNjZmNzY2ZDA3ZTc0NDFjNGQzMWFmZTNjYzAyMzExMjBlOTY1OTEyMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTc5NTk0ODY3Yzg1NTMzMjNiY2YzOGRkYzEzOGNlMjcyNjhiN2ZkYzcxYmU0M2I5YWU2MzYxZWNiNjcyNDM0YSJ9" + } + ] + }, + { + "id": "claim_820de312f87545d08f20d35fcf971942", + "statement": "VPN uses IPSec to extend Sesam into an on-premises network, is enabled under Subscription Products in Management Studio, and requires configuring the peer gateway/address spaces plus the on-premises gateway address, routed address spaces, and a pre-shared authentication key; VPN has an additional surcharge.", + "evidence": [ + { + "resource": "repo://hub/features/vpn.rst#L8-L33", + "version": "repo-lines-v1:sha256:0b6d12b13f82cd61556abfd92a5e80a1f3d593bd09c89c1fac0c1db642e428c9:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ2Nzk4YTdlYTI3YTM5ZTQyYzgwNGQ3YTA3ZDAwZGY4YWE3MWZlYjNhZTg5YWQwNTBhMWZhMWM3ZjlkMjRhODkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU2ZDRlNTdkMWNkZGQ0OGQ0NTZjOWYxNjM4YzM0OTlmODA3ZDdjMDdjMmMyYTg5NjhjMDI3YThlMzU1ZWZiNjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJiY2JkYWZlZjZiY2JmMDc4YmIwZjE4N2M0MzFkNWQ1ZjI1ZDNjMTZiYmUxZGYyZWQ5ZDEzNWM5ODcwNTk4MjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU2MWRiYzliMmE5OGIwZjYxZTFlZWU3OWQzZWQ5MGVlNzgwODhiYzdlNTUyNmQ1MDQ2ZGM4NmY1NTU3YTJiOTIifQ" + } + ] + }, + { + "id": "claim_6f5b59daee6c428e8a3208fd145c8f5c", + "statement": "Developer subscriptions do not support VPN, while multi and flexi subscriptions support advanced highly available VPN setups with redundant BGP-enabled connections and custom IPSec rules arranged through support.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L8-L11", + "version": "repo-lines-v1:sha256:b103594defd9e8a4c4a0a5e1dcb4e71b8cc34f524deb19e9cb1fee95d34dafc3:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODNjM2Q1ODVjNTU1N2Y5MDI3ZGRmMGQxYjY2Mzg5M2QzNWQ0MThmMTZiOTlmY2QxNTk1YTE0OTM4Yjk3NDY3ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2RlYzY1MGEzNWI1NjFlMjFjYmIyM2FlMGQwNGRjNDU4ZjI2ZGZjYjUzOWU1NWI5MWM5OGEzZmVjOGRhMWU1MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2JlZjY2ZTY3YWU1YWQ1ZjkxZGUwNzgwNDlkZjdkZjhkOGQxYjIxOGVmOTUzMTJiMzg1ODNkNDRhZjc3N2ZmYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDEyNTZlMjI1YmFjOTI0MzY4MzVlYTllYTU0MjFjN2I2MzUyY2Y4MzRhY2I4ZTI5MzM2ZDM4YzVlYjBjZjVhYyJ9" + }, + { + "resource": "repo://hub/features/vpn.rst#L35-L38", + "version": "repo-lines-v1:sha256:559ee411f68e4bd43b1644541d11a0ab583859ab0a91ba5f7298d027a363900d:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWMyYjE0YmZlMzJjMDBhZTJkZjgwNmQ0NGQ2OWYzNjQ5NmYyN2IzZWI5NGI2NjcxZDk0NTE0YjY0ZTdlZjk0MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTFjMzVjZDNjY2M4YmNjMDViNmYzNDhlYmFjMGUwZmMxODk4YWMyMDEyODIwNWFiNWZlMzA1ODhjOGM3MmMwMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDgzNTY5YTZkNDFjZGU5NDRiYjIwNjkzY2JmYzQyMjVjMzA4ZjNkMWJiZjUyNTdmZTY0YTkyMGExMjdlYWU0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_86f7c0dbe1364450a3be79fc6f87e851", + "statement": "The dedicated BYOK reference documents hosted disks and remote geo-replicated backup storage as encrypted by platform-managed keys by default.", + "evidence": [ + { + "resource": "repo://hub/features/bring-your-own-key.rst#L6-L9", + "version": "repo-lines-v1:sha256:46630793384eea3622ac8db6001073aef2e53c1c8011551239c43d74be1a05ce:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjg3ODA5OGE2MTZjNTZiZmUxNDc4ZTQ1ZjE2M2ZmODJlNWY4YTNlYzA5YWNlZjI2ODBlZTQ5ODA5MjhlZGIwNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDVkMzQyY2YyZDQ4OTc3MzY0ODUxMDE4MzU4ZDk5NTZiMjdjN2JmODg2N2IzZTg4MTYzYzM2MTJmZmM1MWViOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzZhNGQxNWFhZmZmZjQ2OGUyYTViMGU1ZTdhYjk3MjE3YjVkMjZjZWM2MDgzZTQ3YTY2ZDcyYTA0MTY2MDE3MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_cb1c6dda8bd14fcf939ddb99e3d59863", + "statement": "The BYOK feature has Sesam manage a revocable encryption key, generally requires data to be reloadable after revocation, and is opt-in through support for new single subscriptions but not supported for multi subscriptions.", + "evidence": [ + { + "resource": "repo://hub/features/bring-your-own-key.rst#L9-L9", + "version": "repo-lines-v1:sha256:d5d342cf2d48977364851018358d9956b27c7bf8867b3e88163c3612ffc51eb9:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDVkMzQyY2YyZDQ4OTc3MzY0ODUxMDE4MzU4ZDk5NTZiMjdjN2JmODg2N2IzZTg4MTYzYzM2MTJmZmM1MWViOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDVkMzQyY2YyZDQ4OTc3MzY0ODUxMDE4MzU4ZDk5NTZiMjdjN2JmODg2N2IzZTg4MTYzYzM2MTJmZmM1MWViOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjliYWUwMWM4YWI4ZDBjOTVjY2I1MmFlMzVjMmNhOTAzY2ZjYjQwMTdlZjIwZmY1YTk1OTNhZTdlYmIwMWVjMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_a6b83dbdb27f45f6a5ac17c6b6c40749", + "statement": "The general hosted-architecture page says BYOK is not supported, while the dedicated BYOK feature documents scoped single-subscription support; this discrepancy prevents treating either as a universal deployment guarantee.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L15-L15", + "version": "repo-lines-v1:sha256:b50cafa646acb3e1bf7258f01347b013c09f2dc7498f6b32b866c2c841dd2853:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjUwY2FmYTY0NmFjYjNlMWJmNzI1OGYwMTM0N2IwMTNjMDlmMmRjNzQ5OGY2YjMyYjg2NmMyYzg0MWRkMjg1MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjUwY2FmYTY0NmFjYjNlMWJmNzI1OGYwMTM0N2IwMTNjMDlmMmRjNzQ5OGY2YjMyYjg2NmMyYzg0MWRkMjg1MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDEyNTZlMjI1YmFjOTI0MzY4MzVlYTllYTU0MjFjN2I2MzUyY2Y4MzRhY2I4ZTI5MzM2ZDM4YzVlYjBjZjVhYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGJmYWYwNDViMzUwN2MyY2Q0ZTliMzM1ODc5MjMyNjFhNTUzMzNkMDRlZmMyZWEwNWRiYzFlOWVjZDI0OTM1NyJ9" + }, + { + "resource": "repo://hub/features/bring-your-own-key.rst#L9-L9", + "version": "repo-lines-v1:sha256:d5d342cf2d48977364851018358d9956b27c7bf8867b3e88163c3612ffc51eb9:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDVkMzQyY2YyZDQ4OTc3MzY0ODUxMDE4MzU4ZDk5NTZiMjdjN2JmODg2N2IzZTg4MTYzYzM2MTJmZmM1MWViOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDVkMzQyY2YyZDQ4OTc3MzY0ODUxMDE4MzU4ZDk5NTZiMjdjN2JmODg2N2IzZTg4MTYzYzM2MTJmZmM1MWViOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjliYWUwMWM4YWI4ZDBjOTVjY2I1MmFlMzVjMmNhOTAzY2ZjYjQwMTdlZjIwZmY1YTk1OTNhZTdlYmIwMWVjMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_aadd6ec4ecd34f6e82f6e5e09db896c2", + "statement": "The hosted monitoring reference describes shipping service errors, health/status, kernel logs, and configuration without embedded data or secrets, and shipping the pipe execution dataset only with pipe monitoring enabled; entity objects attached to failing execution logs are not shipped to Sesam.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L88-L101", + "version": "repo-lines-v1:sha256:a084f783d8a116d48f837a6a26cb724d318c2a81ae6b1a577e442a3f748ad27c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRiZGZkOGIyM2MyNzkyZDBhNTgzMDI2MGUyYWMxNjM1Y2E1ZTIwN2QxNGU5ODIzMDc1YWZiMmMwMDFmM2I1ZDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxNTdkOTExOTcyNDk0MWNhYTQzOGI5OTU3YWYwYjQ3ZTc0NWRhMTlhMTQ5MTg0NmEwMGE2YWFmNDBiZGE1MjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjliZmQ1MGNkODA4YmRkYmZkOWFhNTZkMTE1ZjI0NDZiZDg1MjY4ZjE4NjMwMDI5ZjhkNThkYWE1NGFjNzBjZTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA3MDVhZGJmZmYyY2VjMzdiZWQyZDQ4NTQzNDdjMjA3MTY1ZDc3YzM3OGNhMGEwODQ2MmU0NmI0YmZjNzVmODMifQ" + } + ] + }, + { + "id": "claim_f1cb1236fc1547faadb7eb452e4aa415", + "statement": "The hosted metrics path pushes Prometheus-compatible resource telemetry from local virtual machines to Sesam for monitoring and operations.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L103-L106", + "version": "repo-lines-v1:sha256:caedfce9828556b3cc84cc6afc0413aceee32d3cfb330c28bc49384e976e8af9:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTMzYjVmNGE1OTk4ODc1NDM4YTk0NTg1YmUxNDc5Y2QxZTRjMDg2NTcyYjhmYjY2MjVkYTJjN2QxNDE2MDVmMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGY2OGUzOTkyNWU4N2ZhZTdmNDMyZDYxY2E1NjA0YWRjZjFjYTE4M2Y4ZTFlNWJhZjYwZDBhZWVjMThkNDM4YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmFjOGEyZjQ3M2VjZmJhNDgzZjQ1ZWE4ODFlMDYxNzljZDY5ZWVlNTU2N2ViNzhlNzc1NDkxODIwNGYxNGExNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzk4MDVmMmFjMmJmM2M1Mjg1YjMzYmM4N2RmNTQzNmE2N2YwNTk2MzI1NDA0OGUyNzMwZGI1MWEzZjhhMjU0ZCJ9" + } + ] + }, + { + "id": "claim_f3c96aed05d44248b83da2d3fd45cae3", + "statement": "REST and HTTP-endpoint tracing default to off and can record request/response headers and body prefixes in pipe execution events when enabled.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L299-L339", + "version": "repo-lines-v1:sha256:a56b51fb8782c7cbd9acea24634f5d06fd64636ad2c5801e372158f6371efd26:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkOWUwNWRlMWY0NjBmNWZjZGJiYWFlZjQyNzgyZTU2MWQ2YzUyOTgxZjM0NjQwODkwMTE3Y2YyNTA0YTE3NmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQyOGI1OGExMDdlNzQ4NDM0OTZjMmU5MGRjNjA1ODNkODNmZmJmYmRkNzllZTRlNGFmMDRmYjBkNzRiYmIyNzkifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-rest.rst#L79-L115", + "version": "repo-lines-v1:sha256:37cfdaab73c06ca08eb3180c2934aaf572e077cac0a7d9b0b98e455b2d56e56f:eyJzZWxlY3RlZExpbmVDb3VudCI6MzcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjOTk3MGI2M2RiYTI0OGVkMDBmYWJlZWMzNTFmODQ3NjQwMzZhN2I0YTVkMmRkMmQwZWRkZDhiMTQ5ZWNlYmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBjMmJlZTFlYTViNmQxYThiNDhmODY4MzdiMmE3YjU0MGI4YjI5MzJkOGQ3NTEzZDE0OTAzM2M0ZWY4ODNhNTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ4ZjYxZjYyMDY0NGNmZDFkMDY1MWZhNDZjM2YzMDAxOTVhNzY2YWI3M2U1YWVhMWM2OWQ5ZGFkNWU0N2M0NzUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L105-L150", + "version": "repo-lines-v1:sha256:f06cb180d887aabec167ba9408a4a50881977c90f6dcdd54952b9c4b43d3e126:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjOTk3MGI2M2RiYTI0OGVkMDBmYWJlZWMzNTFmODQ3NjQwMzZhN2I0YTVkMmRkMmQwZWRkZDhiMTQ5ZWNlYmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBjMmJlZTFlYTViNmQxYThiNDhmODY4MzdiMmE3YjU0MGI4YjI5MzJkOGQ3NTEzZDE0OTAzM2M0ZWY4ODNhNTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYyMmYzYjhlODgwMmQzNGUwMTRlZDk2Y2E0NjQzODk3MzRiOGQyMWM4YTI3N2FhNWE2ODBmMGY0ZTUwMDE1MWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdjNzVkNzBjMTA1NGJjZGIxNTU2NDUyODIwYmQyZjQ1ZTA0ZWRkMjVjM2U1ODVjMWZhNzZiMzgxMzIxM2JiMzcifQ" + } + ] + }, + { + "id": "claim_d55c043eeeb34f4aab19a2a68ec2cb74", + "statement": "Despite the security guide's ordinary secret-substitution nonexposure promise, REST and metadata trace redaction is explicitly best effort with possible leakage; log_secret_redacted_bytes defaults to 600 and -1 requests full redaction, while HTTP endpoint tracing describes that setting specifically for the Authorization request header.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/security.rst#L234-L235", + "version": "repo-lines-v1:sha256:e8f4543fbcdd5d9bfdcd86400c92dc37bb020b6d3d20f33d884d416a06d0e4a9:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTZhYzEyM2JmNDQ3NWMzN2RkYjgzOTJjNDZiMjQ4ZWViY2JhZTI0N2I4NWIyNDUwNTg1Y2MwYzIzNTY1YTEzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjlkN2YwMDUzMjljZDI2M2Q3YjkzNzVlMTRlYmQxMmY5NjQ0YTA2ODNlMzVkMDk4ZmE1OTgwNGU5ODQyOGE5MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDE3ZDU3OTg5ZTBmNzk2ZWQyOTI1ZDYxMWNkMzRkZTYxNTlhZmNiOTgzMDExMDJjOTY1ZjJmNDhiN2Q4NzIyNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDI2NWYzNDg0ZWE5MzVhZTYwN2EyZjJlNzU1ZDFhZDY5MmVkODM2NzU1N2E3NjdmZTNiYTk3OTRjMmM2Zjc0MiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L341-L352", + "version": "repo-lines-v1:sha256:b66f725e96765c5820b8c2495a3979724610fe385559e43191743b478b898098:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImExOTM0M2Q2ZDhlMzk2MDc5Y2RhNzc4N2MxNWU2OWJjZGRjZWM4ZTNiZTdkOWU4MzJkOTg0MTY0YmU5NzUxNWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5YWQwNzZkMzdlNjE1ZWYyZGY2MThjNzk2NmU5Njg4M2I3ZWJmZDE5ODhhY2U1Mjg2ODBiMTM5YjVmMjlkNDIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQzZjE2MWZiNmEzZWZiNDA2OGRkZmVmNDRmNjRhMjg3MjNlMjZhMjg2NGIwNDI1MGQ2ZmY4NTdiMDA0OTg1N2MifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-rest.rst#L118-L128", + "version": "repo-lines-v1:sha256:c3fae1922c79da13df5a9f5d8449f6262829ff3be132916beac7c58f3f23134e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1NzM4NzJkZmIyMjkzNDlmZGU5MzJlODBiZjIwYTM5NGU1MDBiYzM4OTBjYjk0Y2FlYzg4Y2RkOGUwYTQ3NjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5YWQwNzZkMzdlNjE1ZWYyZGY2MThjNzk2NmU5Njg4M2I3ZWJmZDE5ODhhY2U1Mjg2ODBiMTM5YjVmMjlkNDIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM5YjMwN2I3ZDAyZTI2N2E5MTk4YmFmNjIwMGJjMDMyMjU5OTlhNjM1NjlmNGM2MWI0ZDg5ZjE1NzAwZDU0NDEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L122-L130", + "version": "repo-lines-v1:sha256:8b41e42f0f4b2e35d54105fcf729188210d6dda79566b575cd3f4739f9537750:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzU3Mzg3MmRmYjIyOTM0OWZkZTkzMmU4MGJmMjBhMzk0ZTUwMGJjMzg5MGNiOTRjYWVjODhjZGQ4ZTBhNDc2MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjIyZjNiOGU4ODAyZDM0ZTAxNGVkOTZjYTQ2NDM4OTczNGI4ZDIxYzhhMjc3YWE1YTY4MGYwZjRlNTAwMTUxYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjJiMmEyODczNGYxYWIyYTU2NDcwMDI2YTgxY2NmOWI4YmM2NTVlZjNiYTI3ODQ1OTM1MjQ3ZDgzOGFlYjE5OCJ9" + } + ] + }, + { + "id": "claim_297c2f27b6724d5bbc06d8295120fd79", + "statement": "Subscription termination deletes subscription data and backups except for the documented single-machine Azure backup retention of 30 days after deletion.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L118-L121", + "version": "repo-lines-v1:sha256:7f2fd85dbb1a678b83d58ec9245bf319100e9d5666f78ebde089d5b705fce560:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWE1OGQ0Y2I1NWVhOTNmYjVmYjYxNzk2OGUwYzU0NjcwNzIyZTdlMGJhOWU2MGRhM2FiZWExYzEyYzU1OTg5ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2I0ZDQ3ZDUzOTNlMGE0MzEzN2RlNzJmODMxNTBlNDZmYjg5ZGMwZDViNmJjYjg0NjM0YTk5NjY3NWRhMmQ3ZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGY0ZGY5Y2JhMDFmNjE1ZWFmNWI5MGFiZWFlMjE5ODRiMTM0ODZjMjAyZGY0MmE3MWU0MTRhODliODhkMDhhNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODczNDEwNDI2MDc3Y2Q3NDEwMWNmNWUwYzAxMWZiYmU0ZDhjZjg1OWQ2OTZmZDBmMGI4YzNiYmQ2YThmZmJjZSJ9" + }, + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L45-L51", + "version": "repo-lines-v1:sha256:cac7222890e58e0b487aec0141923a510bc66c371c4d094cf347a1d952d9c84d:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTlmNTlmMjIyNjZjZTNlMDNhZjViN2ZhNGIxN2Q4MjkxNmZhNDMwMjFhMjQ4NTA2NzNkOTY3NDMxOGVlNTRiOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyM2M3ZDRjNzhkOGFlNTg1N2ExYmY3NTMxZmMwYTdlMWYxNjBjOGExZmJjMGRiYmVkNTYzMGQwNmRlNmVhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmFkYjZjMjUzYjBiMWYyMzY0MzBmYTFhN2M2N2E0MTBkOGY4NzljOWNkODQ4ZmY4NGM1NTg0MDM0Mzc4MjhiNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2VlYjQzNTYwZjBhNDNiN2ZlZGFiZjQ2MzQ5NmE4YTU4ZTE2ZTA5N2VmNzQ3MTg2NTA0Y2QzNWZkMzY0YzE0YyJ9" + } + ] + }, + { + "id": "claim_1ccfe9a1454c46cbac64277f624b9e2d", + "statement": "For self-hosted services, the owner is responsible for off-site backups of checkpoint directories or the virtual machine.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/behind-the-scenes.rst#L51-L51", + "version": "repo-lines-v1:sha256:4123c7d4c78d8ae5857a1bf7531fc0a7e1f160c8a1fbc0dbbed5630d06de6ea7:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyM2M3ZDRjNzhkOGFlNTg1N2ExYmY3NTMxZmMwYTdlMWYxNjBjOGExZmJjMGRiYmVkNTYzMGQwNmRlNmVhNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyM2M3ZDRjNzhkOGFlNTg1N2ExYmY3NTMxZmMwYTdlMWYxNjBjOGExZmJjMGRiYmVkNTYzMGQwNmRlNmVhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMThmYjE4NDQ2NmNhOGRkYjNmYWU2MjFkMzdlMjJkYmFiN2EwNDA3NmZkYmEyMzdiNTNmZDAyNjhlZjk0ZWNhZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2VlYjQzNTYwZjBhNDNiN2ZlZGFiZjQ2MzQ5NmE4YTU4ZTE2ZTA5N2VmNzQ3MTg2NTA0Y2QzNWZkMzY0YzE0YyJ9" + } + ] + }, + { + "id": "claim_743c21320a824611842f910dd89a8116", + "statement": "The CI guide requires a designated CI node and serialized tests because testing overwrites configuration; the CI node must be unable to write externally and at minimum must lack the variables and secrets needed for output-system connections.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L7-L24", + "version": "repo-lines-v1:sha256:2bca9d22996e089efc3c41270a559bc9639ef5c0894312477915e1887d36bdc1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5NWQ0OTIyYjgzZGRlZTFkODI2ZWNhNWFlZGYyNTUyNTVhYjZhOTlmYjljZTBhNTcwYTE4MTFlNjZmZDQ4ZGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzZjNhYTU3ZTRmM2M3OGRmZDVkZjRhNzQ5ODJiYjQyZTNlNmE3NDllYTlhMTgxNmU1MzkwMjgxZTgyOGNhZDQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU4MjMyOTcxYzUwMTJkZjU1ODc2MDZiOTRlMjVhOWI0Y2VlOTA4NDQ1MzUwODlkNTEyZjkzMTk5YjA0MDQwY2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFiZWYwNTRiMjAxMjEwNGZjNDE1ZThlMmNiNTcyYmRkMzZhYzBiYWQ4MGE4MjlmYjI5YjYzZGE2YTQ0ODZmYmIifQ" + } + ] + }, + { + "id": "claim_2d22b29da39f453f8ad1e18e2281a211", + "statement": "The Sesam client is intended for personal testing and CI/CD subscriptions, permits only one client command instance per subscription, warns against manual changes while it runs, and explicitly warns not to run it on production subscriptions.", + "evidence": [ + { + "resource": "repo://hub/sesam-client.rst#L21-L36", + "version": "repo-lines-v1:sha256:a50b2ae619290e67be7b102eaccddc74ba64dba970c76db18a24b5691f49cf3c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgyNjk1ZjU2YmU0YjlhNzczYjhjMjVhNDgyOGYxMjdiOWZjYTY4M2EwYjMzNWYzN2VlZTI0YzkwN2Y2N2MyZTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxMGQ0ZTdiNmYzMmYxMzMzMGM4ZTE0YmU4ZGI0MTcxMjMyZjI2ZGQ1MWZjYTU4MzNjOWFlZjhiNjBlZTdiMmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjljZjRlNGRiODMxY2M2ZmQ5MThmNmQzYjZkNmYwNjg2MThlMzQzYWE1MzhjOTRjZmU5MzIzMTdkNWE0Y2IyNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE3MDExNWIxZGU0OTU2YjM3NTA3NjE2NzkxZWRjMjA3OTBiY2M4ODc0M2Y4NWZmYzIxYWI5ZmRlOWJiYzk5ZmUifQ" + } + ] + }, + { + "id": "claim_21ea2389401b4f678f6fccbc82d6a833", + "statement": "Local configuration testing guidance requires output pipes to be disabled or unable to send to their external systems while the other pipes are run to completion.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L9", + "version": "repo-lines-v1:sha256:bd64e696390e5fc902c522bbd9dc446b7baadc0ff24dfc204a731c810c699c20:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOThhYmRjZjJiYzkwODIwNDYxNTkyMjY2OGU2NWJkNmQ4YjdmMWM5YTRmNzE0NTcwMjY1YjhlNjdiODdhMmMyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjg4NmNlYWUxMWVlZWE4Y2YwYWFjNjkyMzA4OTU3NGUxMDA4ODlmMTU1YTBiMTQ1MTlmYTQ5MzI1NzVhMTk0MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTkyYTJiODM3ZDY1MDE4ZDA0OWM4MmE0ODBmZTgyNWU1OWZiYzEwNGM3MGUzNTIwM2Y0OTA5NmVmODg5YjFkMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGE0YzI4N2VlMWJiZTAyOWNkMGQxYWE1M2E3YjI1NGIyNjY5Njg3OGU1N2NmZjVlMjM0YzIyZTAyMzZhZGVmMCJ9" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/quickstart.json b/openwiki/.claims/quickstart.json new file mode 100644 index 00000000000..ea8742a96c4 --- /dev/null +++ b/openwiki/.claims/quickstart.json @@ -0,0 +1,522 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:6d58cf743a11399cee784124a710442562920521ebc778d3180e6486da80714c", + "claims": [ + { + "id": "claim_7206aca9b37b4234889bc8a620d44a19", + "statement": "Sesam Hub is documented as a Master Data Hub for making up-to-date master data available in a data platform architecture.", + "evidence": [ + { + "resource": "repo://hub/index.rst#L3-L7", + "version": "repo-lines-v1:sha256:62cf72729c860cc25aca63b1b62da2d936a25d9aee8e10290ba822a198d636b9:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGJmZmQ5ODA1YjIxMjJhNjQ4NTU0YmExNDY1MDllMTYyZDg5ZWM0MDExODcwOWIyMjE1MzIxZTc0NzYzMTkxYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjExMDFiZDVjOThlYjAwNjQ0NDFlN2YyMmRjYmViNDRmNWEyYWI3Y2Q1MDBmZWRhZDk3NmQzYWMxYTkzOGQ3MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjIsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWMzNDZkODVhYmYyMzU2ZGU2ZTUxNTNiMWU4YzNiNzYwZmMwMGJmMTY2YTYxMzcwYTY4ZjM0ZjIxODk4ODcyMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGNiYTJmOTgyOGM4MGEyYzM4ZTI0OTY2ODk4NGNkY2I2MzJkNzYzZDY4ZmFkZGY4ZmU1ZThlYzI5YmQzNGVlZCJ9" + } + ] + }, + { + "id": "claim_a11b1c3a6fcf4032a91c563752202161", + "statement": "This repository is the Sphinx product reference for documented configuration, data-processing semantics, APIs, tutorials, and operations, rather than the implementation of the processing runtime, Portal backend, or Management Studio; editing the reference does not implement a runtime fix.", + "evidence": [ + { + "resource": "repo://Makefile#L62-L101", + "version": "repo-lines-v1:sha256:c398193f412c09dc91d89bdcb05a981d96ca60a61b39618abf4045996f140918:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4OTM4OWVmMmRjYjE5YjZjMjRhMjU4NTU4YmZlMGMwM2E4MjY3N2M0ODU0OWU3N2U3YWNmM2M3Mjg3ODI1NWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1MzlkOTIyM2U4MGYyNDkwNDhmZDk2YjQ2MTExMWQ2MTVlMDVjMGZmNmE5MzZhOGUxMjYxZTk4MTRhZjZmMjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc1ODYxOGM5NmZhZWNlNzBhMzkyOGVjMTYxOWZmNDk0NmVhNDJjZGViZWZjOGE5OGI0NTc1NmJiZTcxNjhmNDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIxNDEwM2Q4NTEyYjA5NGZiZDY0ZTk1NmIwN2NiZDg2YmNkOWRjZjliYTI0M2JjYzgyMjFiMjE1OThkOWFhMTYifQ" + }, + { + "resource": "repo://conf.py#L29-L66", + "version": "repo-lines-v1:sha256:cf4ae725f68d7097c981a178c135e6668c18bbf4e01687893b93df1bc16792fa:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYwNzJlYWFmMzZjZWM5YTc5MzMwM2IzZWIyNmZkMjg1NTUyNTkxYTU5Yjk1MDVlZjg2NzdlMDRmM2NkZjc4YzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE2YWExYjQzZTc4Mjg2ZWRhNjM2NzQ5MTdjMjQwZDNhMDMxN2IzYzNkY2JhMjliOGNjZTYwMjg1NzU4YmJhZWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJhZDlmZGMwNDM4NjJlYTAzZmJhYzhkNzIzNjQ4NmRhZTUzMDVmZmI4YzM5MDZmNWNmMDBkNjdkNDgwNjRkYjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEyMzY1MzYzNTYzMjdiNzIxZWRkYWQ3Njg2ZDgzZTlhY2I2NDdiYTkxYzc4MDFkNGY4OWM1N2Y5ZTE0Y2Q3OWIifQ" + }, + { + "resource": "repo://hub/api.rst#L223-L237", + "version": "repo-lines-v1:sha256:dacb0e40a83472968be7a2746a566428d4f908d54aae0313d5c88e230b3da77f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ4ODg5ZDM4OWU4Y2FiOWFlMWZiOTdlYzRhOTE3ZDBhZTIyYmM2NDA2ZjhkMzg5Zjg0N2NkNmFiYzA3MWE4MWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmNGYzYzRmNGU3OTg5YjZlMWViMDVjMjhiMGMyZTc5OGYyNjQ5YmI1Yzk5M2Q2ODIwODAxYWJmNTRkMDgwZGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjExOWYwZjQ1YjcwNmJmMmE5NTE0MTBiMTE5M2UzODhlNTViOWIwZWNiZjk5OTY0ZjQ2ZmE2YTM2ZDM5YTdhNWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVlNTc1MWEzYmQyM2UyYmZjY2FiMDI5NjgzMTZiYWMxMjljMDU1YjM5Mjc4MWNlMDUxNTEwZmE5ZGUwYThlYTMifQ" + }, + { + "resource": "repo://hub/index.rst", + "version": "repo-file-v1:sha256:f4efabc7bf8aa14b5a1d3d434d4f33c9e06b3b62ef68b2d2c5259675a0440a69" + }, + { + "resource": "repo://hub/management-studio.rst#L9-L16", + "version": "repo-lines-v1:sha256:f77cb8d92961bfac8b28b4876fbeea9590d99695c4fa837b99aaeb7aa33ae419:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2ZhNTNmYzBkYWI4ZWY5NmQwNWQ4ZmQ0YzdlNDFiNDkwMTgyODAzNzI1YzY3Yjg2YTUzMWUwOWVmZmM1ZmE3NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzg1ZGZkY2VkN2M1ZmRjM2FmOGVmNjQzNTA4MjVmNmNlZTUxYzQ4NzAwNjllMzg1MmY4NDFlNGQwZmNjYzQ3MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDUzYzQwYmIwMjBmOTQwODViMjg4MjZhNjFiMjM5ZjMxNTM2NmM4ODg3ZjkyOWY3NDE2MGMwYzQzMjliOTJkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzRjOGQwNzEyYjY0NGM0YjE3NDU5MDc3ZmFjYWFhNThmYjgxOTQ0MDk3ZWY4Y2YwZDY2OTUwOGNmMjVmMjVjOCJ9" + } + ] + }, + { + "id": "claim_fcb40a60ebba461695e638462fae8730", + "statement": "Sphinx uses .rst authored sources and hub/index as its master document; the root index.rst is marked orphan and conf.py redirects index.html to hub/index.html, so the Markdown wiki is not the authored Sphinx entrypoint.", + "evidence": [ + { + "resource": "repo://conf.py#L40-L66", + "version": "repo-lines-v1:sha256:09aab1539630690601cc268ea7b4d08e1bbcc8cbf022951124429b3377f081b1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzNGRkNTJjYjFmM2NhNTQ4ODE2N2VhZTE0YTEzNDRhY2VlZmM4YWZlNDdjZmEyN2JjOWZkZGQ1MzkwY2UxNDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE2YWExYjQzZTc4Mjg2ZWRhNjM2NzQ5MTdjMjQwZDNhMDMxN2IzYzNkY2JhMjliOGNjZTYwMjg1NzU4YmJhZWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI4MDQxMjFkMmRmOWIwYjAwNDgwM2U3OTg4ODdkYTIxODhhNTU0YzM5NTU4MmU1MTgyNzA2YjhhYjBlNzFhZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEyMzY1MzYzNTYzMjdiNzIxZWRkYWQ3Njg2ZDgzZTlhY2I2NDdiYTkxYzc4MDFkNGY4OWM1N2Y5ZTE0Y2Q3OWIifQ" + }, + { + "resource": "repo://index.rst#L1-L6", + "version": "repo-lines-v1:sha256:0707137736d749fde66f595af9af3e93cf6fa0ead1168214e9f99fe72061153e:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjkwZTNmNzA3ODA5ZGI3ZDkyOTk5OTZlNjg5ZDYxYTY2ZmQwYmFhODQ1ZTBhMTFkZGYwNzc4N2JmMjY3MzExNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjU3ZGQxZWY4YTBiZWM1YThkM2QwNDYyMWUyYmVkZjkzOTkzMDhhOWQ2YWJlYWI2MjEzZjdiZmZlMWNmN2MxNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjljYTU3MGM0ODc2ZDZmOWVmMzY2ZTcyYzBkZDU2YTFhZDU2NDA0YmE2NTEwNjU0OTQ2NGFjYTNkYWQyMjM3MCJ9" + }, + { + "resource": "repo://requirements.txt#L1-L4", + "version": "repo-lines-v1:sha256:74bb9aa0a9bccde98fe92ab24b21529d061ab7cb3a34141930ff63236c98200d:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzZkYmRkMjc2NjRjNjlhNDBkYjQ5ZTkwYzc1MGRjNWYwMDMyMTFiNmZmYjM2Yjc1N2E0YTI5YTEwNzg2YjY3YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjA0YzFjYzcwNGUzMzdhYjgyZmE3NjllZTY5MTUyMTY4NjExMTdiNTkyNTRjNzE4Njk1NTc0ZmY5NGFmNDk4MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzE4NDM2OTYxMzYxZGE2Yzg3YWJmZWM1YTQyYjRiYzU3OGQ4NjlmZDZiNDJlMmFhMTBlZGNiOWJlOTA5NDkwOCJ9" + } + ] + }, + { + "id": "claim_8fb1ad189fa5446a8b480b6ba22a3138", + "statement": "Management Studio configures, manages, and administers Sesam subscriptions and is accessed by selecting a subscription in the Sesam Portal, not by building this documentation.", + "evidence": [ + { + "resource": "repo://Makefile#L90-L101", + "version": "repo-lines-v1:sha256:4c0e828943e9f48b6efd67dcb0370c043a442f6655edb7d1b30ecd25d0bda27b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjY2Y0MjVkODNlZmUzZTdlYTA3OTAxOWM5NTJlZjM3ZDI2YTk2OGFmMDU1Yzc5NjE1NTA4YjBkZjgyOGIyNjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1MzlkOTIyM2U4MGYyNDkwNDhmZDk2YjQ2MTExMWQ2MTVlMDVjMGZmNmE5MzZhOGUxMjYxZTk4MTRhZjZmMjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ0NTUxMzljOGQ1YmE4NzQzMWNmNjQ3ZGQ5MWM0MTBkZTQ1YmYzYTg1ZTcwOTg1ZjY0NWRlNmViODc5NmNhMmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIxNDEwM2Q4NTEyYjA5NGZiZDY0ZTk1NmIwN2NiZDg2YmNkOWRjZjliYTI0M2JjYzgyMjFiMjE1OThkOWFhMTYifQ" + }, + { + "resource": "repo://hub/management-studio.rst#L9-L16", + "version": "repo-lines-v1:sha256:f77cb8d92961bfac8b28b4876fbeea9590d99695c4fa837b99aaeb7aa33ae419:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2ZhNTNmYzBkYWI4ZWY5NmQwNWQ4ZmQ0YzdlNDFiNDkwMTgyODAzNzI1YzY3Yjg2YTUzMWUwOWVmZmM1ZmE3NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzg1ZGZkY2VkN2M1ZmRjM2FmOGVmNjQzNTA4MjVmNmNlZTUxYzQ4NzAwNjllMzg1MmY4NDFlNGQwZmNjYzQ3MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDUzYzQwYmIwMjBmOTQwODViMjg4MjZhNjFiMjM5ZjMxNTM2NmM4ODg3ZjkyOWY3NDE2MGMwYzQzMjliOTJkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzRjOGQwNzEyYjY0NGM0YjE3NDU5MDc3ZmFjYWFhNThmYjgxOTQ0MDk3ZWY4Y2YwZDY2OTUwOGNmMjVmMjVjOCJ9" + } + ] + }, + { + "id": "claim_b1ab03b003e64813a3e896f3c4e32e5a", + "statement": "Sesam consumes and produces streams of entities, which are JSON-like collections of key-value pairs with reserved property names.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/streams-of-entities.rst#L3-L6", + "version": "repo-lines-v1:sha256:1fe5e7807f772de9dbbf48e4d04106dfbce9a6eadb6be601b19bce51f2e08e3c:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTk0OTk4MDM2MDgzYWQyNzVkNTEyYzAyNWY1NjExODFlODdlMTYxNzZlY2EyYzg4YWNhNzY0OTY2ZmE2MGI0YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjU4M2FjY2MzOTg4NjBmMjlkNWVmZmI3N2Q3ZmY2MTdjM2I4YmUxNDM3YTY0MTI2MThmMGZkMjYwNzlmOTU2MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjIsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTUwZDU2MzA4ZDRiZjJhMjA1MmYyODQ2MTdiOWNiNGM2MDIwYmJjNTA0ZDU0YjE2M2ZjMDMzOWNiZTJlN2RiYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTY1ZDYwMGQ2ZGNkYzhhODkwNzIyODQ1NjljODA4NWQ3MTE5NjQxMWMwNGEyYzZmNjEwNzZjYTliMmMzYWM5ZSJ9" + } + ] + }, + { + "id": "claim_70be9e0cd1104fdd82c431fdf50240b7", + "statement": "Datasets are indexed entity logs used for storage, and content hashing appends an entity only when it is new or different from its previous version.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/datasets.rst#L3-L10", + "version": "repo-lines-v1:sha256:b1fdcfa4258350c36784c430b1b19ead5ecb8280fbdba0fd3d52ae3c29fb5aa2:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTMyYmE4YjE2MjVkZWQ0NGIzNWNlYTZjZjhkOWFmMzAyNjcxZGU0NTM1N2I0NzM0ZGZjMjRjZDVhNzNiYWNhMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzIzNDdlMGJlYTcwM2MyOWY2NTAwZmFjODE0ZmI0N2NjNWQ5NTY5YmU5NDQ3NmNmZDQ4Y2Y2YmZlZjllOGY4MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjIsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjA3YTc3YzJiN2JjMGMwYmVhNTMyOGZjNTgyNWNiYzU0OTEwYzk4MWU3ZWNlMTQzMDk3YzY2NjlhYzJkMTE4NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDU4MDQwOGZkMGYxODllMGUwMTA0NjcxNTRlZjRjZTQyYjBjZjVjZjQ4ZDk3YzA4MjFlNjI1MzRkOGI2YjNjZSJ9" + } + ] + }, + { + "id": "claim_35b525958d8043908d1ac8b8578609b2", + "statement": "A pipe combines a source, transform chain, sink, and pump: the scheduled pump moves exposed entity streams through transformations to a sink, and DTL is the primary documented transform for joining and reshaping data.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/pipes.rst#L18-L18", + "version": "repo-lines-v1:sha256:b17752e96e02a4f5c9d2194d9da8d8e1e12cfa418bd66439ed8a0b179ee450b8:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjE3NzUyZTk2ZTAyYTRmNWM5ZDIxOTRkOWRhOGQ4ZTFlMTJjZmE0MThiZDY2NDM5ZWQ4YTBiMTc5ZWU0NTBiOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjE3NzUyZTk2ZTAyYTRmNWM5ZDIxOTRkOWRhOGQ4ZTFlMTJjZmE0MThiZDY2NDM5ZWQ4YTBiMTc5ZWU0NTBiOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWUyNGJlY2VhMWIyZGQ4YWE1ZTdjNzg1MGY3ODhlYjRkODIyZTIwMzNlZDY4M2JmOTgxZDYxYjhhN2VkMjZjNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjNhYTM4OTE0OTU4MDFhMTcwMTdmZDBjM2Q2ZDQ3MzMzMTQ0OWM3ODAwNWIzNzVhZjFjNGI0ODg1MGE0MWNkNiJ9" + }, + { + "resource": "repo://hub/documentation/building-blocks/pipes.rst#L40-L46", + "version": "repo-lines-v1:sha256:08ac2fcaeab836cf938cd1c632a7a5f8cd75b4ad59003fd6b9737b5b1065b938:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTE1YWE2Y2MyZTViM2E4OGUxNzE2MmNhYjkxOWQ2YWE2YjNiOGI2MGE4MTNiNjM3Nzg1YzQ0MTY2MTZlMWRhNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTJlYjgzZDJiZmQyMDFhNDMxNGYyZDE3Y2M0ZjVjZDI0ODczMjc0MTBkYzVjZmE1Yzk1MGFiN2JhMDM1ZTMyNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjVjMTJhNzM0NWZkZTMyNGM2ZTM2NDE5MWIxNjZkYWRmZDU3OTllMGI0YWVmOGFlMzI3YWE2ZGY4NTA1Yzg5NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWIwNWMxNGIyNDMwZDQwYTg4Nzc1YjI1OTM4OTdiNjRjMGNjYzNlZGRhMjYxYThlNjkxZjAxMmM3ZTg1ODVmNyJ9" + }, + { + "resource": "repo://hub/documentation/building-blocks/pipes.rst#L6-L6", + "version": "repo-lines-v1:sha256:23d3794e2f8df7fa6b6a280b50d5bc4997938c8ed0d282f5e5242da99953a555:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjNkMzc5NGUyZjhkZjdmYTZiNmEyODBiNTBkNWJjNDk5NzkzOGM4ZWQwZDI4MmY1ZTUyNDJkYTk5OTUzYTU1NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjNkMzc5NGUyZjhkZjdmYTZiNmEyODBiNTBkNWJjNDk5NzkzOGM4ZWQwZDI4MmY1ZTUyNDJkYTk5OTUzYTU1NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2ZjNTllMGY1M2NkMWYzMmUxZjFhYzQ4ZDg2ZTFkMzdmMmVjM2RmODBiY2MzOWExNmM2YmJjZTFjNzJjNGFjNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTZkOGVhNDJmZDM2YThmOGRkY2Y4OTRkYzNkZjZkZmZlZWZhNTVlOWJjZDM1NDdmZGY5ZTgyMjgyYTIwYWE3NiJ9" + }, + { + "resource": "repo://hub/documentation/building-blocks/pipes.rst#L60-L60", + "version": "repo-lines-v1:sha256:8b88449c653350112d3f20fb8454d722e27354e5759a8e17283ac8ff680267e9:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGI4ODQ0OWM2NTMzNTAxMTJkM2YyMGZiODQ1NGQ3MjJlMjczNTRlNTc1OWE4ZTE3MjgzYWM4ZmY2ODAyNjdlOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGI4ODQ0OWM2NTMzNTAxMTJkM2YyMGZiODQ1NGQ3MjJlMjczNTRlNTc1OWE4ZTE3MjgzYWM4ZmY2ODAyNjdlOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDY2NTc5MjgyYTRjYmVhZDZkODdlYWUxMmEzNDg1YjRjNTgyYjk3ODlmNjBkZjNmZDhiMDMzMDc4Mjg2MjA3YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjIzZTQ2MjBiMjViMjA2ZmE0MzA2YjlkMGY3ZTFmM2JhNjNkZjllODBiNzhiYTFiNWJlMGU3MjY1YWRkYjM2NiJ9" + }, + { + "resource": "repo://hub/documentation/building-blocks/streams-of-entities.rst#L26-L26", + "version": "repo-lines-v1:sha256:7423b68954875d9f59c60eed9877c9455ab2dc08bfbbcb689fdd705b2b8f8f88:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzQyM2I2ODk1NDg3NWQ5ZjU5YzYwZWVkOTg3N2M5NDU1YWIyZGMwOGJmYmJjYjY4OWZkZDcwNWIyYjhmOGY4OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzQyM2I2ODk1NDg3NWQ5ZjU5YzYwZWVkOTg3N2M5NDU1YWIyZGMwOGJmYmJjYjY4OWZkZDcwNWIyYjhmOGY4OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjgxY2E3Mzk4ODk4MDJjMThmZDM3MjVjM2NlZWJkZDU3OTY3MGIxYmM5YTFjYzJkZDI5MTBhZjY2N2MyODRhNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzQwYzBiMjViMDFiMTc3M2VkMTg1NWEyZGFiMzRiNDcyNDcwZmNiNjYzODc3NzdkMGU0OTQ1OTc1YzJkOGE0MSJ9" + } + ] + }, + { + "id": "claim_e1d55615736c494c91d596c1e76a22bb", + "statement": "System components represent external connections, centralize shared connection configuration, and provide services such as connection pooling and rate limiting.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/systems.rst#L6-L12", + "version": "repo-lines-v1:sha256:ce3598762c35fc84b71133ae84e87a90e0288595d918173af4e022e8d8be5ed9:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTY2ZWJhOWMxMDVhY2QyODZhZjAwZDY1MjEyNTkwOTcyMmRhMzU0NzAwMjMyOWMzYWU0YTY4ZWM2ODM1YTEyNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzhiMjZjZGFiMTcwODg2Njc3M2U2YjNkZDhjYWI2YTYwZWJmNjlmYjZjYWRhODc3ZDQ5NWY4NTAwMDE1NjBlOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDVjMDA0NDNkOWFmYjljODg2Y2YyMzI1ZjhmODM4MWQwODY2Y2NlMzBkZmIwY2ViZDIyOTBkZWM2YzQ1ZmIwOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjIsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzVkNmI2NzM1ZWY5ZmZlNmEzYWFkMzQxZGJjNDgwMmQ0MTU2NzBiNWU0YWRjMWM5MmU3NjFmYTdkNDY0Mzk2MCJ9" + } + ] + }, + { + "id": "claim_8efb59c0174b405a8d7c4ef905d099a7", + "statement": "The getting-started guide describes signup, connecting to a subscription, and baseline configuration, but its baseline-upload panel is commented out rather than an active third wizard step.", + "evidence": [ + { + "resource": "repo://hub/guide-getting-started.rst#L10-L22", + "version": "repo-lines-v1:sha256:4c3182cf088753e20b1208633e2939ad57d305148b4edca87c2bf1cefe9365d1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4M2Y4ODE1NzFjOGUwZmViMmM5NWIxYWZlYzYxZjAyYjYzMzU2OGExMmEwZTI4ZTI4NzhlNGIyOGUwZTE3ZmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMzMmFmYjJhYjZjMGEzNTczZGIwODY4YzY3Y2RiNmZjMjAzZDFiZjNiY2QwYzM0OTgxYTQ1YjUxOTIxNjRmYzciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjExMzhiNWUzNzBjMmE5NTJmYzFjNDA1MjlhYWEwZmI4OTE4YTk2N2YxMTZkYWZjM2JmYTg5OTdiZDkzZTc5N2MiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM4MDczYTU4MWI1YzQwODlhOGY2NTM4MjczYzI1ZGUxNDhlNmFhMDFjNzc3MTlkMjY3ZDE2Zjk2OWE3YjNjNDMifQ" + }, + { + "resource": "repo://hub/guide-getting-started.rst#L33-L68", + "version": "repo-lines-v1:sha256:647d7dac3a5a4829392e43012f997ec022b8c5d3b38d5e06dd941f65d7f08dbf:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdmNjJiYjZiNTA0YTI1NmU3MTliMmVlY2EyM2ExZjkzZGZjNGJlZjY3MTZhMGYwZmFkZjUzZTg2NDRmMjVkMDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZlMzQ1OWY4ZGE1ODhjNDU3Y2Q4YjdlMDQwY2Y0M2Q1YzJmNDdkNTQ5MDc0ZDE2ZWE0ZmI0NDcwYjQyOWRiMTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBkOWExNzMzNDIyZjdkZTc5NDIyYjg5MjMzYmE5ODliNjNhZTBjNGYyYjE2MDY1NmY3YjhjMmFjNTZkYjg2ODkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_58de2966075f4a2792da130d173cf4dd", + "statement": "The signup tutorial describes requesting trial subscription access or obtaining an invitation from someone with management permissions for an existing subscription.", + "evidence": [ + { + "resource": "repo://hub/tutorial-signup.rst#L39-L43", + "version": "repo-lines-v1:sha256:b738a6ea0a172eca67c2b0a29945bd96679ddffe9d6faa8389c83236ed9e162f:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjM1MjQ5ODhhOTE3MzRmODI1ODEzMTY1OTA0YWM0MmM1NDYyOTdkMjQ0ZTA0YzExMmNiM2JlNDM5ZTI4NDJmYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzI3MGZkMWQ2ZTI5MWY3YjVlNGY4ZDI4OTRiMmUzNDc3MGEyNzEzNjkwYzhjZDRiODFkNGQzOWY0ZmIyZTEwMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGNiYTJmOTgyOGM4MGEyYzM4ZTI0OTY2ODk4NGNkY2I2MzJkNzYzZDY4ZmFkZGY4ZmU1ZThlYzI5YmQzNGVlZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjMxMGRlZTNjOGY3NGI3OGRmNzczNGFhYmRhOTdhMDk3NGQ4NmQ1OTU3YzhlMGZiOGY1ZjVjMzMxZWQ2MTA5NyJ9" + }, + { + "resource": "repo://hub/tutorial-signup.rst#L58-L63", + "version": "repo-lines-v1:sha256:93342dffca776e7b01dbc181fcc689373704aa06b969dce273e152f281bad948:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjMzNWRhNzM4ZTg5YjM4MGQyYWI5NjJlZmNmMjk5YmU3OGYzMzgwNTYzMGQ2MThjNmNjMDkwOGNkYWEwN2EyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmZlNjQ2ZjNjZTMxMWYyZTRjMTA3ZmM5NGI5MzI0OTk0MTdlODMxNWY1NjI5NDRjZmQ2NjAyZDNjODc0ZWUzYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGNiYTJmOTgyOGM4MGEyYzM4ZTI0OTY2ODk4NGNkY2I2MzJkNzYzZDY4ZmFkZGY4ZmU1ZThlYzI5YmQzNGVlZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/tutorial-signup.rst#L6-L8", + "version": "repo-lines-v1:sha256:070c9e74153dc2c13386d1a99b2ec1ac1c9e744751f9c5fed9bd9243ae0e37c8:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2UzOTE5ODI0YTY3MDhhYzQ3MTAwNDg0YTAwMDQ0MGRhMmRmMWMwZTdlNDJjODhlYjNjMTBiMTllZGYxMDdjOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTI2MzAyNDZjMmE1OGFiMzRhNzFmMmQ2YjZiZmQ4ZTE2Zjg5N2VlMzZkMjVlZWIxZWRhNDAwYzgyNWFlNTM4NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjk0Mzk3MTFiMmVjODFkYzNmNjMxZWM0NGJkN2M0MTFmNDY1NjI5ZWI1NGU2Y2Y2NDBhOWI1MTMwNjJmMGMwZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWY1YmFlZmFiNjNlZDQ5ZGFhZTFmYjBkZTFmMjBkZGE5YTJmNThiMzMwYzcyODQ1MjAwZWZjMDhmNzU4YzE5MSJ9" + } + ] + }, + { + "id": "claim_9a889e0120d44650b96a12ec1640f6fc", + "statement": "The first-synchronization tutorial still prescribes a HubSpot app developer account, test account, and API key with a legacydocs.hubspot.com link; those authored prerequisites should be qualified as dated instructions rather than verified current third-party setup.", + "evidence": [ + { + "resource": "repo://hub/guide-create-first-synchronization.rst#L26-L34", + "version": "repo-lines-v1:sha256:869bf10354928fb7a3816f23691f643ab35b9a9c179ff646fe03aaa91b9d451b:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzRjNTY0MmViYjNiODIwOGUxNWZkODg3ZjdlYTQ4NWNjOGE0NDE4MTNmZmRjOTUxNjIwZjUxZDY4NjNhNzcxNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTgyNjRkZTc4YTU2ZGFjOTBhOTI1ZmE4ZTZiZjYzOGEzMmEyYmY0YmQ1YmMyN2I2ZjAzY2Q4MmJiYzJjZGQ5NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzc2MzJmNWI4NTE3M2UyOGIzYTE4NjVjNjAzYmJlYWQ1YzIyZmM3YjZkNGU5YTRlODMyZmFkZDBjNTEyODA2MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzA4YzNiYWM2MWM0NTQyYmU3ZGFmYmNhMjU1YTkwMGFjNTQwNmQ3Njc2Mjc1YmRhNWRjZjhkMTA5NzU4NmI0MyJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L19-L23", + "version": "repo-lines-v1:sha256:14a6da30a651600ad14c17b3b361a6695f6e49a1cdd1f8627b4666f66d5488e3:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjdlNWFhZDczMGE2OWQ3ZjRkMWY0N2IyNDNjMmI3ODY1OGI3YTg1MTlkZThiNjY1ZmZmNzI0MGE5ZmRiMzhiNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjkxZDM0MTVlNjJkNjdhMGI5YzRiYzA0NDk3ZTEyYzJlN2RkNmVmY2M5M2ZhOTNhMDdiZjczMjAzYzFjMjliOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDJmYjg4MDFiZDFiODVmNzAxMzczMjZjMjMxNGMwMTViZjdjNDI0NWYxYzc5ZGU3ZjAyY2EzYzg2NDM3YTllNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmQwYTQ0Yjg0ZjE4ODIyYWM2NDBiMDM3ZWQ5MzZmZjg3YTQ1OThhYjVjYTU2YTA4ZTlmYjgyNzcyY2M0NjkwMSJ9" + } + ] + }, + { + "id": "claim_e74204ac1f594b9799f43e52a3048523", + "statement": "The introductory Collect tutorial uses sesamcommunity/learn-sesam-crm:v1.1.2 for its Enhetsregisteret system and explicitly identifies that connection's data as generated mock test data rather than live register data.", + "evidence": [ + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L94-L118", + "version": "repo-lines-v1:sha256:2c8d75e40f2f6e6c3190e9cb0e08aef1043092e33486e400864baa04568ec3f8:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc3MDNkODY0ZDRmZmE2OGJkZjhhZWMzMWY1MGQzOTk4NzZjOWYwMjNmMGFiZWM1MjM4NGI0NWUwY2JjZjY2YjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ0MmQyYTRhZThkNzYxNmZlY2FmNmY4ODQxZWIwMjUzMzA5Mzk4NDk2ZWEwYmJhZDVkMmI0ZTVhNGI5ZDk1ZmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYwN2U2NzNhMjUyZmRhOTkxODIxYTIzOWI3OGRhYTYyNzA3ZWViMzA4NTNkYmZhMmI5ZTc3Y2VhZDllN2FjNGYifQ" + } + ] + }, + { + "id": "claim_8c6a3dd21f014a5385b2fd8249ec62f0", + "statement": "The introductory synchronization exercise populates HubSpot with CRM data and later writes synchronized data back to HubSpot, so it should be approached as an exercise with external data side effects.", + "evidence": [ + { + "resource": "repo://hub/guide-create-first-synchronization.rst#L13-L24", + "version": "repo-lines-v1:sha256:d7a44afb755af49e0f6d1067106fc3bb5bd4c7fdea8b11b2f76565fbd4110a92:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU0ZmRjZjllY2VjMDZlZjBiY2Q0ZWE1Nzk0NzEyYjE3OThiZDBkN2E1OTIxM2QyMTQ5NDM4MTc5YWNlOWM2YzciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4NDhmMWIxMDg2NzcyN2MzNTkyZjVkZjU3NmJjOTdmNTNmNmQyYmU0M2JiYTM5Y2IzM2Q3OWU0NTcxM2VhMDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNhNDE5OTkyZDc5MDFkMzU0MDUzN2YwN2MzZmE5YjAzZDViZjBjYzQxZmZmYWNhOWUyZTkzZGU0ZWM2ZWE1OWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRhNWY3YWZhMzEyZWI1ZTljYzhjZDExMzc3NDE2MjFlMWEwOTY5NDk0ZDg0ZTJkYzQxZmZlNTU3MzFkODA1ODAifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L25-L41", + "version": "repo-lines-v1:sha256:3ac1a04163b00b91017f70f4747ce70470458a7c5394d4404747450f39348e73:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIyMDAzYWQyNThkYmVjN2Y3Zjk0NDk1ZjUwOGQ5MzliODZlNjY0ZjFiMzRjOTZhM2JlMzQ3M2Y4MTViZTI0MjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2OTM5MTY0OTlhZGE0NDA2NTQ1MDFmZGZmMDU2MzQ5YmFkNDJjZDJlY2U1ZjBiNTdhNDNlMjk5NGU1YWUzMWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5Nzg5ZmI0NzI2ZWQ4NjJkNjllYWVjN2U3ZGU1YzBjNWY4OTA2YzgwNzhlZWJhOTU4Y2E3MjBmZGJlNzc5NmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI1YjZhYTk3Zjg2ZWM3ZjYxMTcyOTE4NjE2MzliMTYwODYxOGE0ZWNjNDc0MmUxMmYyNDNhMzA2NTc4MjQ3MjIifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L6-L7", + "version": "repo-lines-v1:sha256:772be1566870dfc6a3064d3e4203b7c0ad412de55d99f4a9d2c560f4497a5e20:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjZhNWViMjk2NDU3ZTBhN2NkNjA5Nzg2MjNjMDM2MGExMTU4MzFjZGFmZDliZWQxN2JlNzAwOWZiODE5MmUyZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzMwMmVjMzk3OTYxYzVmY2UxYzE3MmVhNmQ4YzM1M2M3N2IyM2RmMTRiMzdmOTJkNjk1Mzg0YTA3ZWI2NDhlOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2Y0ODk0NDkxYzVhMjZkZDQ4OWRjYjhkMTFhMjk3MWE5ZDgyNDk0YzMzYWQwM2I0MzE0YzZlZjg1NWU2ZjVlZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWMyYjA0YmNmM2I5NDNhNmQ5YWI1MzE2MGQwZWM4ODBhZTRlOTI5ZTU1OGQzYzcyMjE2NWY5NzhkMzE1OThiZSJ9" + } + ] + }, + { + "id": "claim_ef434979caf848be880379b62673ae5c", + "statement": "The documented ideal dataflow has five conceptual phases in order: Collect, Enrich, Connect, Transform, Share; these are conceptual steps rather than an exact five-pipe configuration requirement.", + "evidence": [ + { + "resource": "repo://hub/sesam-dataflow.rst#L3-L7", + "version": "repo-lines-v1:sha256:678f8c4760850564daa3a5841fe258791f533534dc7c18619789fde9fbddb72d:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmNmMjJmMzJkYzI0ZTg2ZjY4OTg2ODgyMmRlNzllNjViYzVlZjk2NjQ2NzczN2U1MzgxZmE5YzcyYTU5N2IyNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmYzY2U5NmVhMzI1NDI0YzY5ZmY0MDE1ZjNlYmNkNTNjZjliNjBkOGQwOWUwYWQ4NTFjZTkzNzMxNjFkYjM0ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjIsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjhhNDZkMGYwZDRiZDcwNDQzNTZhMDQwZTdmZDJkZDZiNzFkMGI2ZTRkMTM3MWJhMmY4NjA1ZjFhZDNlNmVjNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDM4NDRiN2Y5Mjc1OTM1NDk2NTg1MzAzNDkyZTNlOWIzZjA4ZjM4OTQzZmRlMTQ1YzU5NjY2NDI3N2I1ZTFiNyJ9" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L39-L44", + "version": "repo-lines-v1:sha256:8483021baeadb6adf8de5b471bd0e073e8847e1431b5701def71906b4e0986da:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWIxZDUyZGZjMTIyNWRiODgwMjdkYTRmYjcwZmQ5Yjk1NTI4M2Q0YTVkNjUyNGM2ODlkOGVlZTUyMTQ1MDFjZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTE2NTQ3ZDMyOGI0NDJmMDE0OGMwYmUzYTgwOWJlNWU2YjMyY2ViZWFkZmUzMjJkYjVhMDYyMmE2NTU0NDg5NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTNiMGJiOGI0YzNlNWMyMmNjNmRlNmY2MzQzZDE0ZjQ1Y2QyYmQ4NjRjNmU4ZjM1NjBiZWNiMDEyOWNkOTM1NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODE2YTI5MWU1Y2NhMWVhZDZkZDQ5ZWYxMTE2Mjg1ZTY5MjA5YjJlMDM1NWQyY2VmYThlMTVjODk3ODg0MDAwZSJ9" + } + ] + }, + { + "id": "claim_440b0cbb39a149e38c998e11207c8a25", + "statement": "The Collect model retains raw source data, including an intermediary raw dataset to support replay or retention without requiring another external delivery.", + "evidence": [ + { + "resource": "repo://hub/sesam-dataflow.rst#L25-L44", + "version": "repo-lines-v1:sha256:3e7cb4f62e21d02a52ec281e19c0b7956e8ef25512eff7ac3277eeeeb3561ce8:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYzNWNkZTZjZTAwNmQ0ZjhkNzAzNTYyOGE4YWFmN2U4MzQwNGZkMWJjZjJmZjViNGYwODA4MDI2YzIwYmUwODAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImExNjU0N2QzMjhiNDQyZjAxNDhjMGJlM2E4MDliZTVlNmIzMmNlYmVhZGZlMzIyZGI1YTA2MjJhNjU1NDQ4OTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg2NDVlMTljOWNlMmFiOGZhOTViYWYyMmU4ZWI1YTZjZThmZDVlZjg0OTk1OWYxOTBlM2I3YjA5OTJlNTA2ZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgxNmEyOTFlNWNjYTFlYWQ2ZGQ0OWVmMTExNjI4NWU2OTIwOWIyZTAzNTVkMmNlZmE4ZTE1Yzg5Nzg4NDAwMGUifQ" + } + ] + }, + { + "id": "claim_5f0225dbd2894fdb9c2bb210caa69d9d", + "statement": "Enrich adds business typing, namespaces, and relationship identifiers from the same source; cross-source relationships are deferred to Connect, where data is organized into global datasets.", + "evidence": [ + { + "resource": "repo://hub/sesam-dataflow.rst#L115-L131", + "version": "repo-lines-v1:sha256:eef9cf2b078e713f4c0e8d12053153a62dcd0c788bdec0c84023758ec39fd304:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4ZmFmYTI5MjIwNDJlOGQ0NjY5MWZiMTk4MGRjOTE1ZmIxODhlYzdiZWM0OTRjYzdiZjNmMzNjYjQ5YWJkZTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE3ZTg5YzdkZDVmNmJlYWI5ZTEwMTA0OTkwYTE1OTNmM2I0MzlhYTdlZDQwYjJjY2U1YjJkMGU5MmZiMGExNzAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIxYWNhOGY0Y2I5ZGIxNWE3MjVmMjYzOWMwZWQ0Y2ZhNTYwNGFlNzFhNzMwMGY1MzQzNmViOWUxMTFkOTljOWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI2NzkwMWJkYWVhMTJhYjA4YWVmODRmZDA5YjE2Njk5ZDBiNzFiYTM1Yjc1OGYxYThmNWViMmY1MDcxMGQyM2MifQ" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L137-L164", + "version": "repo-lines-v1:sha256:fa9bef04fb9e919bcc9465badb8e9a734c5f1a2b1b540ba9f937cf8f4fce05de:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNmYWJmODU2YTdmMGRkMWZiOWIzZmZhYjM2Y2NhMWI2NTM3OTY1NmViZGEyMWMzZTU5MTk5YTUxNTIwNmUzZTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNmY2Y5ODBjNTVjZTk1ZTgwMjZmODRmODhhMzQwMjA4N2VmMjA3NGYyODYzZjFmYTY2ZjAzYzk0M2VlY2FmZTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc5Njg1MDYxNWZhMTY1M2RjMTI3NWI4YTQ4MTIzZjA4ZGY2ZWQyNmZhMjQzM2UzOThkYzk3ODEyOWNkMTU3ZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFhMTAzNjEwZmRlMzFkY2E0ZDIyNzRjNGIyOTczOGRjNmUyN2FlMzE5YTdlMGJlYjE3Y2ZlMTQyOTFlNGI0MDIifQ" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L64-L75", + "version": "repo-lines-v1:sha256:d1cd7be7494b48a9bbb7e5b3a0f975ef4f36e4f122569546caf96600e0e4290a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE5MTNiZjdmODhjOGYyNjJiZWM2ODBmNDI5NjVlYTJiMTJhYWRiZjY0OWFjOWNjM2Q1NzlkOWUyZDhkZWYwMjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRmNDZiMmYwOTU1MDJhZjgzNTNiMWQxNDgwNzNmNDlmMGQzODRhNzM1ZjNjZWE3YWQ3ZTA3MWE5YTdiNmU2Y2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhiMjk3MzQwNWZiYjU0MTJmNjU5OGRlYmU3YjM0NGFiMTI3ZGUzNzc3Y2IyN2MwNTBjZGMzNjc4MGMwMDZmODUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA5NDk0ODFmNzIzMzkxZWI2ZDk1OGVkMmVkZjdhNjFiZWI0YzkzYmNiNWZiMzFmYjJjNTc2YWU5MjU4OTI0OTYifQ" + } + ] + }, + { + "id": "claim_01823b4e8c40408584f20aea3495d8ea", + "statement": "Transform performs late schema binding from global datasets to the target schema in preparation pipes, while Share delivers data in the target's required form.", + "evidence": [ + { + "resource": "repo://hub/sesam-dataflow.rst#L249-L261", + "version": "repo-lines-v1:sha256:31e0b4db038341eb9059c21919b78e0157d83ba1882a05b2a12178cba55b49d7:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEzN2RmMTk3MDJlN2QxNTczNDkwMTcxYmU3YjMwYWY5NzEwMzQyZGEwYWIyYjNhNzRlNjU2MWYyNzI0N2ZmYTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE3Zjk2NmU5MGI2MDZiNTlkNjE5OWNiNzI4Y2E3Zjc4MWQ3ZjAwOTY1NmI3MDUwNGUzZjRhYWZkYmE3YWJmZjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMxNjliOWUxZjhjNDNiY2Q2YjRlN2M1YTFlOGRhNTg4NjA1ZmEzMjQ1ZDBjMTUzMzhmNmZlMzlkZWY2NjA3NDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE5YmNlMGZiMWY1ZDZmMzdjMjE3ZDI5ZjI1MzE3MzZmMzVjMGQzNWZlMjIyMDY3MmI4M2RmZjUwY2U3YjlhNmYifQ" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L272-L279", + "version": "repo-lines-v1:sha256:1ac004377e4d75ee67885893a0f73ac1a25267b044899dd413421bba6069c37b:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTVjNzRiMzIyNGRlMTljNDY3N2QzODFlMmQ1NzU2NmIwYjY3ZWUyNDQ3NjNhMjZiZWRhN2U5MmEwY2Y3NTEzNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTgyNGI2MGY2YTZjMjE3YjNhZDc1ZmFlNTE2NzdkYzBiMDY5ZjlkODc3MDBiMDc1OTZkNThmOTkwODYxMzhmNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNWVjZTVkZmMzOWMxMGY2Njc1ZDhkYTM1MjE5ODc4NzZjN2U0NGYyNmRlZGNmNWQzNTY0NzkwZjdhMDY3MDAzNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTc3M2UxYmJhM2FmMzk5YjU5YzJhYjA5MDY5N2IwMTAyMWU0NzE4YWQyNTkxM2RmOGY5MDIwMDJiMzEwZGVmYiJ9" + } + ] + }, + { + "id": "claim_1c3b63ef8b6a4fe9bd7d95286d2d40b6", + "statement": "The introductory guide groups Collect and Share under Data Synchronization and Enrich, Connect, and Transform under Data Management, so its tutorial navigation differs from the conceptual five-phase processing order.", + "evidence": [ + { + "resource": "repo://hub/guide-create-first-synchronization-data-management.rst#L6-L14", + "version": "repo-lines-v1:sha256:69768bfec1316d6bd2826ae1112fbcbc5b7f5a7b545329710241ea43f22c39f8:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZThmN2U3MTYxOTQzNTk5YmEyNDk3YzE4NDhhN2M4NmUxMmZhZGY0MTBkMTk5ZTlhYmQxODk5NGIzODc0MWIwZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjQ2NWI4N2NjMTBlMDJiZjA4M2FlM2U0ZWViYmQ0NGU2ZmY5NTcwZDc0YmE0YTUxY2NjYTQzMjhkMTA1ODU2MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2RjZWIzZDRkODlhYzZkODVmYmYxOTY0ODQzZmMwYjZiODcyYTkzOTRhMzY0YWZkYjFlZGFlYzkyYTk0ZGM3NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTcxNzk2MzFkMWFkYWVmYjM4YzVjOGYyZmIxMzY3YjE5MDg5ZGU1MjhjODJkNGMzZDc4ZTIzMDM5N2RmOWI0NiJ9" + }, + { + "resource": "repo://hub/guide-create-first-synchronization-data-synchronization.rst#L6-L13", + "version": "repo-lines-v1:sha256:866e5bad1ecf870345a31a4b60a03bda42a47fba62b65e341e63629df7147180:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZThmN2U3MTYxOTQzNTk5YmEyNDk3YzE4NDhhN2M4NmUxMmZhZGY0MTBkMTk5ZTlhYmQxODk5NGIzODc0MWIwZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1YmM0MzcwNTA5NTE0OTI1NWE0Mzg1ZjBhM2ZiZTY2M2ZmMGRhYWFjMmQwNzRlMGFiZmM2Njg2MWI4ZDMwZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjkyYzI2YmY0OWQ4M2JiMTkyOGJmNzExNzk1MWNhOWQxYjJiMTM1MjFjMGVhNGM0ODI1MzBkMzA3YTg5NzRlMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODI3ODE0ZmJjOTYzMDVmNzg2YTg1NGRjNzJiODU3MDg5NzVmMDU4ZjFmNWJiOWIxMWVlZGI1NjEwMTIyMzUxMiJ9" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L7-L7", + "version": "repo-lines-v1:sha256:2f3ce96ea325424c69ff4015f3ebcd53cf9b60d8d09e0ad851ce9373161db34d:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmYzY2U5NmVhMzI1NDI0YzY5ZmY0MDE1ZjNlYmNkNTNjZjliNjBkOGQwOWUwYWQ4NTFjZTkzNzMxNjFkYjM0ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmYzY2U5NmVhMzI1NDI0YzY5ZmY0MDE1ZjNlYmNkNTNjZjliNjBkOGQwOWUwYWQ4NTFjZTkzNzMxNjFkYjM0ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2YxYzdmMTdkNzVkZWNmODNmNGU3YzdiMTI0OTVhNWUxMTdhNTJhOWY5ODgzZTI5YWY1NDlhZGQ0ZmQyYmUxYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDM4NDRiN2Y5Mjc1OTM1NDk2NTg1MzAzNDkyZTNlOWIzZjA4ZjM4OTQzZmRlMTQ1YzU5NjY2NDI3N2I1ZTFiNyJ9" + } + ] + }, + { + "id": "claim_f04680b74a66469fb564503556d0c047", + "statement": "The documented local integration-test workflow drains pipe queues, disables or prevents outbound delivery to real systems, and compares endpoint pipe outputs with expected fixtures through the Sesam client.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L21", + "version": "repo-lines-v1:sha256:d728920650b733582762cd2916dd09f6f0f0af185fdda8c3774bd133cdd1ef38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + }, + { + "id": "claim_3ab9b77d78784bec9f3c9e51ea484c4c", + "statement": "A documented integration CI node must be unable to write to external systems, and tests sharing that node must run one at a time because the Sesam client overwrites node configuration.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L15-L22", + "version": "repo-lines-v1:sha256:07aab440d4556c57ef17f5d677f0c39dcbb0b1371327354d27b8736a619600cc:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDM4NjUwNTQ0NjgzY2JiZjhiM2RjOWNiNGU1YWRhODZlMWVjM2IyZDNmNTM3MGI2ZWM0ZDNkNGIyYTY4ZGY5MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTZlYTE5ZGVhZDdjNDY3MTEzMmNjZDc0Mzk2ZmZmMWI4ODc1NDhhOTJjN2U3NDNhZGRmOWYyYTRjYzcyZDQwYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWNhNjYwZmFmMDBmNTMxZTJiNWU3OTQ5OGE3NjczNGRjNjI0MjZmNzJhYTI2N2IxOGZiMWI4MzUwZDM4YjM3MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDA5MTQ2MDJlOGM0YmZkMjRlNWU4NGJiN2MzY2YwODViMjFjNmExNDQ1OTgyMDEyMjIzNGZmOGUxYTMxOTVmNyJ9" + } + ] + }, + { + "id": "claim_00af378ca72d446188d8b6deb6ccc923", + "statement": "The pump execution dataset logs execution history and read/write errors, but its entity ids and structure may change and it is explicitly not intended as a public application API.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L1-L25", + "version": "repo-lines-v1:sha256:b057b36d4fc92d56c2a36ed425b29adb7dd2784c87c482d2b3db99d2274fb93c:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzZmFjMDAwYzI0ZWNiMmRmYzBkZjA1MzI0ODkzZDc0OTcxZjhiNWQ4ODVlOTAxNjQwYjc1ZTZhMTA0YzA5ZDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJhM2FlODUxZmNiNGRjMTIyNDY4ZTE2MTE4YTczNDQ5M2Q2YmJlNDViODY4NTc4MGUwNDA1YzRkMmQ4YjczZTgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgzZjkxM2UwMjU4MzEyMjIyNjQ1MWI4YjA1OTgwOWFjYTcyMjJhZWI5OTg5NTgyZjJiMzlmOGNmNmU3MTZiNjMifQ" + } + ] + }, + { + "id": "claim_8d47e1724c9d4d7b88d335b0984dbc6a", + "statement": "The troubleshooting reference calls for separating entity and system failures, retaining target feedback, and monitoring or handling dead-letter data rather than treating every failed flow as a transformation defect.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/troubleshooting.rst#L11-L59", + "version": "repo-lines-v1:sha256:8bdb72b2d2e804c3f428641e969eed06083314e2903523d1abad8f865f2e2d0c:eyJzZWxlY3RlZExpbmVDb3VudCI6NDksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVkZDQ1NzFlYjIwNTI1Y2FiMDE0NTEzY2FkYWVlZTU4YWJhY2YwZTZkM2RlNTFkOWRmM2U1MDQ5ZTY4MjJjMmEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJhOGU0ZjVmYjU2NTQ3ZjQ0NmYxMzE1ZTMxZTY5MjdiOWUxZDRlMzdmZmZiYzE1MGYyMzAwOTU2MWFjOTQwODkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYzMTA2MmRkYzZiMTk5NDIwYjI0Y2I0ZGMyMDFlYWIwNDE2MGFjZjhmMmJmNTc0YzliY2EwNjg1NWQ3NDM4Y2UiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJhYzAzZjFhMTZmZTI0MTBlMDJlNTM3YWJhMTQ5NGU3YWY2NjM5MzlhMDA4ZDgxMTJhY2E2NmI3YjMxY2QxM2YifQ" + }, + { + "resource": "repo://hub/documentation/operations/troubleshooting.rst#L61-L84", + "version": "repo-lines-v1:sha256:e1959b2c2c9feb6d56556e1ef9f27129cdc03d279c6a8d652eb2e451ba7bfe9b:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM5YmU4YjY4MGY3MTdkYTBjODNmNDg1N2M2YjA4ZWJhNzAxMjJhYTZhNjJmZGVhYmM0YmQ1ZTdmMWRmMDRhODYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk1YmEwNWVhODAwNmZjYWRmZWYxMWI1MjkyYzdiMWM4MjllNmY1ZmNlZjJhZDQ1MWM2NjJhYWQ2NGE1N2I5YzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY5MzAxZWY2MTEwMDVmM2Q3NDE5MTAyYzkwYjQwZGIwOWJiZTkxZTVlYTQ3MWU1Y2JkZDVhZDE1MDJiMWE1MmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI5MGY5YzhlMWUxZDU3NGI4OWE2MGYxN2M1MWQyNWVmNGVmZTE5NDdjYTExYjU5ZWIxYzk0MGIzYjg0YTc1M2IifQ" + } + ] + }, + { + "id": "claim_7970f61d8d7642a0bfe81ab1ce1ea8c9", + "statement": "README states a Python 3.7 minimum for pydata-sphinx-theme, while both PR and merge workflows select Python 3.9 on Ubuntu 22.04; this is version evidence for the documented build environment, not validation of arbitrary newer Python versions.", + "evidence": [ + { + "resource": "repo://.github/workflows/merge.yml#L8-L15", + "version": "repo-lines-v1:sha256:221e495ebab002060bdf64fdd21fe5f9043c11d3d13ed5ab5a13cde5dc85e890:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdjNDVlOTdhZjY2NzhjNjliNjlmMDBlMDdlZDc5NmYwM2I2OTlhZDQ5OGRkMjRjMjdiYzRjMjFiZmJkODQ3YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDhiNWE5OWJmZTM4MTkyZjZiMzgxNzVhZTk3NThiNmFjZDEyZmUwNjlmMzMxNWU5Y2EzZWExNjc3YmM0ZmIzYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTExN2I3MzMyYmI2NTJhMDNlNzc4NGNhZjEwM2U5MmRlZjBhYTkwMmEwNmMwY2IyNmI3NTBmMDA4Y2IzMjU0YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDcwNjEwNGFkN2YyYjkyYmZlZmM2YTQ1MDliYTE1ZDRhMzY2ZTZkNWVlZWEwNWY0ZmJhYTUwYzdkYmQ3NzVhZiJ9" + }, + { + "resource": "repo://.github/workflows/pull_request.yml#L5-L12", + "version": "repo-lines-v1:sha256:4477a61f6bf9d1ca442c2c3b88dcdc82862884d652e98e4c128f9d0d98282d70:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdjNDVlOTdhZjY2NzhjNjliNjlmMDBlMDdlZDc5NmYwM2I2OTlhZDQ5OGRkMjRjMjdiYzRjMjFiZmJkODQ3YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDhiNWE5OWJmZTM4MTkyZjZiMzgxNzVhZTk3NThiNmFjZDEyZmUwNjlmMzMxNWU5Y2EzZWExNjc3YmM0ZmIzYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmM4MTA3NmJmMTFlZmM2YmM0MjU3N2IyOTJmODcxNjBjMTczYmQ4YmI5MzU4ODE5NTA0MmE1NDgyN2UyMWQ2OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDcwNjEwNGFkN2YyYjkyYmZlZmM2YTQ1MDliYTE1ZDRhMzY2ZTZkNWVlZWEwNWY0ZmJhYTUwYzdkYmQ3NzVhZiJ9" + }, + { + "resource": "repo://README.md#L22-L22", + "version": "repo-lines-v1:sha256:2cbbad023662ea2bf67542337f2c08bb22caadf3e12a14709643516766ed8b87:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmNiYmFkMDIzNjYyZWEyYmY2NzU0MjMzN2YyYzA4YmIyMmNhYWRmM2UxMmExNDcwOTY0MzUxNjc2NmVkOGI4NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmNiYmFkMDIzNjYyZWEyYmY2NzU0MjMzN2YyYzA4YmIyMmNhYWRmM2UxMmExNDcwOTY0MzUxNjc2NmVkOGI4NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzc4MDAwYjM5YjhhN2M3ZmY0YmNmZDkwMDU2OTJkYzdjNTVjYzI3ZDU4OTY4MTQ2YTU3MGVjYzQ5ZGVhNWVhMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDg5ZTg5YmNmZjIxYjc4ZTM2MTY1OWFiMjY0YmU2YjBhZWU5NzQwYjYwOWUxY2ExMjIyZjhhY2I4ZWE3ZTYzYyJ9" + } + ] + }, + { + "id": "claim_723b565ce12e4312922a19bcbadb0640", + "statement": "The documentation requirements directly pin Sphinx 4.5.0, docutils 0.16, pydata-sphinx-theme 0.8.0, sesamclient 0.2.68, and documentation extensions, rather than providing a fully locked transitive environment.", + "evidence": [ + { + "resource": "repo://requirements.txt#L1-L26", + "version": "repo-lines-v1:sha256:d5264c1fe66ef2057cd77c20aef1c9eeedafe4588dd2ab5972d1b399702c07aa:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc2ZGJkZDI3NjY0YzY5YTQwZGI0OWU5MGM3NTBkYzVmMDAzMjExYjZmZmIzNmI3NTdhNGEyOWExMDc4NmI2N2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg0NWNiOWQ3NGU0Mzc5MTgxZWE5ZjgwOWRlNjI5NDQ5MzhiMzM3OTQwNTQ3ZDQwOWU0YWQ0NGI3ODAzOGYxN2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_431e6b88822246709b8680dd944bfd0b", + "statement": "conf.py directly reads os.environ['VIRTUAL_ENV'] when constructing exclusion patterns, so a missing variable can fail configuration loading with KeyError; local activation supplies it, whereas CI explicitly sets VIRTUAL_ENV to venv without an activation step.", + "evidence": [ + { + "resource": "repo://.github/workflows/merge.yml#L29-L38", + "version": "repo-lines-v1:sha256:56f691aa56478de09efecf896b30a99321419f2b671d90b3fe7aca97adddba25:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcyZDlkZTE1MTlmMTc3NDJjOWNiMzYxNDQ5NGZhZjJjZjZkODM1MjNiZDU5MDQ2NzFjYTUwZWUzYzA3NjM2ZDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcyN2RmOGI0MzU4NWU0MjU5ODcwMzBiOGE0YjJhNDI2YWNlMmNmYTUxZDMyZWY3MWIyZTIxMzAxMWU5ZWIyOGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFlZDFhYzc1YjEwYWMyMTI2ZTZiMWYzNGFlZDNlN2JhNjNjZWYzNGJjY2VhMzdmOGUzMTY4OWRiZTRhNmQzZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFmNDU3NzBlMWQ1MTlhZThmZDQ2MjY4NWE1MDhhOTA5N2Y5MTk4ZjE5MzE4NTU3ODlkNzM4ZjZiMGYyNjE3ZjUifQ" + }, + { + "resource": "repo://.github/workflows/pull_request.yml#L9-L24", + "version": "repo-lines-v1:sha256:16eb5c630268e9bbb0f8cbc9cee4329c530f3b8d7eb8d8460fa9b4f105703167:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVkZTU4YjAwZjcxODRmYWE4YmMwZmIwMDBiMWMzYTU5ZTM5YTNmMzkxZGIyZWVjNDg5Y2Q4NGU2MDk1NGU4YTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEwMjgwNmI3MTI1NjI2NDA4NTU0YWFlMzE2MTkwYjYwMDk2YmE4NWJkNmMwYzJkN2EyMDRmYzlmNmYzZTYxNDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiMmQ3Nzc3NzI0N2QzZjk5MTJmYTQzMTE1MjU4OGRmNWU2MWJmMDgxZDc3MTQyMWNhZGY4ZmM5NWU4YzhlYmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://README.md#L3-L13", + "version": "repo-lines-v1:sha256:af7728cce4bcd2d8c00ba40f26ba416efbb22827c1428c77bfbce2bd36d3146d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ4Y2RkZTZlZTFhZWQwZjY3YjY5YTBmOTUxNmUzMGEwZDA0ZDRjYmI2OGRiNmE3YjEzY2I3MGIzMTIzNTQ4MDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4ODM3MTdkYmQ2YmYyM2NkYWY2ZjllMjQ4ZjAwNTNiODQzZWRhMDZiMDNlZjg0ZjE1ZDM5ZmRlMTA0Y2NhMGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjoyLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU1MDYyNzlmODdlOTgwMzAwMjcxODk2NjE3NjUzY2E3NGRiMTU0NTM0YTA4YzBlOTU5OTlkNzBlNGEwMTU1ZjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNiOGFjYzE5ZTFkYjU3MDQzNDEyMDExYTk1MjgzNDc3NDdlZDZhMzg0YWRiMzIxNTM2NGYyMzUzYTFkMWE1NzQifQ" + }, + { + "resource": "repo://conf.py#L95-L97", + "version": "repo-lines-v1:sha256:b3379627ee71bc3b01993028ffa391fb6d3f926176acba291cb8af7cefe3b129:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2FkODEwZGViMWVkN2Q2NmMxNWVkNjdjNDQwNmQ4NWEwZTA2MzFkNzZiN2VlYTg4YTA1ZTUxNWE2NTdiZWU2MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWIyODVhM2U5YWU0YzRkNzkwY2NlOTkxN2FjMzQwMDE1OGIwZTgxMDk2MzQzZjI0Njk3MTBiYzFiZTJkZDNhZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzI5NjgzZTk2ZGI2YjEyZWRmNzE2NTQzZjdhYWE1NzdiODExNzQ3ZDc0MWZhNDU2MjQ0NjllY2E2NGY5NjI2YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWFlYjY2Y2FlYWQyYTg0Yzg2YWFlNzBlM2M0ZWVmM2U2Yzk4ZTI3MmI0OTU2ZTJiNzIyMzcwNWQ2MjVlNzJjMCJ9" + } + ] + }, + { + "id": "claim_ad51ec38bde34402917c34909946515a", + "statement": "README's local preview setup creates and activates .python_env, upgrades pip, installs wheel, and installs requirements.txt before building the site.", + "evidence": [ + { + "resource": "repo://README.md#L1-L24", + "version": "repo-lines-v1:sha256:85842eec1b9270c42c79a4c2fbdfc8631222039393dca35e4e7b11f587c80039:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhNmRmM2U0MmQ0MGU2OTM5MTQ4ZGZiZDNjY2E2Y2M2YjA5Yjk2N2Q4NGJkZDk5M2EzNzRkZDUxYzU2ZWI3MWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg2OWY0ZTBkMTFlMzRmZTA3ZjI5YTM2NjU2MjZkNmU3YzE3YzRjNThlMGI0NDBlOWJlZjJmYzNiNDNmY2Y1MTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU1OTk1MmRjMTUyY2I3Yjg4ZGZmYmVhNWRkZDhkYmU3Njc0YWFlYjI4NDNiNjRlZGJmZjBlNzAyNDBjZDg3NWQifQ" + } + ] + }, + { + "id": "claim_d9786c794ed048eaa2468edfab3cb5fc", + "statement": "PR CI installs Pandoc 2.13 and texlive-latex-base, texlive-latex-extra, texlive-plain-generic, lmodern, texlive-fonts-recommended, and ghostscript for contract generation; README instead gives Ubuntu Pandoc/base/recommended LaTeX examples and a macOS brew install pandoc mactex example.", + "evidence": [ + { + "resource": "repo://.github/workflows/pull_request.yml#L13-L20", + "version": "repo-lines-v1:sha256:5b3de661a3c8c13079ee3a33ddccad13ea621f097107ddef25f3bd82a7224767:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjk5NjEyOThjNmU4MTFlNzA4NWRkNjIxZGNmMjdhZGEyMzU2N2NjZmU5YzY0ZGZhZTVkOTk1NjM0ZDg4Yjg5MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNiYzc5OWRkZjhmNDU2YjAwOTIyNmE4ZGMwZmE0YWExNDA2MWYwNjhiNTAxOGNjYTU5OTdiMDk5NTFlMmIzNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTY3NjNlZDQyMTM3MGM3MmMwMWE3MTE1MmRhYTdiNWY2NThlMTUyNGYzN2M4MjRiZjk2ZTdhZTE3NWM2OTM1ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjU4MDdkODczMjExMTY1Mjc1ZTI0YjJlMDI2YWE2NDZkYzE1YTliMGI3ZmQ4MDE0NTQ5NmZjYjEwZWZkZmZlNiJ9" + }, + { + "resource": "repo://README.md#L15-L29", + "version": "repo-lines-v1:sha256:d8ef99917f79b8d833911541add1a87f2a5be34d02c6fc26acd7e6e4e56ae506:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjExNjEzYjY1ZWNiMzFiOWYwOWRhMzI5MmRlNGYwYWYwMzc4MWI5NGJiZWNlYzE2NTRkNzI0YTNkNTM5NDJkZTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzYTkwYjFmZWVlY2QzNGM4MGFjNzRkMmY3ZGI4MDI5NWVkNzM3OTZmNzg0YWZiYjFiYzJiYzY1MDhjYzliZDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ0NmM4Yzg4Y2VmMjAwOTc1MWExYjRkOTg1MDgzOTVjNWZiYTI4MjZhNDk5ZDk4ZTUyN2ZhZjdlOWZjZTU2NTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY0NzI1NzUyYzJlMjE3OWMzZDhjODg5NDkyMzA0MDQ1YzI1NmQ0MGRhODRkM2UzNjViZTcyOWE5MzNmNTMwNzMifQ" + } + ] + }, + { + "id": "claim_bc2c36dd377d403284fe56e2a9cacb66", + "statement": "make html generates SaaS PDF/DOCX and partner DOCX downloads through Pandoc before running Sphinx into _build/html; its contract generation uses pagebreak.lua and PDF generation accounts for the documented LaTeX prerequisite.", + "evidence": [ + { + "resource": "repo://.github/workflows/pull_request.yml#L15-L18", + "version": "repo-lines-v1:sha256:c91d19c4f2228bafaee000e6108972ad792ba869ae6c91a0f02006ceca88660e:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDNlNWExZjAwZDU5YTEyM2IxZTc4Y2NkOGEwYTZmN2JjOTc3YjU5ZDRkY2JkZGQxN2RmMTljNjc3ZjlkNWJhNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDU4MjNiOTg5NDMxNjQ3ZDYxM2E0YTc1OTAyNjg0OTk5NzU1Nzk1NzEzZjNiZjA2OGEyNDdlOWM4NDE4YWU0MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTZiMzQ5ZWEyODgxMTQyMWMxMzQ4MjY1OGE0NzNiMzg2ZDliOTA3YzI1YWI5YmNiOWExNmJmMjhhNzRlYzc1MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzA3ZDZjODMyNjk0YzA2ZjdjYTA1NzJhMTVlNDI1MWNjODkzODRmYjRmODcyODQ2ZWI5ZjBlMmY4ZTVhM2VjMyJ9" + }, + { + "resource": "repo://Makefile#L62-L93", + "version": "repo-lines-v1:sha256:bba25775ccd185bdb6d4392cbe543d4c93971122cbbd308250a3729588616e22:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4OTM4OWVmMmRjYjE5YjZjMjRhMjU4NTU4YmZlMGMwM2E4MjY3N2M0ODU0OWU3N2U3YWNmM2M3Mjg3ODI1NWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1MzlkOTIyM2U4MGYyNDkwNDhmZDk2YjQ2MTExMWQ2MTVlMDVjMGZmNmE5MzZhOGUxMjYxZTk4MTRhZjZmMjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc1ODYxOGM5NmZhZWNlNzBhMzkyOGVjMTYxOWZmNDk0NmVhNDJjZGViZWZjOGE5OGI0NTc1NmJiZTcxNjhmNDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM2NzU5ZjQ2NzFiOTUwMTMzYzAwYmE5NTY2ZjY5M2Y2ZmFmZjU3YmQ4ZGRmYjJlOTdiOThkODE3NjlmYzY2YjUifQ" + }, + { + "resource": "repo://README.md#L15-L19", + "version": "repo-lines-v1:sha256:4becf679a8a767036169330513c4192d06a94ffdae5eb6476d7aa3514c09001c:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTE2MTNiNjVlY2IzMWI5ZjA5ZGEzMjkyZGU0ZjBhZjAzNzgxYjk0YmJlY2VjMTY1NGQ3MjRhM2Q1Mzk0MmRlNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGM5YWEyZGE4NTg2NzJlYjFhOGE5M2VmMDk2NjNiNzYxYzk4Y2NlNGE3ZmUyZmQxMjllYTc4YmM3OWQxMThkYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDQ2YzhjODhjZWYyMDA5NzUxYTFiNGQ5ODUwODM5NWM1ZmJhMjgyNmE0OTlkOThlNTI3ZmFmN2U5ZmNlNTY1NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2Q0YzU2ZjU0YTE4NjZjYmFkODAxYjY4ZDFmMmFhOTIxY2IzNWRmYjgzOWI4YjgzYjFlNDlmNTJkYTkzZWZkOSJ9" + } + ] + }, + { + "id": "claim_5938fd6d90414628bd4c150faabad795", + "statement": "The Makefile checks for sphinx-build on PATH and defaults SPHINXOPTS to -W, making Sphinx warnings build errors unless the options are overridden.", + "evidence": [ + { + "resource": "repo://Makefile#L10-L26", + "version": "repo-lines-v1:sha256:d5b2b2d704e37ab68b30143b7fc2ccdbcac80e58733d4c48f04fa3e49941cb1d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE1ODY4YTM3NWYxODBkYTFkM2Q0OGI1YjE3MzFmMzY3MmM5MDIzMDRkZjhjZDMxMWY4Nzg0OThhNTIzOTE2MmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI2OGZiOTMzNmE3N2E2YzBlM2NmM2Q0NjBjZWMyYWNkOGNkMzMxNWNlZDE1Yzc4ODQ4MDI5YzAxOWY3MGNiYWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdjMTRkZWU0MmZkZjU5NzgwOWFiMWU3MGRlM2IzYzI5NDg0MzEwZDdjYmMwNzU0ODdkYTRmNjBmMjMxYWQ0M2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImExMWEyMjgwYWQ5OGVjNzNjNjYzMGYwZWI0NjIzN2NmMmRjMjE4OWRiMmE1YjYxMGE0YmY4NDkxMzgyMDUxODcifQ" + } + ] + }, + { + "id": "claim_653fbf8ce891434fba7d041193bd5d03", + "statement": "html_no_saas bypasses contract generation by touching the SaaS PDF/DOCX and partner DOCX paths and running the same HTML builder, not by filtering SaaS content; its recipe invokes neither Pandoc nor LaTeX, and touched missing downloads can be empty rather than freshly generated contracts.", + "evidence": [ + { + "resource": "repo://Makefile#L90-L101", + "version": "repo-lines-v1:sha256:4c0e828943e9f48b6efd67dcb0370c043a442f6655edb7d1b30ecd25d0bda27b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjY2Y0MjVkODNlZmUzZTdlYTA3OTAxOWM5NTJlZjM3ZDI2YTk2OGFmMDU1Yzc5NjE1NTA4YjBkZjgyOGIyNjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1MzlkOTIyM2U4MGYyNDkwNDhmZDk2YjQ2MTExMWQ2MTVlMDVjMGZmNmE5MzZhOGUxMjYxZTk4MTRhZjZmMjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ0NTUxMzljOGQ1YmE4NzQzMWNmNjQ3ZGQ5MWM0MTBkZTQ1YmYzYTg1ZTcwOTg1ZjY0NWRlNmViODc5NmNhMmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIxNDEwM2Q4NTEyYjA5NGZiZDY0ZTk1NmIwN2NiZDg2YmNkOWRjZjliYTI0M2JjYzgyMjFiMjE1OThkOWFhMTYifQ" + }, + { + "resource": "repo://conf.py#L95-L97", + "version": "repo-lines-v1:sha256:b3379627ee71bc3b01993028ffa391fb6d3f926176acba291cb8af7cefe3b129:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2FkODEwZGViMWVkN2Q2NmMxNWVkNjdjNDQwNmQ4NWEwZTA2MzFkNzZiN2VlYTg4YTA1ZTUxNWE2NTdiZWU2MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWIyODVhM2U5YWU0YzRkNzkwY2NlOTkxN2FjMzQwMDE1OGIwZTgxMDk2MzQzZjI0Njk3MTBiYzFiZTJkZDNhZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzI5NjgzZTk2ZGI2YjEyZWRmNzE2NTQzZjdhYWE1NzdiODExNzQ3ZDc0MWZhNDU2MjQ0NjllY2E2NGY5NjI2YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWFlYjY2Y2FlYWQyYTg0Yzg2YWFlNzBlM2M0ZWVmM2U2Yzk4ZTI3MmI0OTU2ZTJiNzIyMzcwNWQ2MjVlNzJjMCJ9" + } + ] + }, + { + "id": "claim_912a653b5fb04138bffa2cf34f0f56e8", + "statement": "README's SPHINXOPTS= make html_no_saas recommendation clears the Makefile's default -W as well as taking the contract-generation shortcut, so it is weaker than the configured PR build gate.", + "evidence": [ + { + "resource": "repo://.github/workflows/pull_request.yml#L21-L24", + "version": "repo-lines-v1:sha256:8cb2cc000725b9db2c51b9a91074ec10d384809cb73a5bdc2415246a941e190b:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzJkOWRlMTUxOWYxNzc0MmM5Y2IzNjE0NDk0ZmFmMmNmNmQ4MzUyM2JkNTkwNDY3MWNhNTBlZTNjMDc2MzZkOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTAyODA2YjcxMjU2MjY0MDg1NTRhYWUzMTYxOTBiNjAwOTZiYTg1YmQ2YzBjMmQ3YTIwNGZjOWY2ZjNlNjE0MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWZjMGE1ZGU3MGI1NmExZWZjOTliY2ZhZDkzY2IyNjI2MDczY2ZlMmVmZTc0N2FlM2UxYTcwN2QyMGU5OGE3NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://Makefile#L10-L26", + "version": "repo-lines-v1:sha256:d5b2b2d704e37ab68b30143b7fc2ccdbcac80e58733d4c48f04fa3e49941cb1d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE1ODY4YTM3NWYxODBkYTFkM2Q0OGI1YjE3MzFmMzY3MmM5MDIzMDRkZjhjZDMxMWY4Nzg0OThhNTIzOTE2MmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI2OGZiOTMzNmE3N2E2YzBlM2NmM2Q0NjBjZWMyYWNkOGNkMzMxNWNlZDE1Yzc4ODQ4MDI5YzAxOWY3MGNiYWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdjMTRkZWU0MmZkZjU5NzgwOWFiMWU3MGRlM2IzYzI5NDg0MzEwZDdjYmMwNzU0ODdkYTRmNjBmMjMxYWQ0M2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImExMWEyMjgwYWQ5OGVjNzNjNjYzMGYwZWI0NjIzN2NmMmRjMjE4OWRiMmE1YjYxMGE0YmY4NDkxMzgyMDUxODcifQ" + }, + { + "resource": "repo://Makefile#L95-L101", + "version": "repo-lines-v1:sha256:356d2f355b5fa728877c4c9da2984a3b252428647bc8b11eca5030a58729fca0:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMxM2NjZjE2NzVhNzJkODVjNmQyM2NmYTNhMTNkY2IxM2UyZjMzZjdjY2UzYjFjZGE4NjE2NTNmM2VkZTE0OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzUzOWQ5MjIzZTgwZjI0OTA0OGZkOTZiNDYxMTExZDYxNWUwNWMwZmY2YTkzNmE4ZTEyNjFlOTgxNGFmNmYyNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzA1NmFiNzU1NDZiNDkzNmRlM2UwZTY0NWI1MmFiNGMwYzBjY2QxYzIwNjUwMzNhOTcxMDEzMzAyZGQ5MjY2YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjE0MTAzZDg1MTJiMDk0ZmJkNjRlOTU2YjA3Y2JkODZiY2Q5ZGNmOWJhMjQzYmNjODIyMWIyMTU5OGQ5YWExNiJ9" + }, + { + "resource": "repo://README.md#L35-L35", + "version": "repo-lines-v1:sha256:4d7a515c74f990ba07ad6711ad966a58720461c0246d60327cbe03ffb54a238a:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGQ3YTUxNWM3NGY5OTBiYTA3YWQ2NzExYWQ5NjZhNTg3MjA0NjFjMDI0NmQ2MDMyN2NiZTAzZmZiNTRhMjM4YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGQ3YTUxNWM3NGY5OTBiYTA3YWQ2NzExYWQ5NjZhNTg3MjA0NjFjMDI0NmQ2MDMyN2NiZTAzZmZiNTRhMjM4YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWE3OTY1ZTM1ODllYTQ0YTg5ZDcxNmE2MTIxMzg0ZWQwMmU1OWNhNTYwMGVhMDM4MDQ5OWJlZjNlM2FiYWJjMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_9a85622b29d84dabaee45a7f50df93a5", + "statement": "The documented HTML preview location is _build/html/index.html, and README offers cd _build/html && python3 -m http.server as an optional way to obtain search summaries.", + "evidence": [ + { + "resource": "repo://Makefile#L90-L101", + "version": "repo-lines-v1:sha256:4c0e828943e9f48b6efd67dcb0370c043a442f6655edb7d1b30ecd25d0bda27b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjY2Y0MjVkODNlZmUzZTdlYTA3OTAxOWM5NTJlZjM3ZDI2YTk2OGFmMDU1Yzc5NjE1NTA4YjBkZjgyOGIyNjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1MzlkOTIyM2U4MGYyNDkwNDhmZDk2YjQ2MTExMWQ2MTVlMDVjMGZmNmE5MzZhOGUxMjYxZTk4MTRhZjZmMjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ0NTUxMzljOGQ1YmE4NzQzMWNmNjQ3ZGQ5MWM0MTBkZTQ1YmYzYTg1ZTcwOTg1ZjY0NWRlNmViODc5NmNhMmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIxNDEwM2Q4NTEyYjA5NGZiZDY0ZTk1NmIwN2NiZDg2YmNkOWRjZjliYTI0M2JjYzgyMjFiMjE1OThkOWFhMTYifQ" + }, + { + "resource": "repo://README.md#L24-L25", + "version": "repo-lines-v1:sha256:5aec72326636bdaa9863622eee52d25f15f08e58b33fddcf0059491f23e2179f:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODY5ZjRlMGQxMWUzNGZlMDdmMjlhMzY2NTYyNmQ2ZTdjMTdjNGM1OGUwYjQ0MGU5YmVmMmZjM2I0M2ZjZjUxNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjgyMjAxNjNlZGUyMDUwMmIyOGE2NjI3Njk1MDZhOWU3YjdjNWQ5NGE3YTFkOGVhMWM2YTU2MWE4ZDIzNDQ5NiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTFmZGM3MTU0ZjdjNmEwZDIwZTVlNmVjOTg1MWFjZTZiNTQ3OGQyODhlZTJmZmE0YjIyYWFiMzU3ZjJiNzYxZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTYyOGVlYWMzMmQ5NDU3ZDExYWQ4ZWRiOTc0NGJkN2IzMjA0ZGM1ZWFkMDQ1ZjdjY2M1Njc3OWMwOTVmMWQ3MyJ9" + } + ] + }, + { + "id": "claim_1ce2b6731b444ff5abf4746b9de6f7b7", + "statement": "The documentation PR workflow runs make html, not runtime integration tests, linkcheck, doctest, or coverage; the latter targets exist in Makefile, but conf.py does not enable the Sphinx doctest or coverage extensions.", + "evidence": [ + { + "resource": "repo://.github/workflows/pull_request.yml#L1-L24", + "version": "repo-lines-v1:sha256:ab2d94a14754095e30394af009c769acad0193ea609c92644e1643ab8d158696:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVkZTM0NDY5ZTI4OTkzNDNiZTBhYzNkOWEyMWM3ODI0MTY3OGVjMzU1Y2M2NWUxNWE1YjJiNTE3ZGYwMjRiYzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEwMjgwNmI3MTI1NjI2NDA4NTU0YWFlMzE2MTkwYjYwMDk2YmE4NWJkNmMwYzJkN2EyMDRmYzlmNmYzZTYxNDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://Makefile#L212-L226", + "version": "repo-lines-v1:sha256:58ac43171591571d293107634c3207bcb915b602686515ec13fd317ee60dec40:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhhMDk0YjA4MzNhYTU4N2RjNTlhMTI3MTE5NDgyNGEzYzU4M2ZiNjEzOWFlMGIzOGEwMjg1ODAyYmM5YzY4NzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkOTEyZDc2YjQ4NmJhZTA4YzY4NGYwNjk2MjI1ZGZmNGY5MmEwZTdlYjI2MzcwNjY2OTFkM2I5MjI2NmQ4YjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZiZjc0M2Q3NzhmMWUzOTRmZGZhMWI4YTQzZjNlYjYxODA5NjMxYzBmMGZjNTg4MTJlNjUwZmQ4M2UxNWMxODUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ5YjUwZDZhMTJjNTFiNGIxNGQwOTVkN2M3NDE2OWM1YmExMWYyYWM1NGQ3NzRjMDhkODgzMDEzNjlkZGVjMjcifQ" + }, + { + "resource": "repo://conf.py#L29-L36", + "version": "repo-lines-v1:sha256:101036f64dc30b882886c4f36afcf1bbe0ac20d8bb00d6dd6f69f459536aa6ef:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjA3MmVhYWYzNmNlYzlhNzkzMzAzYjNlYjI2ZmQyODU1NTI1OTFhNTliOTUwNWVmODY3N2UwNGYzY2RmNzhjNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTdjMzQyZjA2Njg4NjY3YWU0YWFlOGUwNmNiYjI3YzdjYjQ3NTMwYzNkNWUxYjEwNzFlZWZlMmQ4ZDE1ZDZjMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmFkOWZkYzA0Mzg2MmVhMDNmYmFjOGQ3MjM2NDg2ZGFlNTMwNWZmYjhjMzkwNmY1Y2YwMGQ2N2Q0ODA2NGRiMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjgwNDEyMWQyZGY5YjBiMDA0ODAzZTc5ODg4N2RhMjE4OGE1NTRjMzk1NTgyZTUxODI3MDZiOGFiMGU3MWFmYyJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L9", + "version": "repo-lines-v1:sha256:bd64e696390e5fc902c522bbd9dc446b7baadc0ff24dfc204a731c810c699c20:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOThhYmRjZjJiYzkwODIwNDYxNTkyMjY2OGU2NWJkNmQ4YjdmMWM5YTRmNzE0NTcwMjY1YjhlNjdiODdhMmMyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjg4NmNlYWUxMWVlZWE4Y2YwYWFjNjkyMzA4OTU3NGUxMDA4ODlmMTU1YTBiMTQ1MTlmYTQ5MzI1NzVhMTk0MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTkyYTJiODM3ZDY1MDE4ZDA0OWM4MmE0ODBmZTgyNWU1OWZiYzEwNGM3MGUzNTIwM2Y0OTA5NmVmODg5YjFkMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGE0YzI4N2VlMWJiZTAyOWNkMGQxYWE1M2E3YjI1NGIyNjY5Njg3OGU1N2NmZjVlMjM0YzIyZTAyMzZhZGVmMCJ9" + } + ] + }, + { + "id": "claim_668e993b45924c9197f9bc69bcef0a2b", + "statement": "On a push to master, merge CI builds HTML, packages and pushes documentation images, and deploys the SHA-tagged image to an Azure Container App; this publication workflow is distinct from local preview.", + "evidence": [ + { + "resource": "repo://.github/workflows/merge.yml#L1-L5", + "version": "repo-lines-v1:sha256:eb53bd528aa500c27f94cf199c905a509549ba947572231826b22f7ba706b502:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTI1YzgxYjYzMmQ1YjVhNjAyMmM1OWI0YjUzMTY4MDI1NWIwNTBiZjI1YjMyMTU3ODczMjQ0NWM3MzMzOGQ2NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjZiM2JiN2MxMWVjOTU0ODI0MjNmOTM0NGZiNDgzODExODRmNjZhNjk4OWIxNDJjMDg1YjUyZDdhOTYwN2Y3MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTYwNmQzOTUwZjVjY2VlMzI4ZTM0NWIxYjUzMzQxOTRhYjRjNWJjYTA1OTBhM2MxNTYwNjcwMzNiM2ZjNDBmNCJ9" + }, + { + "resource": "repo://.github/workflows/merge.yml#L29-L66", + "version": "repo-lines-v1:sha256:1dbd54c918f28ea408cedbbb349287377730ca9c50d46c8355f3ab695703bb7d:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcyZDlkZTE1MTlmMTc3NDJjOWNiMzYxNDQ5NGZhZjJjZjZkODM1MjNiZDU5MDQ2NzFjYTUwZWUzYzA3NjM2ZDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFiZmU2ZTMzNDIzNzcwMDA0ODA1ODNjNjMyMWJiNzNiZTM5MmIxZDZmZmNmOTA2NDAzOTQ0ZDljMDNhNDIyZjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFlZDFhYzc1YjEwYWMyMTI2ZTZiMWYzNGFlZDNlN2JhNjNjZWYzNGJjY2VhMzdmOGUzMTY4OWRiZTRhNmQzZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://Makefile#L238-L243", + "version": "repo-lines-v1:sha256:15cd3ccf08c5ad0888e1ad5816d8c73dd681051f0b2323327ddb2df9d32f5484:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmUwNjY3ODY1ZmQ1OTk0MGMzZDg4MGMyOGM1Y2U2NzI0OTk1MmQxYTYyMTU5YjE3ZTQ2ODk1YzdiMDMxMjM0YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTU3NjY3ZjE5ZTY0ODhhMDdlZjA0MmMyOWYyNTBiNTRmNzU3ZWU5YWZhZjQxMmUxZDdmYmU0OGJlZmQyNzU1NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTUxMjJhOTM3MmQ0ZmUxYTZjNDcxNjBhNzM3ZjMzOWM0OWE5ZGQzNDQzZTIyNDI1NmEzOGI0ZTE2NDkxNGZjMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/references/history-and-policies.json b/openwiki/.claims/references/history-and-policies.json new file mode 100644 index 00000000000..f0aab62d885 --- /dev/null +++ b/openwiki/.claims/references/history-and-policies.json @@ -0,0 +1,482 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:b3734589478111044a1c8aa9240d39777dd05295a2436804df99d47c6f6b666c", + "claims": [ + { + "id": "claim_6e7e273d043e497e9202fa2f1c41e888", + "statement": "The developer documentation warns that features marked Experimental can change or disappear without warning and must not be used in production.", + "evidence": [ + { + "resource": "repo://hub/index-developer.rst#L5-L7", + "version": "repo-lines-v1:sha256:ac495a716263f67a1fef6820dd17defd57e31b181764e0b46913694b856e2244:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTMwYzZiZWUyZGEyMTA4YmUyMTRjZDhmYzU5Y2U0MGQ5NDM4MGM2NDhkM2Y5Mjg2MjA3MDZiMDhmOTBmODU1ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjJiMjRjNDI3NGI3MzUyZDQ2Njc2MTQwNTZkZTVlMDdjNWI0Y2NiMTc1MWMyODc4YWFiNTY4N2UxZjRlMzk5NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2M2NjYxMzQ4ZDk2NGQzODFmYmIxZWMxNzkxMGFlNWIxMDgwMmU4Y2YzNzM1MTg1NmYxOTAxMTJhYWQ5NzUzYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWQ4MzY1NWI4N2YyMDg3MzE2OWJlNmU0YTNmZjcxNmVjYTNkMzVjZWU1NGFkMWIyOTQwZmQwMjMxMmRiNTcxMCJ9" + } + ] + }, + { + "id": "claim_1ecfe7d9ff274217a12a93cb5824f9ec", + "statement": "The developer entrypoint separates deprecated features from discontinued services, and both retirement indexes explicitly instruct readers not to use the features or services they contain.", + "evidence": [ + { + "resource": "repo://hub/deprecations.rst#L1-L16", + "version": "repo-lines-v1:sha256:f36aee40e6ee5aa729e211a3729bbf5b503ee740aa87cba266f0cccd29ab35d1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE0NGI0NDUzMDY1N2I1ZTk4M2MyOGYzYjQ4M2ZlYzZjNzMyZjNlMTE1ZGVkNmI5YzgwMjZmNWU2ZjI1Njc0YzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwOTM0NGFhNWE5Mzc4MjQ1M2ExMTAzODgwZDYyYWQ0NzZlY2I5ZDY5MmQ1ZGUwOWViMTBiZTQ0NmFhYTBiMjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBiNDYwYzNkNGY1YjI0Y2Y3Yzg5YjAzMDUxOGQ0MTZjMDYxYjFjNTYzOTk3YjQyY2VhZmM5YTdhZmY0ODVkMjUifQ" + }, + { + "resource": "repo://hub/discontinued-services.rst#L5-L13", + "version": "repo-lines-v1:sha256:7ce02eb60e90239e34472c7fd96d1e0182d4550c25ca24fa183d40ee2cd3a36d:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWQyZDQ2ZDQwMjEyYjI3YTllOGRlMzQwZWIwODRiOTkxNjRmMDQwMTVlYmNmZDBkNjgzNDgwNmNlYzQ2YjMxZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzk2ZWIwZGU5ZTczZTIyZTNjNzQxOTE5MWUyYWYyNmFkMGRhZDFmYzkyY2RmYjViNDhlNWM0M2Y4OTdkNmZhNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNWZmOGZkZWFmZjBmMjA0MTIwMDNmMTRjZWRhYjQ0ZDJhZmQyMjMwODJmNjBkNmQ0OTFkMDdkNDczMWU5MjE2ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTcyODBlYWVkZTBhZDA2OWFmYzM0ZjY4MjZmYmUzM2MxNmM2YjI4ZTEyNWM0MTY2Y2U1OWVlZTNkZWIzMDM4MSJ9" + }, + { + "resource": "repo://hub/index-developer.rst#L16-L18", + "version": "repo-lines-v1:sha256:00060b943a9f88cb22070aa83c84e2a0e6d5b2330adc4e94f7cb40c1b028a6d4:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDVmOGRlMjA0MjVmOWYyZDJkMzgxYmE1YWNmOGIxMzRlM2I5NTRjN2NhMzU3ZmQ3MTVjNGJiMTRlMzMyNDk5YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDY1OWYwYjkyNjFhMmIyMThhMTRkOWFhMGY2M2M1ZGQzN2QxNDY0MDVmNjU2YjNlM2UxZjFmNmI4ZTIyNDNmMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWJmNzhjM2JhM2EzZjVkZjZkMmQ2ODVlY2Y5MTc2MWYzMTkzZGUyYzY4MjMxMmFhMWRkZjM1YWI3MmQyNjk3YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjNiZGJhZTkxYjRkZjIyN2E0N2E2MDBjNDlhZTM5YjlkMjQ0NzhiNGE2Yjk0MDIyYzM4NGM3YTI5YTExYmNiMiJ9" + } + ] + }, + { + "id": "claim_020d499566ae45b9963fbb3a185e3da5", + "statement": "Sesam documents phased software rollout with weekly-prod recommended for production, weekly for staging, nightly for development, and latest only for cautious development use; promotions can be withheld, build dates indicate minimum rather than maximum age, and downgrades are unsupported.", + "evidence": [ + { + "resource": "repo://hub/features/software-channels.rst#L9-L22", + "version": "repo-lines-v1:sha256:7fe9d23540bb19deaf029267334969507b04a32aa39368046c609719e5717f09:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU2ZTFhMjIxNjZhNGFmYzA3YmNmNmY3NWJhOGE0YzM4ZGZmZDliMjFjODZlNmFjYmUwMzM3MDk5NjEzZGQyZDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU3YTA4OTdkNjg3ZmU3ZmExOGJjNDg2YTk1MjRjZTUyNTk3MjAzOWY1MzJlMDg1OGMzOGY3OTgyMTE0OTRhMzkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNkMjEwYmU3Y2MwZjcyY2JmNjk0ZjZiZTc4ZTZlMDgxNjcwNDg5ODEyZmYyOTQ0ZmVhMWM1YTQ0ZTY0YTRkZjMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_f9801b6cb1bb4060bc0f6308bc5dfdd0", + "statement": "The changelog entry labeled changelog_2026-03-30 records addition of documentation for the replicated dataset sink, rather than explicitly recording its first implementation or availability.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L24-L29", + "version": "repo-lines-v1:sha256:07d9a2376bc856c90b757eac5d37901ce3b0d73a96e628a067fe4735ba792a21:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2NkMTYyNDlhM2E0YmE3NzJiNWIwNDIzYzBkYzQ3M2ZiMjlmMWEzMjhlMWYzMGM4NWU0YWYwMjI2MjVlZjk0NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2I3MDE0ZjkzZGNlMjFiYTIwNDNiNzZiNjZlNjViOTE0NDBmYmM3YzQzNjIyM2IwNzVhOWEzZmU2OTZlMDgxNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWMwM2I4NzY4OGQ1Njg5NzUwN2VkOThmYTdlMDMyZGYzNTY2ZWVjOGVlNWVmOGUzYmQ4YmUyZWMwNjEyNjRiZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzc0OTIxYzVlOWVjNmQ3N2Q0OWUwNTgxZDE1MTQwZTk4NDkzYzYxNzEyODUyNGYwOWUxOTA3NjlmZGNhMWM4ZiJ9" + } + ] + }, + { + "id": "claim_821c9bf5d2ef4e12b7eee16abfaac856", + "statement": "The 2025-12-22 changelog deprecates ni-collapse and ni-expand; their retained deprecated reference sections still mark them experimental and intended for global_defaults.symmetric_namespace_collapse set to true.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L58-L62", + "version": "repo-lines-v1:sha256:b1a9eea97e30ef2630484bfeb8913ca567ae20984bb62a9f61778f4932f1be90:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmFlY2JhMTM4NTcwMDI0NWI1MTQ5M2Q3NTVjZWQ0YzIzZTE5Yzc1YmQ1MDQ4ZmU0MDEyZWFjNzBkMTA1NzEzNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGFhMDMyOTRhZWJiYTQxMDljZjhmNjgyNzE5MDllMTMyOWJjYTIyNjRhYzdlNTI5Y2Q1ZDgzMGI4ZmE0NGJjNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDI2YjA5NDM4ZjdiMTkyZWQ4YmZlMTNkNjBkNjljZjFhYTNiMDlmZDg4Y2RmMTg5MzQ0NDYzY2Q0NmU5ZDU2MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzdjOTAxOTA0NjdhMjI1MjkwZDhhZDdlZGQ1MmM2N2Q2Yjg2MTUwNjRlYjkzYWFlMjM1YTljOTgyNmY2NjNjOSJ9" + }, + { + "resource": "repo://hub/deprecations.rst#L199-L220", + "version": "repo-lines-v1:sha256:d34dd71fd3842651c1964266b3a31cbf005308429a354b77bce9a14b70abccd2:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjllZmU3M2NlNjM4MjJjZGVhODRlYTA2OTM2OWU4ZWQ2MzM4MTg3ODJiMWQzYTlmNGM4MmRiM2ZmZmU3ZWQzM2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkYzYwZjRjMmVkMzE1NWY3MGVmYTcwOGY5OTAxM2M2MDMwYTRkNTE2MTg5OGY1MGRkMzUyNWNhMjEyNzEzMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY0ZTVlYjhiOWJlOTlhNmQwNDQ5NTZhYzc4NGM2NDNjNDM4NTBlZTk5MWJkZmJiNDhmYWIxNDdjNTA1ZWQ1ZjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgyYWI3YWUwNjNiZmE1ODc5YzkwYWFkZDVlMTA4MTY0NTQxYTZjMWYxMTQzMWQ5YjJkMWJjMzk4NDYzMmNmYzEifQ" + }, + { + "resource": "repo://hub/deprecations.rst#L260-L279", + "version": "repo-lines-v1:sha256:6eb6058cc0a56c9dbe05984a6e8ca36b24ca6dad3d27fd7e2e7bc4d193116d9c:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMxMzliZGRkNjBkZDIxNTQ0NDQ1YjhlNmVjYTU2MDg3YzY5OTMxMDFhZjYyZjBjNmI3MjAzNDUyNjIwOTBmOTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkYzYwZjRjMmVkMzE1NWY3MGVmYTcwOGY5OTAxM2M2MDMwYTRkNTE2MTg5OGY1MGRkMzUyNWNhMjEyNzEzMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNjMzllMzlkYWI1YmUyYTkzNWQ4NDU5YzM5YTJlN2ZhNTE4NjNjYTM0YWVmNDlhMDQ0N2NmMTdhNDcyMmI3YzYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgyYWI3YWUwNjNiZmE1ODc5YzkwYWFkZDVlMTA4MTY0NTQxYTZjMWYxMTQzMWQ5YjJkMWJjMzk4NDYzMmNmYzEifQ" + } + ] + }, + { + "id": "claim_00a04b1664234bda8b66f6fd434586c7", + "statement": "The 2022-01-25 changelog deprecates the lower keys, upper keys, and undirected graph transforms, but its DTL replacement advice specifically names the lower keys and upper keys functionality.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L966-L971", + "version": "repo-lines-v1:sha256:d4d76bc6ec1417cae213bbc39a4661bfcd414c58f568241177d01c305cb66799:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDI3ZTc4ZTAxYWFhNDMxMTA2YmNkOTg5OWRhNTU4YzA2YWIxNzYxMzA2MzJjZTI1NmY2MDgyMDIzYzdlZWUxOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmNmMDAwMzk4N2ZhODk3OThjMGZjOWJjMWQ5ZDMzY2UxN2ExYWVkZmFkY2YzODM5YTE5NGE1NGRhNGQ5ZDcwZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjk3MDQ0OGRhOGEzNDljYzJkYTZjZDBhMTgyZTc1MmQ1OWY0YmVmNTdmYjVlZGNiNGVkYzU0NDRhMDY2OTVhZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmYwM2E1NDhhY2I1YjFiNzhlNGExMmUyZTYyODdmMTNiNDg5M2ZkMDA1ZGU4YzljMTI4NGI2NWY4NzYzODA1NyJ9" + } + ] + }, + { + "id": "claim_a42c62364088402fbfa2ebb023e5e5ec", + "statement": "The 2021-12-20 changelog deprecates hops prefilters in favor of subsets, directs new pipes to use subsets, and warns that changing an existing pipe may require a reset.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L1006-L1013", + "version": "repo-lines-v1:sha256:82b2de5bfdfb2484be70300eace2477ebe77d835b0c3e5cf35ac40723db1bde2:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDM1NTRkMjViNmM2NzcyOTllMDliZTVkODI5Yjc5NWM5M2RmMGIwYWI1NTZjYWI2MjlmODM3MDEyNGU3OWY0ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmQ2ODI5ZjFiNTk1Y2QzMmNhN2UzZTkzYjhhYzlmZmUyYTUzMjZkYmYyNGRmODU4MDE3MDNmMDk5MDUyYTk5YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjY0MDA1MDgzMmUzMjM2MGY5YTMzYjliNDIwNTcxODRhMzJmZTYzM2ExOGQwNThhNTNkNjJjNzMwZWM0M2ZmZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzYwYjdjZTRjZGQ3NTg1YjkzZGJhNzk5ZGUxMmZmY2Q4YzU2ZWYxNzY2YTZiMDhmZmI5ZmMwMGY4NWU3ZTUxNiJ9" + } + ] + }, + { + "id": "claim_b3c79b59ad6d42dfa2a7aeb170360bf9", + "statement": "Although the roadmap retains selected-entity history deletion as a Q4 2025 plan, the 2026-04-07 changelog records compaction.retract; the focused reference limits retraction to earlier entity versions in the pipe's sink dataset, retaining the current version and deletion state and leaving upstream datasets and external consumers unchanged.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L17-L21", + "version": "repo-lines-v1:sha256:191903043e771524ddb9c9e841238e83d027d2fc29e33b07bcd65b59941566b5:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2IxZjE2ZWJkNmY3MGQzNTU4YzI5OTU4ZjY0ZjAxODk0OTYzNzdkMDVmM2UxM2YxYzA1YTMxYjk4MDgwY2ZiNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTkyNGUyNDU5M2ZjZDM0ZWIyZmI0NWE5Mjg0N2NjYjhmY2E4NjBhNzc3NmRjMmJkZTU3OWYzNjAxOGNmY2MwZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTY3NWQ4ZDFlOGNmNzFkNGFjYTNkZThmM2YyNGVhYzJiMzc3Yzk0MWU0YTcxN2ZkMTUwYjVjY2RjNWE4YjBmMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDQzODY3OTQ5YzdmMWMyMTcyNjdjNTgwNzhlNzA3Nzk1MzljNGEyOGIwMDZhMDY0N2E0MjRjN2VhODY5NzllNCJ9" + }, + { + "resource": "repo://hub/features/compaction-feature.rst#L120-L137", + "version": "repo-lines-v1:sha256:c1d69a90161ee079948048247a0f68607d14df2277df7cba065332c4aa8bf08a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQyMDQzMWI4MWI0NTRiZDg2ZTdhODJjMDkzY2Q4ZjEwNDZiOWNiMWE5ZjlmNmJmMTNlZTI2MzFlZTFmMTc2MjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkYjFmMjA1OTU4YjYwZTViZWU5MDlkZDljYzRmMDk3MGEzNjY4NjA3ODRmOGI3MGVlMTI4MWUzMDI4Y2E3YWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY2M2ViMTI3YjY4YzRiN2UwOGVjNTgwYWJlYjdiNzgxMTIxYmNhMGY2YmMyMzVjOTY1MDQzMDUxMjk3MmI1NzciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/roadmap.rst#L27-L34", + "version": "repo-lines-v1:sha256:7dfb58a9ef506748a4dcbd91faa2e4791ca172edfe946bc58f225342de0f4162:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDQ1NmYzYWMwYmJjNGJlNDc2NDRlYWQyOTUzOTg3YzhkZmU5NDUyNzJjMDEyY2FlNDY3ZWJiNGY1NWQ4ZDNjNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjY3MjY3ZGEyNWJiYmJiY2M0ZjgzYjA0MzAzYjljMzhiYTAxOTljZGFiYzRlZjk3MTI2NGU2ZjczOGNlM2VkNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmRkYTEyZjVlYTcyYzE1MjM5NWFiYjk1ODg2ZWNkYWUwODlmM2QwNjBkYjg2MzVkYTM3YzQ3Mzg4YjQxMDVkZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTNkNDVjZmQ3MjZkZDkxMjYwZjIzZWFkYTYxY2FlNDk5MTQxOWY5YzZiZTBiZTE2ODE2ZWQ2NWQ2NGFhNjg5MiJ9" + } + ] + }, + { + "id": "claim_a30bd851c9544ff79b462667109445a3", + "statement": "Databrowser's warning and the 2022-03-21 changelog announce end-of-life for December 31st 2023, and the changelog names Integrated Search as its successor.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L921-L927", + "version": "repo-lines-v1:sha256:179ddf71bf11d867092283f70d1e4dca826cf0d179b4650fcb3707888942c713:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTgxMDExYzExNWE0N2E3NTgzMWM5NmM0ODYzYjQyNTdhMmFmMzQ4ZjFkZDMwZWVjNDNkZDc4OWVlZGYyMWQ2MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjVhNDg3Y2YyOWQyOTZlN2UwYWY5Y2EyYzgzZjNkYTM2YWNmZjIzZTY5MWY2ZTY5MjcwNWEwNGFlOWNkYWE4MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNWZlOTE4YjkyYjI2Yzg2YjE4ODhmZWY0ZDM1ZWZkN2JhN2FmNmY3NTc3YjE1YTIyNWI1M2EyYWVhZmViNmY3NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGYzZTMxNDg3OTQwNTlmZjdlNmY4YjU1ZjQxZDQwYTUwNGE0ZTliYWYzYTQ3MjM3M2E5MmFhOTY3ZTEwZjcwNSJ9" + }, + { + "resource": "repo://hub/databrowser.rst#L1-L15", + "version": "repo-lines-v1:sha256:d1b0f4913f843fbe06a42eef69d982f7f6f81383319e19c45de7ab4f84f19fc8:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxZWIwMzI2ZjdhZWEyNjU5ZDE0YjkxYjMyMDNiZTU5MGU2M2E2ZjRiNjRjMDRiOTViZTI1MWQ2NjFjMmY0ZjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQzNDI1MDA4MzdjYzRiYjA2Mzg4M2U5ZjFhNTFjN2QyMzcwNzZlODM3MzA0ZDVmMWE2ZmI4MDRjY2IwNjU5ZDgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_a207548bae6e4620994bf708eaf7793b", + "statement": "GDPR Platform's retained warning and the 2025-04-02 changelog scheduled end-of-life for June 30th 2025, but the 2025-04-11 changelog records early retirement; those entries do not name a successor.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L151-L165", + "version": "repo-lines-v1:sha256:f8bb066876fa53dc6590eea59f944f183535f535d4dd3fc15dbe2997cfea101e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhmY2I4OTRlNTZlZDZjYzMwNDhjNzVjNmNkZjUwOGU1ZGI3ZTQyMGJjNTc4M2JjMmFhZGRkOWYzYjUwMDI4MGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE1ZWRhZjk0MTE2NWZmZWQ5ZWQyMmQ1NmQwYTFmY2JkZWVlNmZmNDM1YjRjZWZhYWJhY2I1OTllMzNjOTU0NWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk3M2M1NTczMTcxN2FkMjEzMjVjNDNmNWU1MTk2M2ZhZGVhMjQ2ZGVhNjllODA5ZTM2YjA5YzA5ZjUxZTBhMWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU4NTE5YTg2ZmQ1NDBlYmQ5Nzg4NzRkNjcxMzhmMTRiMzBmNmUwMjZjZjQ1YjMzODM3Y2IxZTFmMWYxMDdmZTYifQ" + }, + { + "resource": "repo://hub/gdpr-platform.rst#L1-L18", + "version": "repo-lines-v1:sha256:578316095fb4e1f19528f4e573890feb160e19a3e64038f207c6e752d8bf862a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ2NzRlYTQ3NjY3M2MwYWM4NDU1M2FjMjIxMmI3OTM1YTk2N2RhMTZhMDEzNjY4OGYwZmZhZjg3ZmViNWJiZmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQzOTZiMGU3NTRjNWZmZWQ2NmM2NWY5YTkyZmMzYTE5YzhjYjQ2NmU1N2NjNjJlZWVhMTM5Y2YzNzM0ZjhhODIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIifQ" + } + ] + }, + { + "id": "claim_86380e4de646407d98398b8060767186", + "statement": "The 2025-04-02 changelog announces that the Notifications feature will reach end-of-life June 30th 2025 and is superseded by Metrics; that entry is an announcement, not a separate report that retirement occurred on the scheduled date.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L159-L165", + "version": "repo-lines-v1:sha256:663a998602e50f1e3e04c874fa38c23b54b12bef8fa1bc9ad4c69755e2494b1a:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU2ZGEyMzMwYmFmNzkyZjM5OGVlMTQ3ZWY2YzY1NzEyMjI3NWY3ZmJmMTFkZjUzZDJhM2JhNzA1ZTgzNzY4NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTVlZGFmOTQxMTY1ZmZlZDllZDIyZDU2ZDBhMWZjYmRlZWU2ZmY0MzViNGNlZmFhYmFjYjU5OWUzM2M5NTQ1YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDI0ODVmMmQxZjA2YzM3YmE4M2QwYWQ2ZjJhZmY1NTU5MDc2ZDQxYjlmMDQyODkzMjVhMjRhNjE0MzA4YzM5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTg1MTlhODZmZDU0MGViZDk3ODg3NGQ2NzEzOGYxNGIzMGY2ZTAyNmNmNDViMzM4MzdjYjFlMWYxZjEwN2ZlNiJ9" + } + ] + }, + { + "id": "claim_67b7aee7ef084c18ad0b533edf9f650c", + "statement": "The 2025-04-11 changelog records removal of support for multitenancy and the Management Console tool; the Console warning identifies it as part of multitenancy, and the roadmap marks multitenancy discontinued.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L151-L157", + "version": "repo-lines-v1:sha256:c16c9e9a5a8c4bd525a69e21ac67f7308f965efc9805f943d381c8110555452e:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGZjYjg5NGU1NmVkNmNjMzA0OGM3NWM2Y2RmNTA4ZTVkYjdlNDIwYmM1NzgzYmMyYWFkZGQ5ZjNiNTAwMjgwYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjM5OWJkYzFiNjg4MmQzZjJmMTA1MWNhNTBkMzg5ZWEyMjJjZDA1ZTEwZjU2Y2VjMjllNjE5ZDQ3MGFmM2Y0MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTczYzU1NzMxNzE3YWQyMTMyNWM0M2Y1ZTUxOTYzZmFkZWEyNDZkZWE2OWU4MDllMzZiMDljMDlmNTFlMGExZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmNiMDgyYTY5ZTUxYzcxODFjMGM3Yjg1MDM5ZjhjZjhkZDRhZjA4NmJkYThmNGM4ZjljODc2ZTlmOTE2MjViYSJ9" + }, + { + "resource": "repo://hub/index-management-console.rst#L1-L17", + "version": "repo-lines-v1:sha256:518705b1acf1a7e9bd17325ceebbc33fdbc901d46e63686181fb45fc2331dbb1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJiNTg3MTU2MTJlOGIxYTg4ZGNhOWY0ZWYwM2FkZTA3NWRjNWU2NTI0NDgzOTUyNmFmZmM5MTNkYmIzYmI3OWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdjOWRhNTA5MDFhNTEwOTY4OTdiZTc5ZGQzNGMyOGQyMDczZjY5NjViM2Y0YThkY2U5ZWE5ODhkZmUzMjUzNzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/roadmap.rst#L178-L191", + "version": "repo-lines-v1:sha256:00e884f2e0fefc82d14bc8bbe157c36eb17f442e1eae7aebe8ee069259e9a0a8:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdlZjMzZmYyMDc1ZjgzNmNjM2U4NmZiZjE4NzlmOGJkMjAwODkwZmQ0NTFlOWJiMWNhMzY5YTgxYTcyOWRiZDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1YzZkMjI2ZDAwMWRiNTUwNjA1NWViNTdiMWFmNDI0ZWUzNzU0OTNmMDU3MTlkOGJmODNlZDgyOTJjYTA4ZjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImViZDdkYmM1NzMzYmVmNGY1NTg2NWFhNzM3YjZiMDM5YTU5NGJmYTAxYjIzMzUwOTNjYWMwNjM3OTg4YWZkYzciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_4a9288e9ed5c4183b271444d42c88926", + "statement": "Sesam Talk, documented as a Universal Semantic Data Synchronization service, was discontinued in November 2024, and its retained landing page says it should not be used.", + "evidence": [ + { + "resource": "repo://hub/discontinued-services.rst#L15-L20", + "version": "repo-lines-v1:sha256:bae2d6823d3720fdc1fb30948fa46bdcc0840072c40bc1b4327f570f4a6219de:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTZjNTRjMDkzNDVlZThhZDEzNTE0ZTQ2Y2JlMDZlZTk0ZDIzZWNhYTg0ODA2ODg2MjIxMWQ4YTQ2ZTUzMzRkMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWZlMzUxNTFiYmM0YzJkMDU4ZGI3ZDZlYjM1MmFlNGIxYzY2NmZhYjFkMDljYzg5MDMzOWY2Mzc0N2E2ZWY4NiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmNlZGI5YjM2OTFmNDJkY2U4Y2ZmZGYwZTcyYjBkOWVkZmM0NTY1OGJlYjVhMTVhYTQ0NmVmODRjMDMwMWY4OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDgyYzQwYzViMGExODBhZjk2MTc1MzFjZWE5NzMxMGM5Y2Y2NGMzNWUwMDk0Yzg1YmY4YjMxNDE1NGJlMjVhMCJ9" + }, + { + "resource": "repo://talk/index.rst#L1-L9", + "version": "repo-lines-v1:sha256:2ca51bf6570990aaa7fbf8c7d6628d4aa9cca931fedf75d74ef970884a791ff9:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzA0OGQ1YmY4ZDlmOGU1NDQ2NTMyNjZmM2I4MGFkNDg3ZDNhYTI1N2MzNzBhZDA2MmE0ZDRkMjVlYmJiNmU3YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWVmNmE4NWI2NTU1OWEwYjU5N2RlMGIyNjYzNDQ2NWNhOWFhZjdiZGFjN2Y3NWRiZDY1MzUxYTRlOTM3OGM5MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmYxYzQ0YjcwNTQ2M2NhMWFjYjQ0YTViZGY5ZDBmZjY1M2I3MTk0NGJjYjkzZDg5NGY5ZDk5Mzc3NmQ4MDE5OSJ9" + } + ] + }, + { + "id": "claim_4fc3c214bd214bd3ad27c8be66ba4d07", + "statement": "Open Sesam is documented as discontinued and should not be used; its historical purpose was free hosting, enrichment, and publication of data, and the cited discontinuation notices do not give a retirement date.", + "evidence": [ + { + "resource": "repo://hub/discontinued-services.rst#L22-L27", + "version": "repo-lines-v1:sha256:958bd0e96b40d31dd9f977b81eff2dfc7853d10810b73357fba678e36258318c:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjVlZGNlODljYjVlZTVmYjUzM2M3NWFkYjMyOTZjOTRjMDI0NTc0N2Y3YmUxN2VlZTI4OTdjNDU4NTg1NjYwNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYmI0ODI3OTgzMTU5ZGZiNGFmNDkwM2VjMTI4ODZiM2RmNjI3NjNjYTk3ZjdjMjJhNDMwZjcxNzQ1NDRiNmUzMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzY1OGE2NGY1OWU2ZTZmZmNhM2Q5NjljYjEzZTQxOWRiOTU4MWNkMDliZDFjNzhiOWFjNzljNWE0NDgzMWY1YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/open-sesam.rst#L9-L16", + "version": "repo-lines-v1:sha256:4324e1ef1bc1b3a7846775d23b785407f2514add75dbc7ba7f79793cca33d419:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTM3OTA2MDY1ODdiMzNjN2JjZWQ5Yjc3ZTFiZTg5NzAwMTY3NzEyOGMxMjZiODBjOWU2YzJhNDg0NzUyMWJmMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTc2YWZhMTY3NDE0NTIyOWUyNDU5N2Q4ZDY0YzU3MTBkYzc1NDUyNjBmYzk5Zjc1ZmZiZDIwZGU0ZDJlYzI2MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWU0ZGU0NGU4YmIwYTg1ZDU1ODk2YTk1MTA5ZTMyOGJjYTkxYjYxZWI2MGFiY2EyMDFkZDFjZTQzY2FmOGE4ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmM0ODJiNTFlMDZiMGM3NDdmYzk2M2Q4Y2E5NzlkMzU0MjBhNjNiZjc1Y2E2MjgxZWU0MWEyNDMyYjk1MDM5MiJ9" + } + ] + }, + { + "id": "claim_5b0cbb5ea1764851bdb888642ae33d8f", + "statement": "The roadmap is explicitly subject to change and retains self-hosted clustered architecture (Q2 2025), multi-compute resource optimization (Q3 2025), selected-entity history deletion (Q4 2025), and high-level configuration (2026) in its Planned section.", + "evidence": [ + { + "resource": "repo://hub/roadmap.rst#L7-L43", + "version": "repo-lines-v1:sha256:6eaf6021e076daade1e6c7566046444c4682e81a109923f43a9da6377efa7492:eyJzZWxlY3RlZExpbmVDb3VudCI6MzcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmMDZmYjc3N2QyZjMyZmJkNGQzMDgzOGQ4MmViYWFjNjQ3NjcwM2VmMDdhZTMyNGQ4MDE4NDNmODgxYmIyMmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4MjM1YjE0MzllMTdhMTExYzJhNjQxYmFjZmQyOGUwNzI2N2U5MmJkM2NjZDZjZjBkY2FiMWE5NWYwMGNkODYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgyM2ZhYThkNDBhMDU3NzViZDE5YmU2YTU1ZDAzZDAxZWIwYTJkOTQ5OTcxZmVlMzE5Njk5Yzg5ODMzNTkyZWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUwNTEwOTBiM2E1Y2YzOTk4NjViYmEwNGNjOWFmODYzN2M0Nzg2ZGExYzIzYjlmNWRhOWRkNWJhMWQ4ZTU3ZjIifQ" + } + ] + }, + { + "id": "claim_e40b744bd358403a976f795fef123e29", + "statement": "The roadmap describes Public Preview as experimental use and retains exploratory prose alongside availability notes for TTL on deletes, webhooks, and connectors, with property lineage offered as part of Integrated Search.", + "evidence": [ + { + "resource": "repo://hub/roadmap.rst#L45-L94", + "version": "repo-lines-v1:sha256:9bd1ba76a58a0d658b5030af8433a4575b846046ab676e7953fbf5fc8277df40:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEwN2RkMWE4MTA4ZjYyZTZhOTYwMzFlZjljZTBiYjc0MzI2ZGM4Mjg3MWVmNTU5N2Y3N2U5NmVkNjU0MzU3YzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ2Y2Y4NmQ0YzRmMzhmMTQ0ZGUxMWU4M2NjNDkwNzU2Y2U4NmQ2NGI3MDM1NGY3MTkzMDM1OTlhNTg5OWRlNTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhiYWI3NTYxMTc1ZjBkNDhkMmRiMzk4Nzk0NTcxMzYzM2Q4ZDgzMmE3OGU4ZGQzZTA4ZDBlZWZhMDYyODYyMzciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM2YWY4MWVjOWI5MGYyNWYyNmU4OGVlMGVkNDFmMDVhMWQwMGJlNTY1NjI1NWU5MzA0ODBjYWEyMmMwYWNkZmQifQ" + } + ] + }, + { + "id": "claim_d4c604312d1d45cf85c76c2e71a90b49", + "statement": "The roadmap's Generally Available notes qualify Metrics, Integrated Search, and self-service VPN availability by Clustered Architecture; this does not establish delivery of the separately planned self-hosted clustered variant.", + "evidence": [ + { + "resource": "repo://hub/roadmap.rst#L13-L18", + "version": "repo-lines-v1:sha256:49d66c3f194467a11c7370549845aa5e30b3e8154258647b0a7208337101d0c5:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzBlMTQ4ODk3NWIwN2RlNGFkM2M5NDU5OWVhYTBmN2Y5Yjg4ZjQ2M2U0MTllNDAwMWMzNTQwMGIzMTdhMDUwMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGQzMjIxOTlhNjMzYTIwZDgwYWY5OTRiODY5ZTU4YmJjZGE0YWQwMDU0ZWE0NmFmYjQ1Nzg1ZDUyY2JlZTYwYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTg1NjkxOTkxMzNmZjkyMzJmNzVjMDZlY2ZkMjA2NmUzMTAxNjRmOTE5MTJmN2IzNTQ0YjJiNDEwZTliOTQ2NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDllYzVmMzIzNzg4YTFhZDBhNTc2ZTBmZTZjMWIzNjI3ZGM4ZTdiZWJmYzZjNzUzZTNkMzNjNDVjODVlMDgwMSJ9" + }, + { + "resource": "repo://hub/roadmap.rst#L168-L176", + "version": "repo-lines-v1:sha256:49c9be785a241cf8b8b31f5d298429cab8c0b7dc4c05e02e408c19d50d2ccb3b:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWRkNDI1YjU3YWIyN2FkYzhmNzZlNTQ1NzcyMTA2ZGIxZDJiM2NmNzRiMWE1OWRjNDFiZjdlMWI2ZWNjZmIxNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDNhOTA1ZTYyOTE0NTU4NThjNGVlMWFmZDM0ODk4YjNiNmRiMWNiZGFjNDZkMmNhZDc3ZTc4YTVhNWU3NTNhNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWMwZjgxY2QzN2Q2OWU0YTY1NTBjNTdmNTgzMGExYjVmM2MyMDkzMmRiNGNiM2M5YTJkMjZlMmFjMDkyNGVlYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWE5ZTJkNTRkNGMyZDBlNWU5ZjBhYzRjNTQxMWQ4MzliM2Y0OTdkOTJmNWY4MWY4YjVhM2FlZGMxY2VkNjdmOCJ9" + }, + { + "resource": "repo://hub/roadmap.rst#L96-L127", + "version": "repo-lines-v1:sha256:83b32675ae0f24ba86f08247ea3c194723dfad4e303ec81a0d9a5c85939aa268:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhhNjIxMGIxZGNjMmI2YWFmYjc3MWI4ZTk2ODgyNWYyZmRlODQ4NmMxY2IxZTA0MzMwMjZiMDQ3ODM4MzMyNDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlmNjc0ZjUwNGFmNjYyNWFjYTE2YzU2NDA4MzY2ZGFkYmJmYmJhNWQ0ZGU2YThjZDQ5NzU1Mjg3YmYxZmI2YjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ5NDk2ZWQwMTQ5ZmYzM2E2OWQ2YzkxNzYyMWQ5OTJhZDhiY2E3YmMzMjlkZTVlZTZmMzI2NTk2NDEzNWRhY2MiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMyZGZjYzZiNjdiODZlZDRiMGIwNTBlYWRmNmQ2YmFjMGQyODc0ZjViMGE5ZTRkOTU3YjEyMDg2NjM5ZTRmNjMifQ" + } + ] + }, + { + "id": "claim_bdf8de53e49545a4a7b7a0933fe1ecac", + "statement": "The roadmap explicitly states that all cloud subscriptions now run on clustered architecture and that Durable Data is now available on all cloud subscriptions.", + "evidence": [ + { + "resource": "repo://hub/roadmap.rst#L129-L154", + "version": "repo-lines-v1:sha256:651392c1073aae01632f898f28547424a247b8a5f803e6d3940c923e2be5edc8:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhYzJmOGI5NDgyMTY0Njc5MDU0MmNlOTIzZjYyOTIzMzM3MTc3ZWUyZjQ0ODJmZjUzOWIyYWE4ZjIwZGUwNWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE5ODIzNDE2NGQxOGRmYjgzMzBiZmI5MGRjMTJmOGUzOTNjOWNhODVjZjY4OTgyOWI3M2Q0YmFhMDI4MmNlYzAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjExMWI1OGJiNjhiMGFlMTA2YzFmMGRhM2MyYjVjNGZiODI3ZWNkYTJlMmMwZTFiY2FiMGQzNDM3N2Y0NDMxOGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2YWIwOTQzOGYzZTRiMWFhMWJkYjczNDcyY2Q5ZDFmNjU3OGVmYTkyYTlmYjZiMmM2MzcyZWQ4MGUzZWE0ZDYifQ" + } + ] + }, + { + "id": "claim_327fb36449944545a522e5a5b3db05d2", + "statement": "The pricing reference restricts developer environments to a single developer or CI use, describes them as cloud-only without backup, VPN, or SLA support, and excludes test, staging, and production hosting; production/test environments document automated backup and SLA/VPN support, with geo-replicated backup included in cloud environments.", + "evidence": [ + { + "resource": "repo://pricing.rst#L10-L17", + "version": "repo-lines-v1:sha256:0aeebf4a2eaf5a89396028128f357483ad541c4f00bbfb52b5950204f952c884:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjBhNmJhNGZiNGE4YzBhYjM3YTY5ZDk2ODYzMDBiOWRkZTJiNzQzNDBmZDZiNjcwNjJjMzc0ZTdlZDg0ZjQ4ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDQ2YjhkODEzYzU0NTZlNjM3ZDNlZDg2YmUzZjQ0NzExOTFhMmEwMDk3ZTg4ZjgxZWUxMWNlMTg1ZTJlNWM5NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODYxMGM2NjEwNmUzZjNhODQ3MzQ4Y2ExZGRmNjcxYmE5ZTk1NmJmMjQ1N2FlMmQ4MjkyZDdhODViOGU4ZDBhMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGY3MzYzYmFlZGY0YWMxZDJkMGEzNGM5MzRlYmExZWMwMGVjODgwMTU0NGUxMmQ1MDIzNWUxZTdjYjQ0YjE1MSJ9" + }, + { + "resource": "repo://pricing.rst#L30-L34", + "version": "repo-lines-v1:sha256:c2d8659b6bd8ec41123bea0fefb601046e2fccf6a8912487dac4134b90834e37:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzQ0N2RlY2JhMjVlMjFhMGZkZDViYjM5Y2ZlNDdjMDk0YWFhNjRkYjM1MTVhMWRiYzY2YjdiNmMzYTUwYmI2MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWU1N2RhOTUwMmJmMzFkZDVjZWRjY2M5YWQzOTM1ZWM4Y2QyY2YyNDc0NmZmYzJkNTgyOGEyNTIxY2ZmODI4ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmI3MzQ2MWE5NDA5ZTlmMTExOWI3MjZkMTBmYmY1ZjBlM2MzZjVkZTdhYWFjZmVjZjNkNmFkZmU1NmQ4MzAwOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjQ0NTBmZmE4ZmRlMzQyMDcwYmViYzNmNmNhYzk3YWFjNzY4ZjU1YjQ1ODM0M2MyZDJjMWRjYTQxMjU2ZTFkMSJ9" + }, + { + "resource": "repo://pricing.rst#L74-L79", + "version": "repo-lines-v1:sha256:76311635aac8733fb1572a313e1681cb2299258965d68be69591107bac88555e:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTc3OWRiMmMwODYzMWIwNTQ2ZDY0NGMwYjJlMTFlY2FiNDI3NzQ4NWQyZGJkNjk2MWYyZWRiMWU4NjExZjhkZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTRjMTI1MDBiZDY3MzYwZTQ2ZWFjYjcxMzA1MTEyZGM1NzU3M2E4ZDAzNzA0MDZjZTRjZWZmNTM2OTE2OTk4OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzdkNjkwYWVlNTIwY2Y2M2MwMTdjNTYxZDA3OTc0MWNiN2VmNjgyZGJiYjdjYWZjZWUzMzI4OGQ5NWFmMTRmOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmEzY2Y1MTkyMzU0ZjcxNjE1YWM1MTAzNGIzZTk3YzIwZWRhOTk2NDNmY2FmNWJiZTZkNDFhZDU5YmQxMjE2NyJ9" + } + ] + }, + { + "id": "claim_e45c0a59165e4476811fbdbb6476514a", + "statement": "Developer Pro's roadmap entry retains an estimated monthly price alongside its availability note, while pricing.rst supplies a separate subscription fee table and a Price adjustment section that allows subscription fee changes; the roadmap estimate is not a timeless subscription price.", + "evidence": [ + { + "resource": "repo://hub/roadmap.rst#L156-L166", + "version": "repo-lines-v1:sha256:fdf7dae8444f1b2cf91296c28fe11b1880d782d84a327620d9ee16a69ee40d1d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU2OTlmZjgzNWM1MjMzNWNiYmE1M2RjMzU2ZGI0OWUyYTY2MTk3ZWE5MDY2NDM2NTBkYzk4MWQwNjQ2NGEwZmEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM1NDVjYTY3MzkzZDkyNjVlM2I0NzBjYjE2ZWI5NTgwYjg5YTJiZjczOGQzMWYzMjhlMzZhMWQwMWYwOTIwMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUyZTNhMzMyM2QzYTAyMDJjMjg3ODJhYTAxYTY4YzM2NGI4ZWZlNzY4Y2ZmNThlOTk0NDRjZmE5NDY5MjdkMTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZjMDQyMzk4NDljYjY0ZjhhYzc2MzM1YTg1OTY4Y2U2MmQ5MDI1YWYxNjBlOTg4NTdhOGZhODE2MGRjYzU5N2IifQ" + }, + { + "resource": "repo://pricing.rst#L19-L28", + "version": "repo-lines-v1:sha256:fa307a486ef3ab13ff4839fd8bfb3636371d9b6ba26e0ccd5dd4578a4cfec84f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI0Yzk0Y2E0ZTM0NWY4MmZjMmZkZTRjMWFkYjRhNzhmNjkzNmY0MjYyNmZmYTVlZDkwNjhjMWE1ZTE2NDFjNTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM5MjZjMzQ5Yjc4YWY3YmFhNzc4Y2U1NTI5ZmZmYmE5MGU4MGRlYjNkY2VhMzM0MWEyMGI0YTlmZmViZjE3OWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ3NGZhNGUxM2JiODVhN2IyMTk4OWRjYTAwOTA1NjgyODI3ZmI2MzgyZmI1MzliYjUyMDNhMGYyYmI3YjQ0OWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY5OWIyZThkNjhlNTY2YzNmM2ZjOWU0YzU1MGQxODEwZDM0OTJhOGJjZjFmZjc0NzBhNDAyYWE0ODgxNDQxOGIifQ" + }, + { + "resource": "repo://pricing.rst#L97-L105", + "version": "repo-lines-v1:sha256:77b8bb3ac1bcffb62996cb6119c4693b23352131c29863be75ce0e9687b6e2e4:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzBkZTNjYmNkY2E2MzNmYWY4NWZjY2U2NGZmODg2NTU2ZjA4NGE4N2NhYjk3NzdhNTI3NzY4NTJjYmNkMDQ3NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2ZmYmM1MTg4NGYzZDA0MjI3NjFhZDIyZGU3NDU4MzIyZTM2YWRhZGVmYmU5Njg3YTljNDlkYjI5ODQ0NTU3MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzAxODg5YTNjNzQ3MGZjYzFmMGYwMjhjYjE3YTM3MDE0ZTA4Y2VmNGI4NjYwMzEwZmE0MzI4NjgzZTFjMTRiNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmEzY2Y1MTkyMzU0ZjcxNjE1YWM1MTAzNGIzZTk3YzIwZWRhOTk2NDNmY2FmNWJiZTZkNDFhZDU5YmQxMjE2NyJ9" + } + ] + }, + { + "id": "claim_3843aa97d1754c1dbce793147c3f2bf2", + "statement": "Durable Data is documented as a paid, pipe-level feature with metadata.durable defaulting to false, and enabling it increases the data consumption of durable pipes by 3x.", + "evidence": [ + { + "resource": "repo://hub/features/durable-data.rst#L36-L38", + "version": "repo-lines-v1:sha256:ef64a2ba6793d71e7405451a3c05186ad88d2a08ec717c3b3aec594e83ac8b6e:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODBkOTcyMjE0MmExMDcyNWYyYzBjMjkzZjA1NWE5M2I5M2E4NWRkNGVkZjk5ODBiYWRmY2U2NDI3OTQwZjNkZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzczZTUzYzJiNzc0NjFiOTJhN2U4MTc2NjZkZTJlNjkxMDlhMDdlYTEwNjkwMWE4M2RkNmYxY2NjYWQwYjNlZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjM1MjI3OTJhNjdlNjM5Yzk0MjlhY2QyNjM5NzNmYjFmYzE2ZTJlYzE4ZTk2MzdjZDkxZmNhODYzMGM0ZTA2ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTQ3MjJiNmQzZGY0Nzk3NjAxNDIyNWIxZGEzYTI3YzVmMmU5N2U1NzhiMzg3NTBkNjRkMTZmMjBhNWU3MWExNCJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L68-L89", + "version": "repo-lines-v1:sha256:1f8f661847185626f1978a092e3b5cd70cd952f3167a159907dd3e947fc1b9ca:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImViMzU5YzVhN2ZjODU1ZDYzY2Q3MTI3MjZkM2RjNTY5OTcyZGI4YjVmZjI4YmEyYTc0YzM1YzIxNzk0YWQ2NzciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyYzJmODkyNjk4MjY4YTFiMmUzMDQxZWU0YjliM2VjOTBiNGYyZGIzMjA1Nzg2MmMzNjBjNGQ3ZWY2MjIyOWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRmYmQwMDkzMTRiYzI3MDg0MTY3MzRhMDJhZTVmZjM5YTFlNDhhMDUwYmU5MWY0M2IyZmFhOTIwMDJjNjJiZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_7e76b81cf958441bafc1e88f76868ef1", + "statement": "Durable Data documentation describes high-durability storage and replicas as reducing data-loss risk, contrasting this with the possible loss of the last 24 hours during recovery from cloud backups and highlighting pushed inputs and non-idempotent sinks as sensitive cases.", + "evidence": [ + { + "resource": "repo://hub/features/durable-data.rst#L9-L24", + "version": "repo-lines-v1:sha256:507b2a2d9685e7fb977ded357edbcb1684e9f6bd7e7e1e184a20d6c666772d26:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4Y2YwMTMyZjM2MThhZDBkYTk2Yjk3MDk0NDVjZTM4YzA0N2NhNTI0YWVhOTFlYzQxNjdlMzhhZGEwNzkxZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ2MzAwOGU4NmYwZDQ4YjI4YjFlYTJkMTgyYjMyMTEwZjI0ODk5NGRhMzFkZjJiNzllZGFkNzljMjQ1NGMzYmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJmZTEzNjU1N2M3OWNhZmNlZjUwN2ExNTc5MGYzNWZiYWVjZmVkMWE2YTZiMWQ1NzM4MDAwODUwZDAyODAzZmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjljNDAxODRmOGZhZjQxMWUwNmFmODRlYWFjOTQ5OGY5Nzg2MjNlNTNhMDYzMDYzMTZiNzdhMDI3ODlmMTAwNDkifQ" + } + ] + }, + { + "id": "claim_5fe7396de92a48d5a8307b4daac9c163", + "statement": "Integrated Search is marked as a free feature but documents a 2x increase in data size for global pipes when enabled and availability for subscriptions with clustered architecture.", + "evidence": [ + { + "resource": "repo://hub/features/integrated-search.rst#L1-L16", + "version": "repo-lines-v1:sha256:996e315a87feae8cf011c77e6cd73f57a9309c2f9f123b0c8c67e50a1365da7e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4YWY2MmFmY2I5NzM3M2E0ZDUyZDVmYjdkZTFjNDY2MTAyYjY5NTlmMzM5NGY4Y2FjMWQ0OWVlY2I0ODlmYjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE3NjdkNDEzNDczNWU3NjZlYWM5N2E1ZDg4OWI0NTExNjM4OWVmYjRmNDY1NDgxZjlhNjZmYjg4NDZiOTNjODMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM2ZmQwNjE1ZTUwOTcyMDI0MzM2YTAxODVlYTY4Y2JjZTA0MWM2Y2QwMTAxNGRkNDI4OTBhMzIwMzUwMzViYzcifQ" + } + ] + }, + { + "id": "claim_85fac872af4247d292fa00e570410643", + "statement": "Metrics documentation marks the feature free, describes an enabled metrics-and-monitoring bundle including custom notifications, insights, and the metrics API, limits availability to clustered-architecture subscriptions, and instructs readers to check the monthly-price effect through enablement steps.", + "evidence": [ + { + "resource": "repo://hub/features/metrics-api.rst#L1-L31", + "version": "repo-lines-v1:sha256:28de54d5f12d8a3cbf21194c89757d69d7b28542c3139659c672ee0da36348cd:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVhNzE2ZDdkMmZiMTBhZTgzYTAwNDI2MzI2ODM2ZmY3ZWQ4NTAzODI4OGRkMzEyNGMyOWMxZTNiMzZkNWZhMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxYzNkZGY3NmU3YzI2NDA2NjQ0OWQ2NDFmZjgxNDRhMDFiYmIyYTA5YTY5YmRjNTJkNTk2YzJmNmQ4ZmExM2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNkOTMxZmRmMjI3ZDMxNDFlMDJhNDQ4ZGNmNmEyYWY5MjViNGFmNWU2NzE3NTkwNzBjYzkzNjY2NDZhNmI5MzcifQ" + } + ] + }, + { + "id": "claim_1655fb24704146e6a6e23991df28097e", + "statement": "The SLA reference states a 99.5% uptime target per installation and defines planned maintenance, downtime, and exclusions, so its availability target has contractual scope rather than establishing per-pipe success or request-latency semantics.", + "evidence": [ + { + "resource": "repo://hub/legal-sla.rst#L5-L25", + "version": "repo-lines-v1:sha256:0edfc95a21ff5d27f2b53ebdd378a4312377f89ebd46c8c357924cf0ad9c5ecd:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkNzkwYzc1MmQ4OTE0YjA0Y2QwNWFmMTk3ZTgxNTU0NWNmMDkwZTAxYWUwOWQzYTlkMWRhMWU1ZTdiYjVmMWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwZjAzMzVjZWVkNjhkNjI3MTMzZjdlZDAwY2FmMWEzZGM1MjFiMDE2ZmViMDM5NTNkYjgzY2I3OGU4ZTA2Y2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYyNDRlZWY2NDE3MzI4Mjg1MTEyNjFkYmMxM2FkOGViMWNmZWUzYmM1Y2Q5Mzg2YzY4Mjg0MTEyMzE0Yjk4NTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ1NTg1ZjY4Yjk1YzE0M2YyNjNjYzg4OTkzZTlhYTU1ODRlNGI2ODhiN2MyOTRjZGRkZjk5ZjQ4ZDAzNzI2NTUifQ" + } + ] + }, + { + "id": "claim_a07a6e1a024040d2a0011ce81d4cce10", + "statement": "The SLA reference distinguishes reaction time (starting investigation) from correction time (restoring normal service), applies stated business-hour and holiday qualifications, assigns reported-error priority through the vendor, and ties the selected SLA level to the service arrangement.", + "evidence": [ + { + "resource": "repo://hub/legal-sla.rst#L142-L162", + "version": "repo-lines-v1:sha256:502905fac1db64bfd54a0a8d71eb857b182d9c0b508b0b057d587ed54abb5c94:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM0OGIzZWExZDRiOTViOTQ3MzljYWY3OTYwNTNkYTk4YWY5NDkyYTAyYWJmOTNlM2YxOWNmZDVkZDI0M2U2N2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ0YThjZmM0MjFiZDYzZGEwNDZhN2EyZjlmMTMyYjQyYzBlNzU4YjVlN2I3OWI1MzdkNGUyMTVlZDE2YjMzMGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImEwMGMyNWRkYjk1NWM1YjIwNDNhMmI2MmNlZjg2Y2IxODQ1NTkxMWUxZDhlOGUwNGI3MmUwMDM3NjA2ZDY5MTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE3MTFlNmFlMWVkNDdiOGEyZjI0NjMwYjAwYjFjZDJkYWIzMjNjZjI0ZjVmNWE2NDlkOTU5YWU2MGFlNDVmODIifQ" + } + ] + }, + { + "id": "claim_f9055c5f537d4d3aac0f442f7fce7eaa", + "statement": "Terms of Service section 1.2 describes access to evolving service functionality rather than a use right tied to a particular underlying software version or fixed functionality.", + "evidence": [ + { + "resource": "repo://terms.rst#L46-L56", + "version": "repo-lines-v1:sha256:0cfc473f8ee3fd521f672ec65c18d1ecaa8147755f19d10e4c651c02bcd82123:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhNGZlMzY5YjJiNTQyMDY3ZjY5MWUzOTEyNjFmNmJkMzc1ZmNkNGViMmY4NzM1ZWI3M2RhYWVlODJlYzZlOGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlkMDM1MzY3YTFiY2I2YTJmZGNlZTg2ZDdhMTZlMTNkOTUxNjFlODIyMjU4ODNmODQ5NDE2NTM0MGJiNTc2ODYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY2ZjE5NzJmMGQ4NjQ2Mzk2NGE1MDU2MzY4NGE4ZWNkMjA4MGUwYzJjY2ZlOWNiNTQwMzA1OTM0OTNiMmU5NGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRjMmVjMTAxMGE4ZDZjZjg3ZGQ0YTM1NTRlODUzNzJmYzliNWQzNGY0ZGJlNTY2ZjRmNGI3MjczYjdkYWZkYzYifQ" + } + ] + }, + { + "id": "claim_7773a730983a409b8f21b6bdb6d73887", + "statement": "legal-service.rst is a contractual service specification containing data-reconstruction provisions, customer network/access responsibilities, and the Service Desk error-reporting procedure, rather than a standalone runtime implementation reference.", + "evidence": [ + { + "resource": "repo://legal-service.rst#L30-L56", + "version": "repo-lines-v1:sha256:f0d55e9185d345916d3c1ad286a2b46560eebd7f3399a7cb14a86274557f3ee1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg4ZTZlM2UxMGUxMmZkODZlOWQ3ZmJmOTdkZDY0N2JiOWUzZWVkYjk3NGQ2YzdmMjU1MTI3ZDUwMTlhNzg3YjkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNzM2MmJiOTJiYzEyN2E2MjQxMjJhOWUwMGFmNDdmMDQwZWE2YTE4ZjE0MjdiNDJmNjQ3NDRkZDhjZTA4NTkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhjNDhiMTRhMmVkYTkwOGRlMjRjYzBiZjE5MGI5MzFkODE4YjAxNTQ3ZjUyOTNkOThiMzE1OGRjMzNjMmYyMDYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRmNzVjMzk4OTg1MTEzNTYwODk1MmMzOTgyOGE0NGYxOTU3MWJlODlhZDI1MzExN2JhODYyNTVkNzBlMjllNDQifQ" + }, + { + "resource": "repo://legal-service.rst#L7-L12", + "version": "repo-lines-v1:sha256:a589471c3d262bc261b1e9cee5a390b6a0198d40a2538cb4ef29421a8eeb463e:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWY1NDU2MjNlZTVhODk2M2I4OGRjMzgyMzFjZTE4MjI5MDY2Y2NiNzY1MGI4NmRiZjI2MzUwZGE0NGY3NDRiYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzZkZTE2YTdlNjhjMjZjM2JkMTBjNzZkODEwYTU2OTc2Y2IxOTMyMWNiZDFiYjRiZmZkY2RkZDNhMGY2Yjc1OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWUxOTBmMzViMDRmYjBhODAxZjU4MjQ3NTNhNzM1MGMzN2E5MjVjY2NlN2VkMzcxZjJhMDc0ZjEwMWUyOTc1ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2FhYWZiZTZjOWNiZGVkOTQ3ZDI3ODAyZTZmNGNjZGIwMTE3YzAxNTdlMzkxYTNiNmZlMzA3MTQxYjMxYjhkNyJ9" + }, + { + "resource": "repo://legal-service.rst#L78-L93", + "version": "repo-lines-v1:sha256:7ce48ba319070bc6f1cacc2716a6c2168fc38d59e03b55f70dfa8b609d0b2e72:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg0YWUwMWY0ZmNjNjhkMjlhMGM0MWEyNzI5YWM2MDI5NDU2MGY4MjYyNDUzNzRiMTc0NWQ3Mzk1MTlkNTcxYmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJjZjMxYTU1ZjY1ZjU0NGQ2OTFkMDRkZGJlMmE5NTA2OTUxNjhkZjhiZDYxOTM2NmU3ZTBjMGUxMDU2MmFlMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ3Y2ZjMmM0MTUwZTY3ZjlkZWJjNjQ1ZjAyN2MwMDllYjVjZmM2YTk2OTE4ZWMwNTQ1ZGZlNGI5Njc3YzAzNjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_9555c93d54674c6d96ef4135b7c28480", + "statement": "The Data Processing Agreement applies if and when the service processes customer personal data, forms part of the Terms of Service, and defines the Customer as Controller and Vendor or Subprocessor as Processor; this applicability is not stated as dependent on the GDPR Platform product.", + "evidence": [ + { + "resource": "repo://legal-dap.rst#L38-L42", + "version": "repo-lines-v1:sha256:172c7401f726c004d7617e2957606789d15d293c4b7ec43baf4c98c517ad624d:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGE4YzFjZDlkZWU5NzNmNGI5ZTRhZGIzMzdjMjgwMDgyMGI5MGFkZmIyOGRkZTAyNDJlMGM3Y2U2ODJmM2FjYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTY1MDVmMjFkNjA3MGFlOGI5YzI0ODNlYWMxMDkzOTY0MjM3YTk5OWY4NGM5NDE1MmNhMzlmODQ1ZGUzYzdkMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTgxZTE5NjI4YmI4OGZhMzc0NjkzZWExMTk1YWY0NGU2YmQ3YzAyZWNlNmY0ZjIwZDIzMjE2YThjZTFjZmM3NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDVjZjRmM2MyYzA0ODAyZDhhOWY2ZjUyYTcxNmQyMWQ4Y2UxMzNlNzJhOTg3OGM1MzQ5MDkyYjFjNDg4NzI0NCJ9" + }, + { + "resource": "repo://legal-dap.rst#L65-L85", + "version": "repo-lines-v1:sha256:cc768de9520cfe44e31a978cb8923ba25b67ad3381b432a710a4b25d01ea651a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ3M2UwMTgxNjUwMmM5YTAyMTY1NTRlMzlmYzEwZjVjYWY0OTk0MDk1NzhhZTYzYWE1ZjNlZDc0OGFhNDhhMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRhYzE3ODg5NjA3ZjM5ZmYxOTg0MTM1ZjQzOGExMWViYTVlNjg0ZDQ0M2I0YTNmMzc3MGViMzYzY2I5ZmVlNzMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRlMTQ0MzQ1MjM5YTRhMmRjYWY0MDlhMTEwODkyZDk5ZTdmZDJhNGQwYmRkMWJjMzhiNjViZTY4ZjhkOGY4OTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZjNzliZTMxOWQ5NGVhZGEwZWE1ZjhlOWQxZWU5ZWRjYjMzMjFjMWYwN2ZhMzdiNDkxNDEyZWUzNDZlMTg1NjUifQ" + }, + { + "resource": "repo://legal-dap.rst#L7-L16", + "version": "repo-lines-v1:sha256:a69c9ea625db2d814e6d045d9842fe025bbd01253bb1c970f9b556fb44a1d6b2:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZhZDU4ZjkxYzViZWI2NWY1YWMwYjQwZjQ5ZGZhODM3NGU4NDI4OGVkMmMyZGI5Yzc4ZmNkMTA5NGQyZGI0NWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM0ZjA4NWZiYWQ0ZDgxODEzZWVmMWNjY2QxYWIyMTg0YjMxOTI3ZGFhMDdmMmE4ZTY4ZDhmYzRkMTEyOGZkMDQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkwODJiOWUwYWZmZGU5NGNjNmI3OWY0Y2I2NjA0MGJmOGZlYWMzNmRkMjkzYjhjY2M1MGZkN2I5YTEyNDFhZGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNiNDg5ZWQwNmY5NzRmNTU4N2Q4ODI0MTA2MGY5YjAzZTJlZmFlOWI2NTJlOTIwOTEzMmZjNWRiMmIzMjNjZGIifQ" + } + ] + }, + { + "id": "claim_b02da70547db4eac899e58d9162c7a11", + "statement": "The DPA's deletion/return section is tied to cessation of services involving personal-data processing and includes legal-retention qualifications; it is not the dataset compaction configuration for normal runtime history retention.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L90-L118", + "version": "repo-lines-v1:sha256:d420c274ccff8f1b2336afddff9ceef46e9597df0cdb96d4172297853e192329:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdmYjZlY2M4NjVlYzEyMzc0NzUxZGFjNWE3ZjQ3NDAzOWMwZDI1ZjNhZDEzNTM5NWY5MGFmOGJhODYxMTdkNzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImMyMGFmM2JlM2ZkYmQ3YmQxOGU3MDMxNTFmNmNiNWM1MmY2OTFlMTQzMmM0NDEyNDg2NGFjMDRjMzlmNTEzZTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhYzg0YjUzODYyYTYzMzVkZjgwMTcyMDcxNGIzMTBkMmVmOTZhOTdhMGVmMWIwMThkN2I4NmU0OGJiZDVlNzYifQ" + }, + { + "resource": "repo://legal-dap.rst#L378-L408", + "version": "repo-lines-v1:sha256:761b680534b81acda8dac04b62367b487b748f060d5da0aba025af213750298f:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxMmUxYWM2MDA1YTA3NmIxNmJiMzAwZmZiYTBmYjI2OGM0MDVhNjQxNTY3MDg2ZjM5OWIzZWI2ZTc5ZWNkMWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhlZDU1MWRiY2VhOTkxMjRjOGY5M2VjMjVlNWFmODI0N2ExNDZlOWUyNmE0Y2Q0MWMwNTg2MzA5MzFiZDkxNmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg5MmEwYTkzMDdiOGMwMDMxNjNhZjNjNzVlMGZjZjk0YjEzMGFkMWRjNjU3ZmZkYTJhZTI3M2U1N2RkZDJhYjMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQxYWVkM2FjODk2ZmMxZWU0OWNiODY3MWJkNmZlM2ZmZWE0MWMyNWJmNzE2NzFmY2RkMGQ5OWFjZmJjY2YxNjMifQ" + } + ] + }, + { + "id": "claim_8c5307014d7b46d09f7d037824536a9b", + "statement": "The privacy overview explicitly says its policies were last updated September 2020 and separates collection purposes across notices, including seminar registration, general visitor/customer contact data, service personal data, and recruitment data.", + "evidence": [ + { + "resource": "repo://privacy-policy.rst#L126-L145", + "version": "repo-lines-v1:sha256:522c2ad846dbc73eee70f24e03a9d4711d55acc8ce8e391e48cb840b35481447:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc2ZWY2ZTJmNDM3Y2JkMjU5OTlhZGNkZGY2NDkyMTQ3NzIwMTM5YzQ2NDY2MTNhOGZlZDE4ODA5YTliZGEwZWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5ZThlMGE0OWY5MjFmYjQ5MzQ3YjEyMmQ5MDQyMGFlYWFmZDMwMDdiZjI3OTU0YmMwYmNiOTk0Y2Q4NjUyMmMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBjNmM3OTNlMTAyYTk5NDljMWU2YTc0OGRmMWUwMGRiYjFjMDRlNmE2NzFkMzkwMGU0MTViMDhiOTliYTY5MTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgyNmZhYjExZTg4OTNlMzVkMzZhYjgyZDNlM2RiZjUyMzA0MGIxYjU3YTJkZTM3Mjk5OGIxNjJhYTA4MTVkMjgifQ" + }, + { + "resource": "repo://privacy-policy.rst#L308-L353", + "version": "repo-lines-v1:sha256:c9baab603be5989eed40cb5c65210691c2dcc405dd367310f8de083ac71c3c29:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZiZTEyNTAwYTdiMGMxZTMzYTRkYjIwMzRhNDhhNzRkZGZjNmRmMDRkM2IyZjg2NzIwYjA0NTY5YzNiZDEyMGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUyMjQ3NzUyZjRmMjJhZTQ1NzU2MDljMzc0ZTYxY2YzNzhiMTU2YTBjYjgyNzg2MDI3MmZjYTUzYTBjZWZjYzciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBjNmM3OTNlMTAyYTk5NDljMWU2YTc0OGRmMWUwMGRiYjFjMDRlNmE2NzFkMzkwMGU0MTViMDhiOTliYTY5MTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzMTVmOWJlMGQ5OWNkNDZhY2E1M2JkMjRmZjg0Njg4ZWU3NzNhODk3MjBkMWQ1MTQzNDMzMzBjY2ZhN2VlYmIifQ" + }, + { + "resource": "repo://privacy-policy.rst#L5-L35", + "version": "repo-lines-v1:sha256:e5217a0dfd65cb379601e2fb692d4cb9b5261093901930b29915070943d4afd7:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ2YTgwNTUxYmQwZTI0NWE4YmY0OGQ5YzcwMDZlNDIzZmE4NjJiN2ZkNTNhNzc2OTQ3NTk0MGFkYzUyMGU1ZDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4MzBjN2MxZTM2MmUxYzc0ZDVlZjk5NmE2NTYwMGI3ZmQ1ZDVhNGNiNmU4YzI1ZWE1NmU2MTg5ODJmZTA3YjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhZWRlYzJlMjBkNWViNWJmNjAxM2E4Y2ViNWRkMjZmMjUzMmJiNjIyNzNhMDMyOTJhMTA4ZDE3YmJlM2UxYWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFmNWIzMWZjOWJjZDIyMzk2ZTVjNDJjMDE4ZmFjZmJlNWFlMjk0M2JiNDhiMjU4NWQ0ZmYzZTMzNDk2NjFlMGUifQ" + }, + { + "resource": "repo://privacy-policy.rst#L523-L529", + "version": "repo-lines-v1:sha256:1362a147b5b8d2cb2f86f7b853f2c2725c992064d0f09a77136f8d1676a1a47c:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODlmMzE5ODYyZjZjZGMxZjFmMGQ2NTM0Y2I0NjBjMzE0ZTVlZWI1YmViMTI3MzAwOTAxOTA2MmY3NTNlM2NiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzcwNWYxNzE5MzczMzYyNTMwZTI4NGIwMTlkYzUzMDkyYzM3OTI0Yjc4ZGUxZGZkMTJjMTFiOGE5YTYzNTJjOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODk5ZGJkMDYxYmE2NzNiMDA1Mjc1OWM5MDlhNWRiNWM1MzMxYzdiZmQ2NWQ2NGJmY2UyZWU5NmM2NGU3ODhjNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzI1ZDAxZTU1N2E2NDQwZTQ3MjY5MmJmMzcwNTNjMzNlZTIxOThjNjMyY2E4NzM1YTA0MzQyMDJjMmYxMGFhZCJ9" + } + ] + }, + { + "id": "claim_2c2a9f987855477698218d6a86d78b4c", + "statement": "The Service Privacy Policy distinguishes general customer/contact data from Service Personal Data and states that relevant privacy provisions of the Terms of Service, including the DPA, take precedence in inconsistencies.", + "evidence": [ + { + "resource": "repo://privacy-policy.rst#L308-L353", + "version": "repo-lines-v1:sha256:c9baab603be5989eed40cb5c65210691c2dcc405dd367310f8de083ac71c3c29:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZiZTEyNTAwYTdiMGMxZTMzYTRkYjIwMzRhNDhhNzRkZGZjNmRmMDRkM2IyZjg2NzIwYjA0NTY5YzNiZDEyMGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUyMjQ3NzUyZjRmMjJhZTQ1NzU2MDljMzc0ZTYxY2YzNzhiMTU2YTBjYjgyNzg2MDI3MmZjYTUzYTBjZWZjYzciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBjNmM3OTNlMTAyYTk5NDljMWU2YTc0OGRmMWUwMGRiYjFjMDRlNmE2NzFkMzkwMGU0MTViMDhiOTliYTY5MTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzMTVmOWJlMGQ5OWNkNDZhY2E1M2JkMjRmZjg0Njg4ZWU3NzNhODk3MjBkMWQ1MTQzNDMzMzBjY2ZhN2VlYmIifQ" + } + ] + }, + { + "id": "claim_602ef57ab95f49fe9149deb42e9f1b3b", + "statement": "The partner agreement assembles both source parts to govern commercial collaboration: part 1 covers purpose, collaboration, and collaborative results/discounts, while part 2 continues with partner/vendor obligations, financing, intellectual property, and confidentiality; these are commercial/legal inputs distinct from connector runtime contracts.", + "evidence": [ + { + "resource": "repo://partner-agreement-part-1.rst#L108-L146", + "version": "repo-lines-v1:sha256:5abfd6310946f8cbf0372ecb7ef90d567d67b11cdeca7ae2f05b046484c09d76:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjZGZhNTI4NDNkNmE1ZDcxYTRjNDUxYjc3YWJjZGVkYjg3M2NhYTU0MzY0YTE1YjcyOWJjMzcxNzQ5YjMwNWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE3ZWU4YmEyNjFjM2ZlOTEzOTczMjhiN2Y2ZWYxMmUyOGIyZmRhNTdkYjJiYWFkZDA3ODM4MDU1ZDRjMWIzMzAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUyNTAyMzZkYjhjZDczOWIyZGMyMTg0MDJhNWNkOTdkNzE3MTc5ZTRmYzkyYTk0YWFkZjllZTk2Njg2ZDk4ZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEyMDZlNDBiMDE2NWY5YTJhZTBlOTAzM2U2OTg2ZjE3ZGQ1YzBhNDhjOWE0NTkxOTM2MTlmMzY5YjI3NjFhMzMifQ" + }, + { + "resource": "repo://partner-agreement-part-1.rst#L36-L85", + "version": "repo-lines-v1:sha256:18ffae0c9a823c72063bf6de481687e0f8b0bb090909dbfcfb765358ad50e8a9:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1YWYzOTE0OGQxMzZjNThlOTc4OTllYTVlMDNiN2YwMWYzOTlhODFjMzY4MWEwZTlhMDExNTk2MDQ2YTczZTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJiMzljMjU0ZmJkZmZiMzZlYzNjM2MyOGQ1ZGU5MDNlMDdkYjUxZWJkMDU2ZGM4OWViN2JmMWEzOGRhNzEwNTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNkOTVkNDZjYzQ3MTM3MzAxZWM2OGViNDY5NmQ3MzUxNzAzZjcwYmUxMzVhMjk4OTliODViNjdhNjgxNDBmMTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZjNTMwYTM1MTg1ZjU3MDZkZjlkNzM0NmRkNGUwZmMzMjg2OGNjZmQ3YTJmNDBiNWVjMTc5NTMzNDE5ZTkwYTMifQ" + }, + { + "resource": "repo://partner-agreement-part-2.rst#L104-L180", + "version": "repo-lines-v1:sha256:bd9084dba21b959c1959417ee4e1c46ed486740431dd233703ec72310977565d:eyJzZWxlY3RlZExpbmVDb3VudCI6NzcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBiNzhjMjhiNTBiZjA5ODljNTQ2NjdjYjliYmU0ZDM0MjUwYmY3Y2U5MTY4OGY2NGQ2Y2JkNmEwZTY0ZDAzY2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE0N2FkYjM3ZDMyNDZmZmFiZTgwMGViOWZhMTg4YjRhOTE4ZGIwYmRlZmEwNzNiN2Y5ZTI5ODI4NjlkM2FkM2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU2MGY0MWE3MmIyMGRlMDZmMjVkNjQ2ZmMzZjI4Njk2NjExZjYzOGY1Yjc2ZDA4MWJlMzc0YTc1NzhmMzZhMDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJmYmU5ZDMwMDA5MWI2MzdmMDA3NjFkNjQxMDk1MWZlMmQxZGIwZTk2YThlOTdhN2NhMzJkZjYxZDcyMzBlYTgifQ" + }, + { + "resource": "repo://partner-agreement-part-2.rst#L19-L102", + "version": "repo-lines-v1:sha256:b5f10cf65f3575b38fe61adb80ff0407e7e45054a476c5ab1580d2620848d91c:eyJzZWxlY3RlZExpbmVDb3VudCI6ODQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJlNmUyMWI0ZWQ4Y2U1NTUwMTJlMzU5MGY4MzA4MmM3NzA3ZjhkZWIyZWNjYjUwNGZmMDc2MDk2NmM1ODM1NzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAyN2QyZjMzZTlkNDEwOTk4OTdiZWViZmY0OTVjZTQ4MmVhMDkxZGI5NGI0NmNlYzg3NWExYjZkYmVkZDlkODQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgwNmI5NzZlZjJlODI4MDdlYmU3MTExMTAyNTI3NGU2YWZhOGE3NTk2YzNkYmQ4ZmJmNTQwMzQwZWNlYWJlODEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI4YmZlNmE0ZDAzNzU2NGJkYjRiNzVlMzA0NWM2NDY3YzcwNTgzMzczMGVkOWM3ZWIyZDkwODhiODdiYWY1NDIifQ" + }, + { + "resource": "repo://partner-agreement.rst#L1-L5", + "version": "repo-lines-v1:sha256:6340f290c3fb78caa5c0efa4f18d7a20b05ef40ad86d8790d27fe6b836e17f28:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBmYWIwZWQ2OWY3YjkwNDhhOGU4OWM3ZDRhNmZjMzE0YTI0NmQwZWVjNDE4ODc2ZDNhOWMwNDVhYWY4YmUyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTUxNWJkZDkyMGUxNTI0Mjk0NjJiMzNmYzNjODA2YjEzYjJjMjNkMDQ2NzM1MWI1ZWYyMzc4OTUyZTY2NjZkOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_8437be3f666242f2bfa6b011326d44d4", + "statement": "Sesam Community is described as an open connector ecosystem and points to sharing guidelines, connector repositories, informal Q&A, feature requests, and unofficial Slack discussions, which are separate from contractual Service Desk and SLA review inputs.", + "evidence": [ + { + "resource": "repo://community.rst#L9-L42", + "version": "repo-lines-v1:sha256:c40ce1314ac3c0ec4c130efe8e18530c747287bcd1daaa07a2cd1704469eef17:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNmYTUzZmMwZGFiOGVmOTZkMDVkOGZkNGM3ZTQxYjQ5MDE4MjgwMzcyNWM2N2I4NmE1MzFlMDllZmZjNWZhNzciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhNGI0ZjQ4ZDliMWVjOTg1YWYyZjc5NWY2YTExMTY0Yjk4OGQ5MjY1N2FjMDFkMDM4NDcxMzA3NmVhMzNmMGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI2MDAwMGIwNjYxOWRiYTAyZDRmMzQ0ZDYwYjgxMzllZGY0MmU5NTZmMjM3N2U2NDg0ODFmMGY0MjJhY2JjYzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/legal-sla.rst#L142-L162", + "version": "repo-lines-v1:sha256:502905fac1db64bfd54a0a8d71eb857b182d9c0b508b0b057d587ed54abb5c94:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM0OGIzZWExZDRiOTViOTQ3MzljYWY3OTYwNTNkYTk4YWY5NDkyYTAyYWJmOTNlM2YxOWNmZDVkZDI0M2U2N2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ0YThjZmM0MjFiZDYzZGEwNDZhN2EyZjlmMTMyYjQyYzBlNzU4YjVlN2I3OWI1MzdkNGUyMTVlZDE2YjMzMGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImEwMGMyNWRkYjk1NWM1YjIwNDNhMmI2MmNlZjg2Y2IxODQ1NTkxMWUxZDhlOGUwNGI3MmUwMDM3NjA2ZDY5MTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE3MTFlNmFlMWVkNDdiOGEyZjI0NjMwYjAwYjFjZDJkYWIzMjNjZjI0ZjVmNWE2NDlkOTU5YWU2MGFlNDVmODIifQ" + }, + { + "resource": "repo://legal-service.rst#L84-L93", + "version": "repo-lines-v1:sha256:36e4918283e3563cc8760107674970ead00ac1eb8b6367b4a48f578bc9ae42c0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMzM2FiMjQxNzQwMDU5MjdlOTY4YzM5NTVhZTAwOTA1ZmQ3NWI4YWVkYjJkZjcwYWVhN2M3Yjg5MTJmNmZhZTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJjZjMxYTU1ZjY1ZjU0NGQ2OTFkMDRkZGJlMmE5NTA2OTUxNjhkZjhiZDYxOTM2NmU3ZTBjMGUxMDU2MmFlMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE0ZWI5YjQwYTVjNmJiOGFhNTViZGZjODg5MjBhZjdlN2E3NmU2OTk0YTgxMTMzMjYyZDFkNWU1MDAyYzBlNDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/references/legacy-data-access.json b/openwiki/.claims/references/legacy-data-access.json new file mode 100644 index 00000000000..f995a14945a --- /dev/null +++ b/openwiki/.claims/references/legacy-data-access.json @@ -0,0 +1,810 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:ba0fd7f9c491a690dc1a36af4d415dc1ab0567f673cdb9a0546429be0764a088", + "claims": [ + { + "id": "claim_86515f8954e94362875b3b10640b105c", + "statement": "Databrowser's warning documents end-of-life December 31st 2023 and references the 2022-03-21 changelog, which identifies Integrated Search as its successor.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L921-L927", + "version": "repo-lines-v1:sha256:179ddf71bf11d867092283f70d1e4dca826cf0d179b4650fcb3707888942c713:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTgxMDExYzExNWE0N2E3NTgzMWM5NmM0ODYzYjQyNTdhMmFmMzQ4ZjFkZDMwZWVjNDNkZDc4OWVlZGYyMWQ2MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjVhNDg3Y2YyOWQyOTZlN2UwYWY5Y2EyYzgzZjNkYTM2YWNmZjIzZTY5MWY2ZTY5MjcwNWEwNGFlOWNkYWE4MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNWZlOTE4YjkyYjI2Yzg2YjE4ODhmZWY0ZDM1ZWZkN2JhN2FmNmY3NTc3YjE1YTIyNWI1M2EyYWVhZmViNmY3NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGYzZTMxNDg3OTQwNTlmZjdlNmY4YjU1ZjQxZDQwYTUwNGE0ZTliYWYzYTQ3MjM3M2E5MmFhOTY3ZTEwZjcwNSJ9" + }, + { + "resource": "repo://hub/databrowser.rst#L1-L15", + "version": "repo-lines-v1:sha256:d1b0f4913f843fbe06a42eef69d982f7f6f81383319e19c45de7ab4f84f19fc8:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxZWIwMzI2ZjdhZWEyNjU5ZDE0YjkxYjMyMDNiZTU5MGU2M2E2ZjRiNjRjMDRiOTViZTI1MWQ2NjFjMmY0ZjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQzNDI1MDA4MzdjYzRiYjA2Mzg4M2U5ZjFhNTFjN2QyMzcwNzZlODM3MzA0ZDVmMWE2ZmI4MDRjY2IwNjU5ZDgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_566a70e528a14deabf4e380797018c6b", + "statement": "GDPR Platform's warning and the 2025-04-02 changelog document scheduled end-of-life June 30th 2025, but the 2025-04-11 changelog records early retirement.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L153-L165", + "version": "repo-lines-v1:sha256:fde3caa3ea3393c971d374056b4c7caf5ffa14749a31f641fb32ad475e2e1a9e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRiMDIzYzBhNjg0YzU4MmNlMzgwMDc1NmRkMGE3MDZhNmQ0ZjIxNjJkYTc2YjdkNGQ3YTgzMTEzOTQ4MTllNWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE1ZWRhZjk0MTE2NWZmZWQ5ZWQyMmQ1NmQwYTFmY2JkZWVlNmZmNDM1YjRjZWZhYWJhY2I1OTllMzNjOTU0NWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE1ZTA3ODAwZDllNjBiODNkMzE3N2E1YTkwN2U1MWJmYzRmYjNjNTA4Njg2NzIzZmI5YWM1OGViNzRhODhmNWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU4NTE5YTg2ZmQ1NDBlYmQ5Nzg4NzRkNjcxMzhmMTRiMzBmNmUwMjZjZjQ1YjMzODM3Y2IxZTFmMWYxMDdmZTYifQ" + }, + { + "resource": "repo://hub/gdpr-platform.rst#L1-L17", + "version": "repo-lines-v1:sha256:ac11dacb3aad599e7aa5b36d029e23d0b4c6a5e17c1b77c1536ede7f1d20e06d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ2NzRlYTQ3NjY3M2MwYWM4NDU1M2FjMjIxMmI3OTM1YTk2N2RhMTZhMDEzNjY4OGYwZmZhZjg3ZmViNWJiZmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5ZDVlMWIyNGM2MDdmMmNmMzFjOTE1ZmVmYjE2MjgzMzU2NTdmOWYzY2ZmMWIzZmU5ODBmYTU5ZjI3YTgxM2EiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoyLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZhYmUxYzJlNTIzZGE0ZDk1Y2QwNDU0OTZhMTkwZGY5MGMwZjExZjc5MWNjZGMzNTJlYWY4NGQyNDAyYTRmYjIifQ" + } + ] + }, + { + "id": "claim_cbfcb913bbee4823ae0a5fda9ac18903", + "statement": "The deprecations document lists Databrowser and GDPR Platform and explicitly instructs readers not to use deprecated features.", + "evidence": [ + { + "resource": "repo://hub/deprecations.rst#L1-L16", + "version": "repo-lines-v1:sha256:f36aee40e6ee5aa729e211a3729bbf5b503ee740aa87cba266f0cccd29ab35d1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE0NGI0NDUzMDY1N2I1ZTk4M2MyOGYzYjQ4M2ZlYzZjNzMyZjNlMTE1ZGVkNmI5YzgwMjZmNWU2ZjI1Njc0YzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwOTM0NGFhNWE5Mzc4MjQ1M2ExMTAzODgwZDYyYWQ0NzZlY2I5ZDY5MmQ1ZGUwOWViMTBiZTQ0NmFhYTBiMjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBiNDYwYzNkNGY1YjI0Y2Y3Yzg5YjAzMDUxOGQ0MTZjMDYxYjFjNTYzOTk3YjQyY2VhZmM5YTdhZmY0ODVkMjUifQ" + } + ] + }, + { + "id": "claim_2cf7ac803e8d4935bcf6f5ef73c17b25", + "statement": "The Databrowser guide embeds swagger_databrowser.yaml, whose declared endpoints are internal-only and may change or be removed at any time, rather than a stable public API commitment.", + "evidence": [ + { + "resource": "repo://hub/databrowser-guide.rst#L712-L717", + "version": "repo-lines-v1:sha256:ac4f4fe48508f8a19735188efa151215a198bb984832c17f2149642e218a37e4:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGJiMjUyOTUyYWI0YjczMjU1OTI3OGE0Yjg5M2RmZDNjZDIzM2MzNDY3MmVjZTJjOTE2ZTFmYmUwOWFmOGFlZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjcwNWY5YWZjNjZkMzhmYzQyNmU5NWE3Njk3M2UzNGU2N2EzMDdlMmExNDBjYzc2YWYyMzNkZGE4YWM3NzJkZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjE1YmNhMTI0Y2ExZmFkYjM2NThiN2RlYzhiOTdhOTEzZDFlNWYzNzhlZmE0NTczOTE2NDA4OTc3NzJiNmYzYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L2-L6", + "version": "repo-lines-v1:sha256:b3eac5a9b75b4574fd9d6331c2e4df2e3f05c3aa14c8cb8548772c35b6782a1c:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjlkMDNmMGZjZTMwMzRlMTI1YzEzNDc5ZjgwNDYxMjVhMTg3MDcyOThkNjRjN2E1NDgyMjg4MjgxZmVjZmQ2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTRiMWI3YWI2ZjRiZDc2NDUyYjI4Yjk3NzdiOWYyMTRkNmI4ZjkwNGM1MDk0YzA1MDhhNmZlZGZhMDQ2Yzg5YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjEsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2NjZjcyZWNkNjQxODUyOTE5ZjBmMDgxMjU2MDQ1ZmU2ZWY2NGQ3NjU3NDUyMzBlNmY4MmYwODU1OThhMjc0YyJ9" + } + ] + }, + { + "id": "claim_0ac4859384d04752ab35e131a04bd6d9", + "statement": "GDPR Platform is documented as Management Studio for configuration and datahub access, a datahub for collection/connection/storage, and a public subject-facing DAP for requests, data, and consents; management access is through the Sesam portal subscription.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-configuration.rst#L7-L26", + "version": "repo-lines-v1:sha256:26ec52c6579a61beac2fbc4897fe0f6f7f8eabf280b3d630d18d3b3614be9393:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRiZDJmMjlmMDg5MTFmZTA4NjVkMWRkMWU4YzNhOWNlZjQxN2I3ZDJiYmQyZTE5Zjg5ZWUzNDMyNGZjNzVmMzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFiYjIxYTM5ODQ2MmEzZmU3OTZiM2ExNDFlMmYyZDk2NjNhYTAxYWNlNDk2MDZjM2VkMTZkZjY4NDY5MWNmYzIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM1YTNlNTc4NDJiNWJjMzM0NWZhNzIwYzFiM2IxMWZhZGJkOWM1M2JmNzhiMDM5ZDY1MGU0YzJmZDI5OWFkNmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYzYWZjYmRiNDQ0NjRhNmUwMTcyMzEwYzlkMWY3NDI4OWVmOWU3NzllZWI2Y2NlYTdkNTAxNDU0NTI1ZGU5OTQifQ" + } + ] + }, + { + "id": "claim_27f84977aa0a46bf8063613302593be5", + "statement": "Databrowser's narrative file configuration processes uploaded numeric layers in ascending override order and the end-user /sesam/data/databrowser.ini last, overriding /sesam/conf/databrowser.ini and numbered layers; the extra layered upload API is not exposed in the end-user GUI.", + "evidence": [ + { + "resource": "repo://hub/databrowser-api.rst#L13-L31", + "version": "repo-lines-v1:sha256:85812e3b5dd57a0b2722564bfd06124031e403dd37ff5744f1fd74f31e2568f3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI0YzZlYzEyNzQ0MmU2Njg3YTZlNDIwMTRiZDE3ZDYxM2UzYTQ0YWZkYzFkOWEwMTAzZjY5MjQ0YmU2MGVmNjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIxOWY1Nzk2Nzc3NDczMTllNjUyNjY5MDZlOGViODIyM2QzOTRlMTkwZDk1MjZiNTdhOTA4MjQ5ZWM2ZmY3MjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ0NjA0Yjk2MTA2NDI2ZTNiZGU0M2MzY2JlMDEyYTQ4YjBmNGIwOTE4YWQ3YTM5ZjQxN2U4OTczZTJlOTMyYTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc0OGY2NzQ3ZjJhNThlYzgxMjY2Y2NlZmQ5YWE2MTI1YzQyNjZjNjUyNTU0Mzc1ZWRkNWUwNTlkYjgzMGFlY2YifQ" + } + ] + }, + { + "id": "claim_c6450cb2dcdd4871b311b9a567520d2b", + "statement": "The Databrowser guide distinguishes shared defaults, installation-specific files, and Redis-backed GUI changes, and supports bulk Redis configuration editing/copying; these descriptions do not specify Redis precedence against every numeric file layer.", + "evidence": [ + { + "resource": "repo://hub/databrowser-api.rst#L13-L31", + "version": "repo-lines-v1:sha256:85812e3b5dd57a0b2722564bfd06124031e403dd37ff5744f1fd74f31e2568f3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI0YzZlYzEyNzQ0MmU2Njg3YTZlNDIwMTRiZDE3ZDYxM2UzYTQ0YWZkYzFkOWEwMTAzZjY5MjQ0YmU2MGVmNjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIxOWY1Nzk2Nzc3NDczMTllNjUyNjY5MDZlOGViODIyM2QzOTRlMTkwZDk1MjZiNTdhOTA4MjQ5ZWM2ZmY3MjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ0NjA0Yjk2MTA2NDI2ZTNiZGU0M2MzY2JlMDEyYTQ4YjBmNGIwOTE4YWQ3YTM5ZjQxN2U4OTczZTJlOTMyYTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc0OGY2NzQ3ZjJhNThlYzgxMjY2Y2NlZmQ5YWE2MTI1YzQyNjZjNjUyNTU0Mzc1ZWRkNWUwNTlkYjgzMGFlY2YifQ" + }, + { + "resource": "repo://hub/databrowser-guide.rst#L590-L612", + "version": "repo-lines-v1:sha256:e605070d5e1e1b25792edd184469a19797d4d4a57deef824921beba1ac5f21d0:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJjZGJhZThiOTQ3YWU1YTdmOTlhZmI2MmE1NDE2ZmNhNjVhM2E0YTRmNzU4ZGE1NTM2NDczYThjZGI5YzY1NzkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAyZGI3NTBhODY5ZGQ0OGNkYTE3OTVhNzYzYWQ2MmFjYjcwZmRhMTNkMGMyYTBkYmRhZGIyOGQwN2YyNDc2YmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFiNzVlZjg4YmNmZjY3NzI0N2E2ZDgzOTkxMzNmODFjYjVkMzcwYWVhYzZiM2RjMDgxMjY5ZjA4NjMyMmY0M2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUxOTkxODJkYTQyNjMzMTViODA0ZTA4MWM2MGVjOGVlMWQ4ZTNlZjM1NmJiMzhkNmNlNjhkMDZkZDZhZDQ5NTgifQ" + }, + { + "resource": "repo://hub/databrowser-guide.rst#L692-L710", + "version": "repo-lines-v1:sha256:ce3ed76fd5404e4589288aa634932862a495bba7f5b0bc86d5be66d12e17d9b4:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhYmFhZTc3ZDU5Mzc2NTJhODYzOWZjYzNiZmI2MTAxZmY3ZWNlOWZiM2VlZDUyZTI1ZDBkOGUzNWM0NGRiOWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQyMzYxYjdkOTkzZWY5MWFkNDYxMWM5NDk3NjA2N2IxZDAyZTg2ZTllYTBhZDgyOTEwNzgyOWM5Njg5ZjQzNzAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2MzMwNGM0OTdlYjZjMjhhNGM4NmYwMTkyYWY1NTE2NjhkMDhjMjk2OWIxZDljMGFjNmUzMGJiYTI0ZmM5OTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY3ZjcxOTM2NGIwYWNiNjk0NTIwZjdjMDkwMDJkZTkxOTdjZDlkYzU4OTU0YTY0MzY3MWM5ZDExZTIwMzM0MWIifQ" + } + ] + }, + { + "id": "claim_99e4b2a2bbb549519188ce16a50fcf19", + "statement": "The narrative Databrowser configuration-file API requires JWT authentication enabled, an Authorization-header JWT granting Admin, and describes its example token as generated for the configured subscription.", + "evidence": [ + { + "resource": "repo://hub/databrowser-api.rst#L48-L61", + "version": "repo-lines-v1:sha256:19fd44bf668563e6aa44d2244bcc78b9fb415d4d4090e2989640003bf40f817d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkNDU4MTYxMDI5NjUzZTlkM2M3ZTBmNjU2MTZlN2JkZjQzMmUyNjRhMDJkNTA5ZjcwZDJiMmRkYjkzOWY5Y2YiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY0YWRiMmUxYWE2ODc3YjQ3YjJmMTU4YTM1YWFkZWM2NTU3MTUxZjQzMDljNDQ0ZTkyOGM2MDJmYThlNDNkMTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk2MWQzNWFkOTQ0ODg1NjU0YzA4N2NlM2U2NzViZTE4OWYwM2Q4ZDI4MDkyZDVmNTUxZGZkOTU2ZTliZGQ0OWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE3YThkODc4NDlhOGExOTU5NDQzMTliNjEwYzY3NGY5YzM1NGYzMzJjYzY3NWM3OWU3YWFhNDY5NzE2ZTU3MzUifQ" + } + ] + }, + { + "id": "claim_840495bc8e33404db4e4411275e07b22", + "statement": "The Databrowser configuration narrative declares /configuration//databrowser.ini but its example uses /configuration/conf/1/databrowser.ini, consistent with Swagger's /configuration/conf/{config_layer}/{config_file_path}; the documentation therefore disagrees on the layered route form.", + "evidence": [ + { + "resource": "repo://hub/databrowser-api.rst#L33-L45", + "version": "repo-lines-v1:sha256:51028ce229905346112bb45367c0dabecf1be5467718a8efcf55cc43ce14fb16:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlMmRkMThlZmE5NDgwZTlkYzZiMjgzYWJkMzVlMzBjM2YzZTM4YzNmYmE5ZTZjZTc2NGMyMzg2NGZmNTdjM2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ2NmEyZTA2Yjc5NDUzNjgxM2VmNDkzOGZhODg2YjFjNGU3ODA0MzRmOWVmZTkzOTczMTlkZjJhZjJhNjM2OTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRmYTQ3M2I2MGIzYzA4NjYzMzNmZTFlNzFjMDRiZmI4ZGZlMjRlZTk1ZjhjZTJjZDU2NTBlMzk2MTI2MmFiYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU2YTM5YzQzYjQ5MmNkOTFlMzY3OWY1NDczOTc4MzU1Y2FhYjA4Nzk3YTdmNWI1YjFmN2Q0NTRkYmEwNmUyYmEifQ" + }, + { + "resource": "repo://hub/databrowser-api.rst#L65-L69", + "version": "repo-lines-v1:sha256:1b0fb5614e6e9d62a907c9c3fd6f4695d79168e55c20f533bd8bc9b4c5260036:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjZjMjgyNmE5ZWE3MDA0NDBkNDI2MWYzMzdlYzkxMWM4MTE3MmY1OTgxMmNmZjMzYWNmYWI2NWIwNTZjYWMzNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzc1NzBmYmZkZTVjMTlkN2E1MDkxZDczOTk3M2NhZTlmNmJkYmUyZThjNTE5NGJjZGI1ZTMyNjkzZTNjNmE0OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTdhOGQ4Nzg0OWE4YTE5NTk0NDMxOWI2MTBjNjc0ZjljMzU0ZjMzMmNjNjc1Yzc5ZTdhYWE0Njk3MTZlNTczNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L430-L435", + "version": "repo-lines-v1:sha256:94d43d70a5fb5e19704207f469b53a10670231410919e3aeaa7c4243806ac7aa:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWU4YWEyYjQ0MDMyNTcxODI2MmJkZmVmYmUwZDkzODNmMDFjMDlhYzdiMmRmM2EyNTY0NmI3NjFiZWJjMTk3MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTA0YzBhMDQyNjg3MTI2OTJkZDllMjBmMDM1ODg0MGNiZjAyZmJjNWRlMjM4ZWY2Y2VlYWNjMDM5YjQxNDZiOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzQ4MDY4ZjcxOGNiY2ZlY2U5ZWMzYTVhMzI1MzliMDcwYmJmMTMxNjUyYzIxMzgyZGE3ZmQ4MTIxZTkzNjhlNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGRjNjA1YzM1ZDg0MGFmNzQ1NjA0NTg4ZTdlZWYyNDNkMDZkZjlkZTY0N2JlMjgzNTY4Y2FmMjA0MmQ5ZmI2YiJ9" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L495-L501", + "version": "repo-lines-v1:sha256:6a169736db02870349cfc86250c919aff634ccc27ddfc1936de94fa666bb0338:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDhhODYyMTkwZGIyODgyNjgwYjVhZGQzNTgyZGVhMDhjNjNlZGE0YzBiYmU0NzE1Y2YxNDQ0OGIyMmJmZDBlYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDBkYmVkZDY3N2E2ZGFjODg1NjU1MGQ4ZmE0MzAzY2MzYTBmMDRhZDRlYjVmNWViMGQzOGI5YzA1NzhmMzRhYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2FjMmRlOWI5ZjQ2NWE3Zjk0MDhmZmU1MmNmNGE2MjE2MGQwMzNiNGNkZjlhZDE4ZTc2NmEzMGIyODM4ODMzMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2JiMmI2MjM0MTliOGI3ZTJhZTk4ZGUzZGZhOThmMzA0YmU5YWUyNzFlOTA0MTI1NGRkMTI1MDkzN2JjMzUwOSJ9" + } + ] + }, + { + "id": "claim_76e58d6604df40c6ba7b7bd77475a8fa", + "statement": "Databrowser's internal configuration-file GET specification returns an empty response body when the requested file does not exist.", + "evidence": [ + { + "resource": "repo://hub/swagger_databrowser.yaml#L430-L445", + "version": "repo-lines-v1:sha256:3164b1818f4b69efdb2211f973f7bad5719fcb2bb2f50f99fd90d31ba0eb3377:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVlOGFhMmI0NDAzMjU3MTgyNjJiZGZlZmJlMGQ5MzgzZjAxYzA5YWM3YjJkZjNhMjU2NDZiNzYxYmViYzE5NzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk0OTgyYjM2Njk5ZTdjZDU1MmM4MjA0NjhjOTk3YjViNzIxZjA5MzFlNGI3OGQ5NWNjZTIyMzkxNTAxY2YxYTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ3NWYwZWIxMmQzZGI0ZmJlZTU1NjJiZDVjNGI1MmVlMzlhNWFhNWRiOWVhNzI2NzJlOTBhODQwNWEzODA2YzkifQ" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L507-L521", + "version": "repo-lines-v1:sha256:9a86f17418fbee05c8e3916ba35ff798f126691788886d020bba1a4bb967c805:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMzMxODkzODlhM2I3MTNkYmQzZTMxYTEwZjMwMTBhYzg5ZjFkMGJlMTczMTQ2NjI4NGRiNjZhODc2NDA1NzciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk0OTgyYjM2Njk5ZTdjZDU1MmM4MjA0NjhjOTk3YjViNzIxZjA5MzFlNGI3OGQ5NWNjZTIyMzkxNTAxY2YxYTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY2ZDM0MGFlZTE3MmExZTM2MTg0Yzg3Mzg4M2JmOWYzODMzOGNlY2NmNDk5ZGJlMWQwOTZlODU1NTg0MGI4YTYifQ" + } + ] + }, + { + "id": "claim_a03d3dbff40c4f3d9c2ee1dc957a17be", + "statement": "Internal Databrowser configuration PUT/DELETE can return HTTP 200 with configuration errors; the response contains is-valid-config, current-user-would-be-locked-out, and config-errors, and errors concern the full configuration set rather than only the changed file.", + "evidence": [ + { + "resource": "repo://hub/swagger_databrowser.yaml#L1109-L1148", + "version": "repo-lines-v1:sha256:67efe42f281094c2f28a9dfef52e146011f75fa53f4cbeca4a266ed1d11ba836:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMyMWViMjE2ZDFhODgzODEyZjk5OTUwZjUxYTRhMjI2ZDdlOWY5N2YyNmEzM2ZkNzM1YzY5NDUyNTdiYWNjYTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNiYzQxYjkzYjYzMWZmNGQ0Mzg2MTVjZTAwNzUyYzc2MDIxY2RkYTIzMWEyNDJmN2ExOTNiMWVmYTNiYjNjMjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFmY2M4ZmFkYzlmYWMxZjE4MzZjMjgxN2Q5OTQ2OWJiMjE5Y2VmNWIxMDdmNzRjNjNmN2ExOTIzNTEyYjIyYTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc1MzY2NzViMDNjYTNhNjk3M2IxNzliNTRlMWNjZWU5OTJkNmQzNjNlM2FmNDk0YmIzNjQwZDRlYjMzODhhZGYifQ" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L447-L485", + "version": "repo-lines-v1:sha256:e60c4b53b6d44e36bc6cbd693ab9a8b0749547a1170ecc27f90bda69df26d498:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5MWE1MjE0M2UyNWNiZTYzNWRhY2Q4YWZkMmY4NDFlZjY5YzdmMjQ2ZmQwYjMwNTg0MjQwZWQwMTdlZWEyMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkxYmEzMDJhODkzZGI3YjZhNTNiYWNlMTEwOWE0OWMwYTJhZTdjYTA4NDIxZTFmZjUyNzE2YjdhZDk4MzY1OWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAwYjgwNWRmYzhiNDkyODM0NzA0ZDkyYWMzM2Y4NWJhN2NkMzk1YjBhZDk1ZTk3MDIxNGI4NGEyNGFkZjBlMWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUyMjY0MzEyZmZlZmE2MDYwNjFlN2MwYzAzMjc3OWQwYWMyZGJkM2Y5YWMxM2VkOWIyNzQxNzJiNThmNDJiNDAifQ" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L523-L562", + "version": "repo-lines-v1:sha256:d153c903f0310a83035de833c119f7aae66b0add35cc8d73a33cbe9d3645d3aa:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5MWE1MjE0M2UyNWNiZTYzNWRhY2Q4YWZkMmY4NDFlZjY5YzdmMjQ2ZmQwYjMwNTg0MjQwZWQwMTdlZWEyMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkxYmEzMDJhODkzZGI3YjZhNTNiYWNlMTEwOWE0OWMwYTJhZTdjYTA4NDIxZTFmZjUyNzE2YjdhZDk4MzY1OWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAwYjgwNWRmYzhiNDkyODM0NzA0ZDkyYWMzM2Y4NWJhN2NkMzk1YjBhZDk1ZTk3MDIxNGI4NGEyNGFkZjBlMWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUyMjY0MzEyZmZlZmE2MDYwNjFlN2MwYzAzMjc3OWQwYWMyZGJkM2Y5YWMxM2VkOWIyNzQxNzJiNThmNDJiNDAifQ" + } + ] + }, + { + "id": "claim_609f4f6b75cd46d2b6caf692e6851183", + "statement": "The internal configuration-file API specifies HTTP 403 refusal when PUT or DELETE would prevent the current user from making further configuration changes.", + "evidence": [ + { + "resource": "repo://hub/swagger_databrowser.yaml#L464-L492", + "version": "repo-lines-v1:sha256:bd6d93a0f25f32a9d443940c7bbf78b0cea46a1297df9374fd3afa8103e31820:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNmMzM0OGQyNTM4YWQ2MDlhMWFkOTJiNGU1MjlmNWJlMjAzZDY3YTdkNDEzZWU5NmQ4ZjljODA1MzQ3NWQzNzkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkxYmEzMDJhODkzZGI3YjZhNTNiYWNlMTEwOWE0OWMwYTJhZTdjYTA4NDIxZTFmZjUyNzE2YjdhZDk4MzY1OWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYzNGI2NzRmMjA4MWY1YjFlYTYxOTNkNjRkNDdhMTM3MTNiYjBjNmExODliOWI3YjlhZmFmNzljMTA4YjUwZjIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY2YWZkZTI0YjY5ODFhZTgzN2FjYWZhMjhhNDU3ZjllN2U4YjhlZjZjOTM0ODE5MWYzYTkyZGZjZjhiNTI2ZTAifQ" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L540-L569", + "version": "repo-lines-v1:sha256:79686105a998a63217d5939939f8f3860d685a3d3c70dd44f255f04f0507ac0e:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNmMzM0OGQyNTM4YWQ2MDlhMWFkOTJiNGU1MjlmNWJlMjAzZDY3YTdkNDEzZWU5NmQ4ZjljODA1MzQ3NWQzNzkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkxYmEzMDJhODkzZGI3YjZhNTNiYWNlMTEwOWE0OWMwYTJhZTdjYTA4NDIxZTFmZjUyNzE2YjdhZDk4MzY1OWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYzNGI2NzRmMjA4MWY1YjFlYTYxOTNkNjRkNDdhMTM3MTNiYjBjNmExODliOWI3YjlhZmFmNzljMTA4YjUwZjIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQwMmJlNjY0MGM1YmRkNDU2YzAyODRiNTZmYTM0Mzk0OGFlYzE3ZjIwZWY2NGUwNzhlMzY5MDFlNmE1MTU3YmEifQ" + } + ] + }, + { + "id": "claim_558606b6a8504cbca716029a75d458da", + "statement": "The internal configuration-file validate_only parameter defaults false and, when true, performs validation without changing configuration.", + "evidence": [ + { + "resource": "repo://hub/swagger_databrowser.yaml#L1248-L1256", + "version": "repo-lines-v1:sha256:2908586b0debda8406d2d642d71f72922288b62b6d9150aa05dabe07efd55928:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTA4NDA3ZjQwZjkwMGYzYzJhMDIyYzhhNTM0ZDc4NDUyOTZhNjQ2N2E1MTRhNTU5MDBjODFjMjg3YzgxOWVhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGNjN2Q0ZjU5NDRmOWFlYmNhODlhYzk5NTU4ODJjYzMyN2E0MzM0ZTQ1NmFmOGZlMDAwNWJhNGI0YjBiZWYyMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2I1MDM5YmViYTI5Mzc5NjI2N2Y2MmY0ODJlMjJiYTRiZjNjMjcyYzBhZWZhNDAzYmUxMTA2YzE4YmVmZWE0ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDc1ZjdmNzEzNjIyMzU3YThmMjRjYmM3MTA4MTVmMGI4MTJiNzg2MWUxYzBkYzBiMTAxYzliZTE1MTdlZDM4MiJ9" + } + ] + }, + { + "id": "claim_c7693dd10687414e91b82f1972d1feea", + "statement": "Swagger documents config_file_path as an inaccurately modeled remainder-of-path and explicitly says it should not be URL-escaped, illustrating nested file segments under a numbered configuration layer.", + "evidence": [ + { + "resource": "repo://hub/swagger_databrowser.yaml#L1236-L1246", + "version": "repo-lines-v1:sha256:67715635061a45f8cde91af347b4b81652905a406d7d4377cdbc35290bcacb52:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU1Y2NmYmY4YjNiYmEzYWJlMThiNmMzZmRjYjNhMWI0MjViMzljMzhhZTExYWMxNmExM2Y3ZTg3NTgxMWUwN2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmNjZmOWFjZWRmMTM3ZmIwYzk3MGI2MDFmNmQxNGYwNjRmY2RmYjE2MGQ2OTE3MDI1YjkxZDkyZTVhMzFhNWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI0N2YwODAxYWZkOGE5MGM2YWRjZjI0ZTlhNjVjZTVjZDU1MThjOWM4NGM2MjI2NTY0ZjBiZGNiMTFlMmQ2YTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUxYjI4YjQ0MjYxMDM5NDU3NTI3YmYyNjI0ZjYyYTNjMzhmMTQ1ZTE2NTRmNTJhMGU3YzQ5NDEwZmE5NGM4MzkifQ" + } + ] + }, + { + "id": "claim_8835acd1646c4819a987f754c9a2d7ac", + "statement": "Databrowser's /admin_index exposes administrative configuration, data-type, and logging pages; GUI logging changes reset on server restart and permanent changes require installation-specific production.ini.", + "evidence": [ + { + "resource": "repo://hub/databrowser-guide.rst#L560-L644", + "version": "repo-lines-v1:sha256:f81a35d41ab90a5f5ba44a4c3f71ee32966a74720544a9b0fb1375429694f9d9:eyJzZWxlY3RlZExpbmVDb3VudCI6ODUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4MjBlYTVmMWE1NDZhZTNjMzRmNzJhMjJhNmQ5NzI5N2YwZTdhMTA1NjEwNTkzZjA2NzY0NmI0MTNkYjEyZjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNjYmQwZWU5ZGUzYzNkZGVjN2JjZDhhZDNkNDk5OWUyOGZlZDFiMjdhNGMzOTg2YzExNDgzMDczNTM3YTJlMGYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjlkNzEzOTk3MzA5Nzg4YTAzNDVlMjA3ZGZlMWJmNzMxZWZhOGYyNzFhMjJjMjEyYWM2N2U0NGM1OWE4ZTZmZTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYwMTZlMzQ2NzJlZGZjYjcxZDJiZGNlNGVkODQ5ZmYyYmFiMGZiNjExNmZjM2E3NzRhMTRlNGNiOTAyN2Q3YzkifQ" + } + ] + }, + { + "id": "claim_3902e3ece8364c4aae954cbdb315f8e9", + "statement": "Databrowser's use_x_remote_user_header selects external OIDC when false and trusted X-Remote-User authentication when true; the latter is documented as safe only behind an authenticating proxy that sets the header.", + "evidence": [ + { + "resource": "repo://hub/databrowser-auth.rst#L26-L42", + "version": "repo-lines-v1:sha256:05ee15214ac7d6b293986efb4ae68e9dff62fea8173dfb0ab90343cfc3a02b41:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYyMGJlMmIyMzhjYmJiYTYyZWZiOWIyYjlkNTNlNjA0ODQ1MGJkNzMyY2UwOTE2YWUyMWEyNTM2NzhmNGEwNGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE3ZWYxMGU5NzBmYzU4ZTc5NzcxZTk0ZGFmMThjYzhhNTY1NjliYzlhYTc5NTU4MmI3YjcyNGI2NzhkMDhlYWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNiNmJmMjQ3YjdlZDdiMzA2MWNhNmE0MGVlYWUzOGZhMzQxODhmMWQ3YzRjYmY0MDRjNDg2NTE1OGI5YWZkYWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMzNzczYTQ4Y2FkY2QzZjM5N2FlNGY5NDYzOWM0MzFiZTAxNDk1YmZhOWUzZDhkODcxMTJmNGI2ZmFkYTAzY2MifQ" + } + ] + }, + { + "id": "claim_faa63f86be6e4f758bcbca6fe9b5bf5e", + "statement": "Header authentication maps a username to a session email through Solr fields configured by x_remote_user_username_psi and x_remote_user_email_psi, falling back to an email-like username when no email is found.", + "evidence": [ + { + "resource": "repo://hub/databrowser-auth.rst#L44-L63", + "version": "repo-lines-v1:sha256:51112217e712a15b9442a68104f873dad905bbc210886354cb7879bf5b5e4d91:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdlZTkyYjEzYWU5MThkMGI3MzJmNzc5ZTQxMzgwYmM2YmRiOTMyMzA5ZmI3YzViNTFmZDYzYzIxMjlhMGEzN2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIxOTNlNWU1NjMwMzc4NzIzMTMzMjQ0ZjIwNGYxMTdhMzRjYzdmYzQ3MWZiYmI0ZmQ4NzgwNGQwZjFjNGJkMWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBhNTY4Y2UwZWIyNDNiMDVkNWE3OTQyZDMxZjRiNTZiMTQ2ZjBiODUxZmYyZDRiOTMwNTgxMzkzMDE0MTZjNjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE5NDgzMGNkN2I4YTMzMmZiMzQzMmVkMDBkMWIxYjBmMzg4ZTg0ODdkNDlkYWM5ZWUzYzMzOGRlMTc0OWY1YzIifQ" + } + ] + }, + { + "id": "claim_b541b0e03d7243afb904a490fd379645", + "statement": "Databrowser authorization searches configured email fields for the session email and stores matching item IDs plus IDs referenced through psi* fields in session psis.", + "evidence": [ + { + "resource": "repo://hub/databrowser-auth.rst#L78-L96", + "version": "repo-lines-v1:sha256:7b9200684957e52fea6de8c2eaff22ed21cfa68081f58189bec9d496415abd4b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkNDU4MTYxMDI5NjUzZTlkM2M3ZTBmNjU2MTZlN2JkZjQzMmUyNjRhMDJkNTA5ZjcwZDJiMmRkYjkzOWY5Y2YiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEyODc2OGFiYmMyMmIzOTA4OWFhMmJiOGJmMDE4ZmUxZmI5MDI5ZDZjYjIzZGU0M2Q2MGZjYjJhMzI2MTdlMTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVjMjhlZTY5OWIyMDM0N2Y4NWE2MDQzZTVhNmE4OWI1Y2U0YjIzNGZiNjJhYjE2NWM3MDMxZjBhZDdmZjkzZDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRhYzYyN2Q3MzdlNmY4YzMzOWM3Yzc5Yjk1MTRjNmFmNGFmYjcwNDFkNGI1ZmM0NzNmN2VkNzE5M2ZhMzkwMjgifQ" + } + ] + }, + { + "id": "claim_ae89a89265b944c7b574a17f605bc64c", + "statement": "In Databrowser OPEN mode items without configured AUTH_FIELDS are available to all; AUTHENTICATED restricts this to authenticated users, excludes anonymous users, and both modes exclude items containing configured authorization fields.", + "evidence": [ + { + "resource": "repo://hub/databrowser-auth.rst#L98-L140", + "version": "repo-lines-v1:sha256:c0c0eb0773117bca34167668cc80f884f547618cb005c6af29bd474af2f31f96:eyJzZWxlY3RlZExpbmVDb3VudCI6NDMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmMDIwZDlmNDQwMjdlZWQyNmM1MjgxYzVhYjc3YTQ4NGUxZDAxZjAyMjZmOTA2YzhhNmVjMTQ3YmZjMDFlNTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiZTEwMzVjZGQ4YTAyN2Q2NmFkYWUxZDhlMjU2ZjkyMWI3ZmQxOTE1ZjQyMzE3Y2YxNjk1N2MxNGQ0ODUzZDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQxZmJlMjEyYTk0NzY2NWE2NzFkN2Q0OGY4YWQzNTYwMTg4OTFmM2ExZmE4OTk3NTgwNTdiNmJmOWNhNmFjZjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlmNjEzOGY4Mjg4Y2JiYmQwMGZhMDg0NTNiYjYxMzVlNGU2NDdkMTk0ZjlhYzU4NGYzYzJmMjI3Mzk0MzEwNWIifQ" + } + ] + }, + { + "id": "claim_09da36e98c3841d4a97f2d2d6cb682b7", + "statement": "Databrowser AUTHORIZED mode requires AUTH_FIELDS and restricts authenticated searches to items with the specified authorization fields and authorization or ID fields matching the session psis values.", + "evidence": [ + { + "resource": "repo://hub/databrowser-auth.rst#L119-L151", + "version": "repo-lines-v1:sha256:b16f00675dab3704e2eeafbfc2b2a565d2197cb87da2bd5db187ea773d36d9f7:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjYWM5OWNiYjZlZTI0M2NjOWExYTlkOTU4YjdmYWJhOGE3YTM3YjZkNjE4NjFlZmY5YTIxYWI3ZjIwMDVhZDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk0NGE1YmY1Y2EwZDcyNDE2YjAxZTYyYTBjNWYxNTQwMTYyYThlYzk3NDRjODI3YWMwZGFlOWVjODVhNzcwMmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk4YjAyM2Q3MjkwMWMwYWE1MDEzZDYxMDY1ZGU1NGU3OGVmY2I4NjMwMTUzM2E2Njg5MjBiNzM0NGE0Nzg0MmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMwZTE3NTljMzQ0MTg0YzM0ZmRjODM3YWYzYTczM2MxNmQ0ZDRkMzE1NjgxOTZmNWVhOGFjOWU4YmU2MTI5ZjUifQ" + } + ] + }, + { + "id": "claim_3c2a46e68eb7446badde7a9efdf6fa80", + "statement": "Sesam-portal JWT authentication is enabled by jwt_authentication_subscription_ids, listing accepted subscriptions or using * to accept JWTs from all subscriptions.", + "evidence": [ + { + "resource": "repo://hub/databrowser-auth.rst#L154-L179", + "version": "repo-lines-v1:sha256:c0b80f971c0c39ae4400109fba00489e653709a134afdd030bace2cbed9cbcbd:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZiNTk5MmFmOTk2ZWQwMmQ1MjM2ZjJlZGM3YjEwOGRmNzFkODI4ZGY5YjAzMGNkNWRjYjI1ZmZlZGFjMTQ4MWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM5NGYwYjljODJkM2I4NmZlNTZkMGYwMDViNTQ2Yjk3M2MyMzY3YTU4YzY3MzJjNGQ1NjU3NzUzZTg3Y2RhOTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRhNmRjY2ZjNzZkNjJjOGJmOTdiNmU2NDYxNjVmZDM3ZDg4NjI4ZDNjMzUwMGVjODFlM2Q5ODMzYTQ4ZjU4M2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjExY2FhNjU5MzI0MzgxNzFlYWQxOTljYTI4NjM1MTA4NWQ1OWRjZTg2NTQ0MzlkNDkwYmMxYTQwYTVjNDcwNDYifQ" + } + ] + }, + { + "id": "claim_7e0e04a4d0c34e29a3cf3ad4dd5e9bb5", + "statement": "Ordinary Databrowser JWT users remain subject to Solr authorization, while JWT group:Admin grants access to all Solr documents and configuration editing.", + "evidence": [ + { + "resource": "repo://hub/databrowser-auth.rst#L181-L185", + "version": "repo-lines-v1:sha256:8149045c579dca010236b6ba0657188f3c3d486a22706f38ac1d3e795d2b4d55:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTYzNmExNDkwZTg0NmNlNGQyZWE4MDY1NzMwZmQ4OTBlOTczMWUxNDg0YTE1YWU4MTU1ZjhmZGNhYjljYTY0NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDY0MDY2Y2NlOWVmM2FlYzM4NDc0MmJlZDc4ZDVlM2QyZDcyZWQ3NDE2OGU1ZTkwMDczZTljNjkwYTU5NTkwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjYyMjE3NDhiZjg5ZjQ4N2Y5MTg4ZGJhM2NmZDE4MDFlYzRjZGU1N2EyMDAxMDEzMTJlMmE1MzQ4YmVjMDQ4MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjU0YzAyNDU3NDEyMTU1ZGM1OTQ1Njg3ZjU0YjY2YTc2YThhMjc0Mzk3YmFlNGU4MDg3NTgxMWZjYjcxNWEwZiJ9" + } + ] + }, + { + "id": "claim_1fc473626abb4034a9203aeee57fc9ed", + "statement": "The JWT narrative describes /jwt_login GET as a token form and POST as storing parsed credentials in a server-side session then redirecting; Swagger labels GET development/testing-only and POST as Management Studio access.", + "evidence": [ + { + "resource": "repo://hub/databrowser-auth.rst#L187-L195", + "version": "repo-lines-v1:sha256:b6f279967407cce1bdbf3bdede2c5d4f7074881d89ddfc35359eeb14ba154d66:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmU4ZjA5ZDBmNjY1YzY0NWY5ZWVlZWUwODYwZmVjODY3OWM3ZWI3MzJmMDE5NDdlOTM4MjAxOTllZWRhNDdkOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTFhNzE5MGVjODgzZWM1Y2M3NTUxM2EwMGIxNzY4ZWY3OGRkN2ViNWUwNTNhOTVhYjVmOTNmNzk0MzUyMmE3ZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDlkZjRkOGEzM2UyZmEyZTIwMGQ4YTU3MmMyNDk4NDNhOWExZWJjZTc5Y2Q5YWY2NWEyZDM3NzM3NGViOWNmNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjEsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiJ9" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L70-L84", + "version": "repo-lines-v1:sha256:96d12fbd174cd64f0443ba6241383e61c598d8c0eae2d07a826ffc9ac44278ec:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBiZTM3MmRmODIyMTIyMGVhZWQ0Y2Y4MDU2MDBmNDI4OWQ0MTg0ZDkxYjI3NGQ0ZDg0MDNmMzAzNzY4YjllNjQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzOWRiYmI0MGM0NzRmNTg5MGUzYjMzNTJkYzliZjJlN2Y0Mjk5OGQyMzk4MTY0YWQxM2Q5ZjNlNmJmZjQwMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI5ZjgyMTVkMWM5M2MwMzUzYzE0NGZlOWQ1NDA3MzAxZGQzNmUxMjkxYWFjZjhmMTRiNzJjYTA2NDlmZjI2NDEifQ" + } + ] + }, + { + "id": "claim_053a5b0936714ac0bf93271c9205c25b", + "statement": "Databrowser authentication and GDPR Platform configuration share the same OIDC provider include, which itself carries the Databrowser end-of-life warning rather than GDPR Platform's distinct warning.", + "evidence": [ + { + "resource": "repo://hub/databrowser-auth.rst#L65-L74", + "version": "repo-lines-v1:sha256:91433e4621e7fa8ce93f10b543c908cdb052b04ad5c7218eb93e7463cd954a16:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjllMDkxYjI1NmRlNTAwYmM0ZGMxZDYzYzkzYmI4YjRiZGE4YTQ0Mzc5NTk2MGEyMDhmZGYwNWIyM2RmYmU0YTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5YjI1MDdiOTY5ZTExYTA2MzkyNGNmMGM0YzAzNjQ4NDZjNjBmYjk5ZTdkNDJmOWNmZTIxZDg3Nzk4N2ViZTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM2ZjkxZDgwMmUwMTg0YTc2YTMwMmJiYjNhNjFiNzllODliNzNjZDc3Y2JiZTYzNjljOWU4ZDJhZGY4M2QwNWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVjMjhlZTY5OWIyMDM0N2Y4NWE2MDQzZTVhNmE4OWI1Y2U0YjIzNGZiNjJhYjE2NWM3MDMxZjBhZDdmZjkzZDkifQ" + }, + { + "resource": "repo://hub/databrowser-authentication_providers_examples_and_docs-for_include.rst#L1-L8", + "version": "repo-lines-v1:sha256:a28ac5b65a68d85f6e499dd3c040b2b6e08829e4b1072bb8185342ee0557b495:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGRlNjQzYzdlMDAxNTU2NGZmYjgxZDNiNmYzMjgzZDhhYjdjNjNkNDAyMzA4ZTY0ODJlMGMxOTZlNzRmOWI5MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWQ2MjIxMWRmYzdlOGJmMzU2MzVlNDczNGFmYjlmZTVhZjBhYTZiOThhNzYyMmMwMGM1MzU0ZjU4MWUwMDQzOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjU2ZTc0ZjE3NzZiNzhlOTJhOGJjMDdiMDBkNTlmNjFiZTJmY2Y1NTU2NTkzOGQ0ZTZmMjJiOGFhZjlkYjhkMiJ9" + }, + { + "resource": "repo://hub/gdpr-platform-configuration.rst#L180-L194", + "version": "repo-lines-v1:sha256:37d77951bf18cdab76aa6ed64c3e3bffa3f0a20f0c2b9dd4bce5fbfe711cac9f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg5OWMzOGEyNDliNDA1MjY1NDYzMjg2YTQwYjc3M2JmMDVkMDYwOTMxNDg5MmJjNzZjZjM2NjBkNDNlMGVjZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5YjI1MDdiOTY5ZTExYTA2MzkyNGNmMGM0YzAzNjQ4NDZjNjBmYjk5ZTdkNDJmOWNmZTIxZDg3Nzk4N2ViZTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY4NjFhZGU4YTAxNzA0MjkxNWE3NTVkNGVlOGE0YjJkNzdjMmY5ZjY5YjEzYzBiNzdhMTIzMmJjOGFmOTJhNjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUwMjY5OGEzMTY2NmZkYmU1YjAwZWUyN2JjZWZmY2JkNTk4NGYzNzE0YWUxNWVlNGRhMWNkYmMxODc4MTRjZDEifQ" + }, + { + "resource": "repo://hub/gdpr-platform.rst#L1-L3", + "version": "repo-lines-v1:sha256:79f1086ca57b9e9bc7b56faf32c588957b57b49d1722ad40d36e8bb91102d202:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDY3NGVhNDc2NjczYzBhYzg0NTUzYWMyMjEyYjc5MzVhOTY3ZGExNmEwMTM2Njg4ZjBmZmFmODdmZWI1YmJmZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjQwZGE3MzczNTg4NjU2OTAyZDQ2OGRlZWM3NzQzZDM0NDU4NzVjZmQ3ZTU5MjUzNGExY2QyNWFlNjU1ZjM0MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTA5MzU2NmZlNDhmY2ExMzg2ZmY0ZDdkZDE4NWY5OTAwZTNmNWY0ODA2MDU5MTE3YTM2ZTU4YjliNDkxM2FkNCJ9" + } + ] + }, + { + "id": "claim_d0f98ab404a44cd695d2c76cbdee1691", + "statement": "Shared OIDC configuration requires unique provider_id values, consumer_key and consumer_secret, and discovery URL or inline metadata; the docs prefer discovery metadata URLs.", + "evidence": [ + { + "resource": "repo://hub/databrowser-authentication_providers_examples_and_docs-for_include.rst#L7-L56", + "version": "repo-lines-v1:sha256:9ee4de2a1e739fd076b53ad19cbd2c0e2c9c8c875d3d22ecc2cab452f09ddf9d:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc3NGQ0NjRhNTIxZTgyNWQ0OTM1Y2Q4YjNhOWM5OWI3YjY1ZTQ0YmEzYTQ5Yzc2YWYxNGVkNTcyMjFjZTA4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZlOWQzY2RhNjJiOTU0ZmU4ZjgxM2EwYTJmYjZiYTgyYThlZWEyZGMxOWE1MGQwNzlhM2YyZDM3Njk1OTBkZTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRhOWQ2MWViNDA3ZmIxYjczNjNhZGM1ZjRjNTE3YzlhN2NmMmVlZWVkNWUzMzcwY2IwN2JiZjdjYzBmMzNjOTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNiNDJlZmUyMjE2OGI0ZDRmNmY2NDhmYzYzYmNlYjQyNmYwZDRiOTExNTQwZGQyYTgxNjNkYzg5NGQxZWE5N2MifQ" + } + ] + }, + { + "id": "claim_bbcdd3eae81342ad9094ca29b08976c2", + "statement": "Shared OIDC options default user_id_attribute to sub, contactinfo_attribute to email, and scope to openid profile email; userinfo can be disabled in favor of IDToken extraction, and the docs recommend Google email and Microsoft upn identity claims.", + "evidence": [ + { + "resource": "repo://hub/databrowser-authentication_providers_examples_and_docs-for_include.rst#L58-L80", + "version": "repo-lines-v1:sha256:3b036fcd42079dbb17de7b86251b1694dc82547f55c64330f32a10cefe73e926:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIzYzY2ODQzNjlmYmY0MDgzYTAyYmE0Y2E4YWU2NmI0MWY5NzljNTBiMTUzMmM3MjRlYmFjZjA3M2JjMzUzZDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk1MTQzZTc1YmM3ODRlMjJjYjQ2YjRiYWZjNjVlN2JjN2Q4Y2QzMWExYzU1OTQ3ZmI2Y2YwMDA1MjY2NGZhZDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNmMjQ5NzQwODA3OGQzNGNkYWQxZWI1MWZlMTkyMTAzZTUzMDY3Yzc4ODkzYzYwNGE1OTE0MTliYjIzMzgwYTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU1ZmU4ZGJkMzE4ZjQ1MDJlMjNjOWFjODVjZmE0Zjg3ZDU2NGMzNDU4YzNhN2U3YzU2NTM3MzIyYmQyOTg3N2EifQ" + } + ] + }, + { + "id": "claim_358c19449ce44703a429a0ae2e46789d", + "statement": "The shared OIDC allow_unverified_email option defaults true and can be disabled for email-based providers that do not already verify addresses.", + "evidence": [ + { + "resource": "repo://hub/databrowser-authentication_providers_examples_and_docs-for_include.rst#L69-L72", + "version": "repo-lines-v1:sha256:5000c10944962157cf86176b01ae1525986bed65bff09097bda35ff88574083a:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGQzNjc3YWUxMmM3NTY4NTA3ODQ0MTNjNGMzOTY1ZDhmODQ0NWRhZjM5NmNiNjNiMDI3YWRiY2E0MDdlMGZiOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzJlZTdlNjVhNDI2MWJjNzkyNDk4ODRmNThmNjFmMjgyZjc1OTBhN2UzMGUyYWM1YzIyMTI2MDhmODc4YTYzYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzQ4MmMxNjYyNDZiMjEwNTkzMDBmYTkwOTY1YWZmNWYyMTkyNjZjNmRmNWE4NWFkZDY2OWYyN2U1NzliMTY4ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWVmYjJhMTE0NDQ0ZDQ1NWNkN2FiZDBkM2M0MzdhM2MzZGIwMmEzMWQ2OGMzMzQyNWRjZTZmODA4YzM1MDI1NyJ9" + } + ] + }, + { + "id": "claim_95529f2a8f0c45a2ac84c2c753b8c49b", + "statement": "The documented OIDC browser flow returns an authorization code to the DAP backend /login_callback/, using the configured provider ID, and post-logout redirects use the backend base URL.", + "evidence": [ + { + "resource": "repo://hub/databrowser-authentication_providers_examples_and_docs-for_include.rst#L83-L115", + "version": "repo-lines-v1:sha256:3e4e97685249ac7ad0252924d5df2c21d8557a6b83a2191c450b12973a87a3c3:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc2MWRiOGYxN2ExYzZiM2EzZDMxNDgwM2Y5NDY1MWFmM2U2OGM0MjUxZWY5MmYyNjYzZGI3MTk0OWY4ZjA5YzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzZTI1ZmU2NjM2MTA5N2RiMzdkNzRlMTNkMGIzYTNjYTM5MWQ3NTgwYzczMzRmNGYzN2FjNmMzODkxOGNjZTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhiZDVkNmE3Nzc3MDlmY2ZkN2RhOWJjM2JiZTA4NTMwNjQyODE3MTkxM2FhNzI1MTAxNDg2MDBhZWJkNTRkMWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_9005846506c847998ba65c79796805e1", + "statement": "The GDPR Excel setup uses Purpose and Data type sheets; purpose metadata includes activity, legal-ground, source/sharing, retention-day, criteria, and language fields, and purposes appear as subject navigation tabs with opt-in/out for consent-type purposes.", + "evidence": [ + { + "resource": "repo://hub/gdpr-data-types-purposes-configuration.rst#L12-L107", + "version": "repo-lines-v1:sha256:b4a1f0453ddcbd726cd2930d86998795a986e2ec95a9597209e9a33d51ffa76a:eyJzZWxlY3RlZExpbmVDb3VudCI6OTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhNTg5Y2VhNWQ2MWVlZTQyNzgzMmI3ODEyOGQwOThmNDMzNWE4Y2FlNGViZjAxOGQ5MzdiNzIzM2ZjYWU4NzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNhOWE3ZDE2YjE2ZDg4ZDlkMzE3ODY4M2I5NDE5NzZkMDIxMjkzN2Y0NjE1YjI1Yjc2ZDI3ZDJkMTE4YmJiYWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRkMjFmYTIyNmU3NjE1ZWRhNTI2NTFmZWI0NmY5ZTBkNmVlMGNiZmVlY2E3ZmZhY2RlZDUzZjFiMTEzMTlmZDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMyYmU0NDRmMmQ4ZmZhM2FlMmY5NmI0MDk0ZTMxY2U1YzE4YmZlY2RlNzQxMjY4ZWI3MzA0ZWExYzYyNzc3YzQifQ" + } + ] + }, + { + "id": "claim_277950768be241bb8b804234d089b0aa", + "statement": "GDPR data types describe type/system, description, Personal or Related level, notification contacts, and a generated x-mark matrix allowing multiple purposes per type; contact email lists must not have whitespace around commas.", + "evidence": [ + { + "resource": "repo://hub/gdpr-data-types-purposes-configuration.rst#L109-L162", + "version": "repo-lines-v1:sha256:5e912decc3a03e01606fed16d87afa09f4d6bce3390a45de34594bc44d81b51d:eyJzZWxlY3RlZExpbmVDb3VudCI6NTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZlMGM0NWEyNDkxYTdmODhiOWU1MzU1ZmVhNDAwMmVmYjYxZDc0YTNjZTVlNDY0MDBkYzlkMjM5NDlmZWMwZjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhNTI1ZDY1NjNkNTcwZmJmZTdmMTY0MjUyM2VhZDhhMThmOTUyNzk0NzUwMGU5ZTE4ZmNjYThjOGQzNmZjYmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImViMjFmMGNmZjE4NGFkYTIxNGM0MzJkNDdiZDIzMzdlNjkxZjY0NDU1M2ZhYjYxYzAzM2Q4ZjAwZjlmZTNjZTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVhZmE1MDdkMjFiMzVmYTRhODUwNGZlZmZmZTRlYWIwNjc4YzVjNTU5MWQ3MDE5MGExYzhkODZlZjBkOTI1NGMifQ" + } + ] + }, + { + "id": "claim_44be845e5fa6400c804e78d68e6df8ca", + "statement": "Purpose and data-type spreadsheet IDs are computed and must not be manually edited; the data-type ID description allows a maximum of 32 characters while Type/System descriptions require their combination to be less than 32 including whitespace.", + "evidence": [ + { + "resource": "repo://hub/gdpr-data-types-purposes-configuration.rst#L134-L145", + "version": "repo-lines-v1:sha256:c8351ebde1385e8df98c4f8448fc1838471035fccd309697c303ad474e9d5c79:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE0ZjI5MTZlMjEyZGNhNTUzOWJkMjZmYWU1MmEyNDE3NzQ3YTA2ZGQ4NWI5YWEzZjQ2Y2Q5MjIxODhiY2JjYmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY0ZTg5M2QzODJjZjQ5Mjc3Y2EzMjUyNjBiZTBlNTUxOTMyZDZhMWUzNDMzNjU5NjE3Mjc1NTgyNGViYjJjN2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk2NGQ4NWFjZTRkZmU4NzYxZDBhMGNjYjZiNTAyYTgzZDllM2FlYjExZWZkNWZkMzcxMDk0ZWNjOTY0MWRjYTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQwZTY0NGIzNzllMDQ2OGUzNGY5NjNhNzUyNjZhMzhiNmUwNDI5M2UwNDE0MjA0Zjg4YmM5MzEzMGU3NjNjMzcifQ" + }, + { + "resource": "repo://hub/gdpr-data-types-purposes-configuration.rst#L48-L49", + "version": "repo-lines-v1:sha256:591010f2c1e798ed2b6cae79883e786e4f6cfebe7c20eec73a3121a534e771ea:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTRmMjkxNmUyMTJkY2E1NTM5YmQyNmZhZTUyYTI0MTc3NDdhMDZkZDg1YjlhYTNmNDZjZDkyMjE4OGJjYmNiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTg5ZDFlN2Y1YTRjNGJmZTI5ZjFhZTJlMTI0ZTczMjBmMTNkN2RhNjNlYzM2ODk5ZDA2MDM3YThkOTM3YjE3ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTY0ZDg1YWNlNGRmZTg3NjFkMGEwY2NiNmI1MDJhODNkOWUzYWViMTFlZmQ1ZmQzNzEwOTRlY2M5NjQxZGNhOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWFiZmFmMTZhZWY1NDFjNTk4ZGVhOGIyMjY4ZTUxNjJkNTkxMjM4OTgzMmE1ZDA3MjFjZDcyODBjMTM2NTliZSJ9" + } + ] + }, + { + "id": "claim_221f2b4eda5e47a59042b69cad9ab040", + "statement": "Uploading the GDPR setup updates platform structures and DAP types/purposes after potentially a few minutes, inspectable in gdpr-data-type and gdpr-purpose; shared-URL setup retrieval has configurable cron scheduling defaulting to midnight UTC.", + "evidence": [ + { + "resource": "repo://hub/gdpr-data-types-purposes-configuration.rst#L165-L178", + "version": "repo-lines-v1:sha256:ed3e5d90b9908e30c591ce5adf21293f8a8da8ba5399c6ab15187fb402209f16:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRkYzNjNTY4MWY5Y2I1YzEwZjIyOTIyNTI3YTM2OGUzOGNmYzhiOWFkYmI0ZmVjMTcxYTdjOTNhM2I0ZmVjN2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFiM2E5MzllMTQ0ZjY5M2Y5NjhiYzFhNzYzZDJhZGVjM2FjNDRjZGRmZTEyZGIxYjcwZjlmN2FkYzRkNjhhYTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg3ZWMyYmQwYjY5MTE4NWI3NjU2ZWVjY2JkMDgyNTNhYzYwNWZiYmY0NjEyOTVkMmYzZDVhZDFiZDcxMzUxMDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/gdpr-platform-configuration.rst#L58-L101", + "version": "repo-lines-v1:sha256:e3e7b8f63043a3b5135d9ddf4020387ce5e7bf5e9b2077fd705ae6a508f82cb6:eyJzZWxlY3RlZExpbmVDb3VudCI6NDQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMxMGY3ZTc0ODdkZDFmMzE4NTgzZTY2YTJmMzRjMzQxNmFiMzRkOTk2MDU4YmRiMGVhNTM2OTQzZDhiMGY3ZGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjYTE2OWJiNTAwYzIyOWM4NmFhM2E0N2E5ZWFhZWI5ZWVhZTVkMWEzOGRmODQ5ZmRkZGI2NTc0MzZlODRlMzAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJmMGQyYTVlYjA0ZDI1MTYwMWQwZmVlMzJmYjE3MTkxZjExYjJiOGE1OTAxZDA2NzEwNmEzNWZjODljMWRjYmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk0MWY4ZWUzNmMwMTY4NGM5YjgzNGNhMTYyOWU0MzkwOTExYzU2MzU2N2YyMzhhODQyODk1Y2ViNjhkMTM4MzkifQ" + } + ] + }, + { + "id": "claim_7fc229491cde487d9ab71c0be4c5da9e", + "statement": "Default GDPR subject login sends an OTP to an email address or phone number, and the portal guide says it expires at session end or after an unspecified idle interval; OIDC is an alternative.", + "evidence": [ + { + "resource": "repo://hub/gdpr-data-access-portal.rst#L23-L29", + "version": "repo-lines-v1:sha256:edab3e153f7fffd66448093207bfdd0b6377a9290ca271ba2a2d077404e17a69:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzExNTM4YWQzMjU4YjFjYmVlYzIwZDYwZGM1MmQzODlkZGNiMWFhNmIyN2IxNTU1NWQ1OTY0ZDVhN2Q2ZmM1MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTQ2MzVhNGI3NDhjZDg5NGQ1ZWIzZWRjMjZkY2I2OTAxZTE4YTYwOGMyMjMzZDhhNjhjOTM2YjBhZWQzOGRjMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjcyYjg3OGY4NWQ1OWQwMDI1ZmI1MDViNzQ0MzRkODAwNDZkNDg3NTcyMmY5YjA2YzNkZTUxNzYzM2VhNjg2ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzkzYmMwNmU3OTA5MmE0MWU2NTczZjViOGUwZTI5N2ZkMTJmYmFlOWFmNWQ5ZTI0NjRjZjg1ZGU3OWU3YmQwZSJ9" + }, + { + "resource": "repo://hub/gdpr-platform-configuration.rst#L180-L194", + "version": "repo-lines-v1:sha256:37d77951bf18cdab76aa6ed64c3e3bffa3f0a20f0c2b9dd4bce5fbfe711cac9f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg5OWMzOGEyNDliNDA1MjY1NDYzMjg2YTQwYjc3M2JmMDVkMDYwOTMxNDg5MmJjNzZjZjM2NjBkNDNlMGVjZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5YjI1MDdiOTY5ZTExYTA2MzkyNGNmMGM0YzAzNjQ4NDZjNjBmYjk5ZTdkNDJmOWNmZTIxZDg3Nzk4N2ViZTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY4NjFhZGU4YTAxNzA0MjkxNWE3NTVkNGVlOGE0YjJkNzdjMmY5ZjY5YjEzYzBiNzdhMTIzMmJjOGFmOTJhNjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUwMjY5OGEzMTY2NmZkYmU1YjAwZWUyN2JjZWZmY2JkNTk4NGYzNzE0YWUxNWVlNGRhMWNkYmMxODc4MTRjZDEifQ" + } + ] + }, + { + "id": "claim_8d0261d948424df9ae0c49b3a01f2cab", + "statement": "GDPR access_request_contactinfo can require a notification destination at request time when authentication supplies none; supported configuration types are email and mobile_phone with user choice for multiple types and validation by the OTP email/phone regex options.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-configuration.rst#L197-L236", + "version": "repo-lines-v1:sha256:c8d337a99d5f85b674bb8f364cf05daf706d5b726e9c0c06c6bee007075f4f42:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQwOWY1ZTIwMWVmNzRmM2I0ODZmNzM0ZGRkNGYxY2UwMTk0ODc1NDFkZDM3OGRiMjg1ZmJiOGYwOTM0M2U1MTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQwZTIxYzU2ZjQ5ZGY5MjEwODc0ZDhiOTc2MGVmYzgxY2EwMjY5Zjc4MDJkOTEzNzQxYzZjMjIxOGUzNzZlNjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU2ZjRmNjViMWZmYTM1ZjRhNjM0MjU1NGI1ZTA3NWUzN2I0ODQ1YTg1MWMwNDEwMDBmMDIxMmU3YTc3ZmEyOTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEyYzEwZDQ0YzA2YjQyZmZmODg5YzQzZWVjNjFmZWFkMGQ0MzUyYzk5OGVlYThkOGEwN2VmYmM1YTc3YmJkNjgifQ" + } + ] + }, + { + "id": "claim_86107ad369b94255b4d0edcae92c9321", + "statement": "GDPR extra_access_request_fields is empty by default and adds required unique subject-identifier fields whose headers and tooltips are resolved through localization.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-configuration.rst#L239-L278", + "version": "repo-lines-v1:sha256:9b26331438617c280c1df843c2bf96bc5f7a45f5019690ecdf0bc723c3c1e123:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdjZGNhMTZiNTA0N2Y2NWQ2NGUwMTNiNTIxYzU2NDFkY2UyYzI4YzI5MzQwMzdhMDg5Nzg1YjFmYTlkNjFhZDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA4MTE0ZmFhZjBlMjY0ZTg2Y2VlOTg3YWYyMTE0NjU4NTg0ZTc0ZjUxMmI2MjU2YmY2OGUxNTI3ZmRiOWQ1YmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZmNzAzMzNlNTFiNmEyZGM0ZGM3ZjEyM2Q3YjYxMDg0MzEzMzk2MDZiZWFjNmY3NjY2ZGU5YTA1NGVlOWIyNzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_c207c600f67c427a8e6573774858a65b", + "statement": "Historical GDPR documentation gives both selected-domain-name.sesamdata.com and gdpr-dap-subscription_id backend URL forms, with the portal guide directing operators to Network for the backend URL; these examples do not establish one universal hostname convention.", + "evidence": [ + { + "resource": "repo://hub/gdpr-data-access-portal.rst#L7-L20", + "version": "repo-lines-v1:sha256:07c7687ebde9a2e8bae8fd6123cb4a2d4c5aa93447d312ee2c1541d187f30746:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4OWE5ZDFjYzJkNTNjNGRmNzE1NmI2NzVjZGYyOWE1YjZjMzExMWVkMWM1Zjk5NDNlMDI1ZTEzODViNzExZmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM3MjM3Y2Q0ZmRjODM2MGRhYzRjZDQ0OWQzZmQ4MjVmOTk3YmE5NWNhYTFhYWFiYmJiMDBiOTU3YTc2NjU5YjQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ2N2UyMGI5ZmUyZDZlNGY3ZmYzZjJhNzlkZjZhYzNhNTY2MjkyMDM2NDI4ZTk4MjRlNTg3MDUyNjM1ZDFhZDUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNmYjVkNjdlOWFkMmNjY2Q2MjQzYmMwOTA5MGNkOTY3MzM4ZWQ5OTM0ZTUxMzdlMmUwMGYzMjhmZDQ1ZjAyNzcifQ" + }, + { + "resource": "repo://hub/gdpr-platform-configuration.rst#L49-L56", + "version": "repo-lines-v1:sha256:2831863ee2035c8e921e3aafe7ab96b55eb8148dd3315ea8ca0a29cfd8086058:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWZmODNkMTBkYTI3N2Y4NGFhYjI4NmE1ZDc2NDkzZDRiMzg2NzBmZDk5ZWUzNDk4YTIxMTAxODI3NDc4YmIxNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTAzMzNkOGQwM2I3N2RjOTY4ZmY1YjA2OTliMzQxMzdiYjdlMzEwZjMzOWNiNjUxNjQ4ZGI2MWRiMDhiMTEyOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGMyZTY4MGVkNTJiOTRkNGQxYmMzOGMwOGI1YTAxOGJhOGM1OTg0YTk2NjBmOTE0MzNlMzlhYmIyZThkMjNlMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzRjNDg3MTE3ODg5ZDEzYjczMGFmMTQzNzY3NTExNzc2YWFlYmZmMGQ0ZjA5N2IxMDYwYWMxMTMxOTZhMDI1YyJ9" + } + ] + }, + { + "id": "claim_04100662c33e4ebc8bfff1ffe13fdbd8", + "statement": "A manual GDPR access request notifies all unique spreadsheet contacts, and handlers must be registered Sesam portal users, GDPR Platform members, and granted GDPR operations to access the request template workflow.", + "evidence": [ + { + "resource": "repo://hub/gdpr-data-access-portal.rst#L31-L52", + "version": "repo-lines-v1:sha256:8153323564eda4bb777475ba53e7f3272551875f45c6ecfd3665f589104c679a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjNWI4M2JjZTI2NzM3MWVmMWIzODk1NDlhZjcxOTk1Yjg3ODVlMTY0MjIyM2E2MTdiZGEzM2RmZDJlNjRjM2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZjMzcyZDNiNGFmMjMxNzNiYzYxODYwZGYyNGNjYjM3NTdiYjExNGRhYzM4ZGQxYWJlYTMxMzRmODliZGE2ZWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkxMjE2ZTFmZmFmNTViZjc0YTI0YTM4NmFkYzc5ZTY1OGZmMzVkYzQzMzlkOGMxODZiMzJmODM5ZDcxYjU2ODEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBkYjUwMmE1Y2Y4ZjA3M2U2YmFkZWVjNTE1NDlhYTZlZDM0NDlkN2U5ZmNiZWE5MGZlY2ZjN2Q4MmJiNjYyYzgifQ" + } + ] + }, + { + "id": "claim_70e3baa4201b4993bf1b16444ae7e1db", + "statement": "The manual GDPR request template's DataSubject identifiers and UTC request timestamp must remain unchanged; data-type/system sheets require a unique id column and one row per source-data row, followed by upload through the Access request template form.", + "evidence": [ + { + "resource": "repo://hub/gdpr-data-access-portal.rst#L54-L78", + "version": "repo-lines-v1:sha256:20ca1958c0d6d0c213aeacb5ed953c277ee87fff38152199b4b3398eebb1da2c:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4MzZlMjJjNWIwOTBjYmMzYjFjMmU1MTk1YWE1N2U1Y2JiMDRkODdlODcxMDBmYWViYTZmMTExMjk1MzQxZTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI1ZmNkN2JkNTNkOGQ3YmY5NTBjMzc0OGFiMmZjNjQyNTNhNTFmZGY3N2U0NDVjYTNhMTk4YWY1ZTEzMzZhOGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ5MGI1ZDY5OTlhYTAzNzIzNDdkODAyN2Y4N2ZmZjM3MWU2ZTM1Njk3ODAxY2VhMjkzOGVjMzVhYWU2YzRmMWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYzMjI4ZjRhZjZmMzA0NDFjZWYzOTgxZjViN2U2MDljNDBjNzYxYTFmMzdhZTM2NDVlNTdhYTFkZWZjOGE4MjYifQ" + } + ] + }, + { + "id": "claim_16a35e2451dc48d4b0800c8ffa54a73c", + "statement": "The documented manual request upload encrypts subject data with the subject public key, stores it in the GDPR datahub, and sends it to DAP for decryption with a private key stored only on the subject computer; the automation guide separately describes importing copies of source data into the datahub.", + "evidence": [ + { + "resource": "repo://hub/gdpr-data-access-portal.rst#L80-L87", + "version": "repo-lines-v1:sha256:9564655ab1edd85da3d2c12acd432553118d2f80c9237b845c7699e33691aa03:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTY3OGQ0NWM0Y2I2NmI5MTliNGVkYTk4YjQwN2IxNTkyZTM4MTI4MmU1NGNkZTcxNWY5OWU1ZTE5NDZjY2I5NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzAxZThjZmQwM2I5YjM5NzIyOGRmYzZjMGM5NzRlNzEwZDM0ZjZlZjYzYzlmMzU5ZDhkMzYwOWU0MjNmZjkwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2U4ZGM3ZDlmZWU4NmY5MDUwNDEzYTcwNWI5NDc4MzgyMzNmN2JjZjc5YzBjOWY3ZGE3NmM3MTU3MDNlZGFjOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTQzZGZiOTAxNTkyNGM1ZTAwZGU0OWFlODdjNzg0YjI2YTkzZmE4YjYzZTEzZWE0ZmZlZWYxNTZjZDNlMDg0OCJ9" + }, + { + "resource": "repo://hub/gdpr-getting-started.rst#L138-L152", + "version": "repo-lines-v1:sha256:b6edde4cefb236302d495d756d47162c18530b1625557ce48bd822a20d79e50d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI4OTk5YmI4NjFhYWNhMGQwZDEyOWMwOWEwM2E1YmU0Yzg5MDFkYjlkMGQ4ZjJjYWUwNTdjOTVjYzdhYzE2NjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZmMjRmMmYwMzU3NDdhZjcxMTc4NGY1NjRmNWUxZTBhOWEzZjAzYTY0Yzk2YzJlODBmMGM4YTVjN2E4OGE3MDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ4YzRmNzY3YjhlYzA2YmZjZDFlNTQxZDY4ZWNlZDVlMzhiZGEzNTAzOTQwZGJkMDM0ZGEzNmM4MTA4YmE1YTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdhYmE1ZDc0ZTA0ZDk4NjlkMDQ2NWJjMGJjMjU5MmFkMjE5MmViYWFhZGZiYTM4NjkxNTMxOTg2ODg2MjY4YTQifQ" + }, + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L1350-L1353", + "version": "repo-lines-v1:sha256:a539ce786f16e3d9575f330c267b57a788b62610da0753c61198f17a05696796:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWUyMDYxZDRmYzg2ZTU3MjRkMDhlNjhmODQ1NTUyZjk1M2YxZjQ0OTRmNzMzYmZhMjJhYmY3MGQyNjMwNDdkOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWM3ODgzNzM3Y2QzOWIwNzg0ZDAyMDMyY2Q3NzU3NDliN2M3ZmI4ZTIzMGY4ZDBmY2ExOWU0ZGQ2YWIxZTk4NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2VkZDlhOTBmZGUxNjYzNmU3MDc2OTc3MjRmYjE5ODc4YzU5OWYzMzljODQ3NmU1Y2JmOGYwYmIyNWY5YzJmMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTNmMjExZTYyMTc1MTIxMGQzZDE4NzQ0NjgwYjYxYzg1N2IwNzE2NzdjMTQ4YjRmYTFlOGM1YTFkNTQ2ZWYxMyJ9" + } + ] + }, + { + "id": "claim_9c52263c0737440a9d03f33ff322265f", + "statement": "Manual GDPR uploads notify subjects with registered email addresses after a half-hour delay for DAP propagation, and each separately uploaded completed spreadsheet triggers its own notification.", + "evidence": [ + { + "resource": "repo://hub/gdpr-data-access-portal.rst#L80-L90", + "version": "repo-lines-v1:sha256:0467e9fbba77aeb4edf1ac9832fa632a0c8119b6955ace62a4d42b5a4dc9b3c7:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU2NzhkNDVjNGNiNjZiOTE5YjRlZGE5OGI0MDdiMTU5MmUzODEyODJlNTRjZGU3MTVmOTllNWUxOTQ2Y2NiOTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4ZjM4YjhmYTY2MDBlYTYxMjJhNjhiNTM1OTZlNmZkMzc1ZDgzOWJjZGRlZDkwMzZkN2JmMjljYTVlMWIzZjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdlOGRjN2Q5ZmVlODZmOTA1MDQxM2E3MDViOTQ3ODM4MjMzZjdiY2Y3OWMwYzlmN2RhNzZjNzE1NzAzZWRhYzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU4Zjc4M2FhYWRlOWRhZjJhNTA3ODY1YWY0OWRlODA4OWY3ZTVmZmRjYTYxMDhkNjNhNzk1MjM5Mjg4N2YwYWYifQ" + } + ] + }, + { + "id": "claim_6782ed50d71147c2b5aad647d6200bd8", + "statement": "Configured subject data edits and consent grant/revocation generate GDPR change notifications to originating data-type contacts; downloadable lists include subject/data IDs, old/new values, and timestamp, and manual accepted changes require source updates and refilled/reuploaded spreadsheets by GDPR operations handlers.", + "evidence": [ + { + "resource": "repo://hub/gdpr-data-access-portal.rst#L92-L118", + "version": "repo-lines-v1:sha256:b19472d59984f1d4427537c1bc2f7d8c8b18c39c946f8b524365dc2154cede33:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkM2JmYzM0OGI4YzFmOGYxYjdhODNmMTdjOGEwNGMwMGUzN2Q3Yzk3MTgyYTQzNTZiNDE1MGY3ODlmMWZlOTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNmZjBhMTIxNTk0M2Q1MjA0Njg3NjRlZDdkNzNkZjJmZmRkOTI5ZjA4NWY3ODA1ZTE3NmM5ZTBlYzk1ZmQyN2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5MGVhOWNkNzc5YzhhY2RmMDkwOWNjNDZjY2Y2ODZhNTlhMDMyOWIyYmQzNmM4OTU5ZmEzZTVmZmQyYjg3ZjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdhNTc5ZmNiNDY3OGY5MzE4MjQ2MGM4ZjRjYzMzYzZkYzRlZGYyNTc2NWRiYjlkOWFkMmZkYjliZDM4NzZmNDIifQ" + } + ] + }, + { + "id": "claim_31b5c4d0a4aa4b848c42ccf50b7281e7", + "statement": "The GDPR portal narrative treats whole-subject deletion as revocation of all consents and a special change request; manual handlers must delete linked source data then upload an updated spreadsheet, and the narrative says data pertaining to revoked consent should be deleted.", + "evidence": [ + { + "resource": "repo://hub/gdpr-data-access-portal.rst#L110-L135", + "version": "repo-lines-v1:sha256:ca3c9d5016e52bb9a7e8413a83a48e2bf84fb53ef4a0da6cef273975bdb1728a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU1MWE5ZWY0Mjg3OTc1NDQzZjZjMGVmMzY5ZGZjM2RkNWViZTY1M2I3MjUwMDdlZDAyNTBjYWQ0M2UyZmFlZWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNmZjBhMTIxNTk0M2Q1MjA0Njg3NjRlZDdkNzNkZjJmZmRkOTI5ZjA4NWY3ODA1ZTE3NmM5ZTBlYzk1ZmQyN2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhjMTljNTU4OGZjNjFhYzQ3NTBjMTBmOWJiMjhmZDA1NjE2NDhiYmQ2MWNmOTlhNDU2NDdmNTNhMzM3NjM0YTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_9f4f9b0d492d49e0a117aa65ce02065a", + "statement": "Historical GDPR guides permit automated change/deletion integrations that trigger mutations directly in source systems, rather than documenting requests alone as completion of those mutations.", + "evidence": [ + { + "resource": "repo://hub/gdpr-data-access-portal.rst#L112-L135", + "version": "repo-lines-v1:sha256:c967fe4c5962aac7484d907bfc5a060de1dcab7620087cae89afd71855bbc34a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5YzViYjc3N2NhMmUzNjY0N2RjNTc4MTBiYzk0MjI1M2FhZmI5MDczYjA4ZDhmM2UyYjI2M2M5MWJiYWQxMzciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNmZjBhMTIxNTk0M2Q1MjA0Njg3NjRlZDdkNzNkZjJmZmRkOTI5ZjA4NWY3ODA1ZTE3NmM5ZTBlYzk1ZmQyN2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVkMTEyYzQ4ZjZlMTZmYzZkNzEwMGM2Y2YxOTUyMDQyNTljZGEzMWZhNTc1MmIxNWYzOTU3ZTU0ZTJjNzViMDIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/gdpr-getting-started.rst#L234-L241", + "version": "repo-lines-v1:sha256:99490ca0bb535a7b3171e1cb0d927927d126ee5898ea7574b249509f9871f6c4:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmVlZDZjMDhhMmY0YzljMDZkZjIzZjYyNWFiOGYwNzhlNmE3YjcyZTRkYmNkNTE2ZTczN2QzNWMxNjdjYmY3OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzY3MTE2M2Y2NzE1YTRkZTllMmQyOTQ0NjBlMDEwN2M5ZGU2ZWJiZjEwNmIyNWE4MzFiMDczYTcxMTJlOTVmMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWFiNGYzMzE3ZmEwNTgzMzk5MDk4MWY5OWM0MGRiYTQ0MTE3YTg2YjlmYjVmMzZlZWY4MTlhOWNjMWVmZTI3NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmE4ODgzYzkwOGQwZDZkODY0ZGNmYWI3Y2E3YjdhNWM2YjA3ZTBmMTBiYjg1NzZkMWFmNDgyZDJkMWJkYzBkMSJ9" + } + ] + }, + { + "id": "claim_4cf2dacf29e94fc09c35e62a3f4ffadb", + "statement": "Internal Swagger POST /accessrequests requires publicKey, boolean deleteRequest, and lang, accepts configured extraFields and contactinfo, and returns an empty JSON object on success rather than subject records.", + "evidence": [ + { + "resource": "repo://hub/swagger_databrowser.yaml#L219-L269", + "version": "repo-lines-v1:sha256:2bfcadb2cd3bfbfb97d4ef7f3c1fe84eb660b976e1cddac44d54d1bc39c3baf5:eyJzZWxlY3RlZExpbmVDb3VudCI6NTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE1ZWZlOWJmMTRlYTQzMjc0NzJkZjFhMWJkZDgwZjA5YWRmZWU3YzU2YzZiYWU3OWE2MWVmNmYwNTRkNmYyYjciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmNmEzOWM0YTlkNTE1YTRkZmQ3MzI3NjJjNjM3ODc1NjE1YTg0ZjA1MTg4ZDA1N2M3OTU2NTliZjljNTI4ZDgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ODA2OGY3MThjYmNmZWNlOWVjM2E1YTMyNTM5YjA3MGJiZjEzMTY1MmMyMTM4MmRhN2ZkODEyMWU5MzY4ZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQzMzJlMzI2ZjcyZDJiM2I4ZjAzYTM3ZjA0NTE2NTEyMGJiMmIyYWJlN2RhY2ZhOTBkNjJjMDVkOTE2ZGRiMzMifQ" + } + ] + }, + { + "id": "claim_63b50f36572545e1a08069f1ebfb95d4", + "statement": "Internal DAP /accessrequest_login is called after login for a prior request and associates readable request data with its original publicKey; /accessrequests_update takes that key with update, delete, or add-purpose-to-access-request actions.", + "evidence": [ + { + "resource": "repo://hub/swagger_databrowser.yaml#L281-L333", + "version": "repo-lines-v1:sha256:2dcb23f4f30fcbcccfe507a4d983c840d3359f9ae86bcb3ebaa296a0b0bd2988:eyJzZWxlY3RlZExpbmVDb3VudCI6NTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE3MTUwNDc5MzQ1ODE5YzNkMDY3MWJhN2JiYTYxYmM0NWFlZmNhOGZmMTY2NjRmMGViOWU1YWVkNGM4MTFiOTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJjZWI2YjNlZmUzN2NiZTZmYjJmYmEwOTBhNzBkMTA5YjIxZDA3MDA1NTY3NjIyZGUyNGNhNWEzODQ0MjcwZjAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFlODgzM2Y0ODRhYTcwMTZhMzI1NTAzNjNlMjRiODI2YTliZmY1MTc5N2ZmNGI0ODcyZTJmMjAzYjliOWU4ZTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ5NjMzM2IwZWVmNjVjYzk5ZDUzNWNmZTUxZjcwOGQxZTQ0N2JlOTA0MjA2OWNjOTQ0NDAzMTJmNWQxYzMwNDEifQ" + } + ] + }, + { + "id": "claim_cff6df6915bc4705aca2c2c5f5912f05", + "statement": "The internal DAP specification provides document-specific GET /changerequests plus search/item-detail, GDPR download, and client field-formatting routes; field configuration supports client-side formatting of decrypted fields.", + "evidence": [ + { + "resource": "repo://hub/swagger_databrowser.yaml#L335-L374", + "version": "repo-lines-v1:sha256:2350a7367fb097cf914920d455f770aebd571a76aee5e33e34e6b05867e5d061:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImViMWQ5OTc2NWEzZmUzYzQ3MDcyMjdmODljNDdhODJjN2RlMzk3NmJiOWY4OWI3NjQ5MjIxMmZjYjZkMmRhZTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI1YmIxNGFkZWU4NGY1NzE3NTA5Y2IyZGQyMDJhODRiMTlhZGJlMDY1NDkwMTE3ZGNlZDdmMzZmMWU0ZmQ3Y2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyMjE2ZmUwZmI4ZWYwZjNhZjk5MmM4Mjg3YzAxODNlZDQxMzNjMjQxMWNlZDJmNWJlMWFjNmJhMjg2NTQ4ZGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM2M2JmM2JiNDU1NmUzZWU5M2IyMmI5NzEwNTQ1YTlmZWI3MzMxYjZhNWFjOGY3M2I0ZDVlMzMxNDkxOWM3OTAifQ" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L647-L718", + "version": "repo-lines-v1:sha256:291b5e823def0e31cc2aefefc5df08e8a816d1f646b444f8b9ee0391b187ada7:eyJzZWxlY3RlZExpbmVDb3VudCI6NzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2MWI2MWZlODE1M2Q2MzM1ZDAxNjcyM2Y5NGJlODk4MjEyOGEzNGRlOGYxZGQ0YjI5Y2I4MThkZDRiMGIyZjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM0YjE4MWMwZGNmM2FmMThiYzhiYTY2ZDQ3MmIxN2ZkOWY1ZDNkYjI5YTA0ZjZhMGRlMmU3OTEzMmYwMjJiM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZmZmJkNTRhZjg5YmFjOTY1NDdjYWMzYzBlZmU1MzUxMjAxZDNhMzU2MGEwOWU2ZDNhOTJmZjE5Mzc5YzkxZjQifQ" + } + ] + }, + { + "id": "claim_dea54a776581452dab588ec216c74492", + "statement": "The GDPR developer integration APIs are defined datasets with JSON Push receiver/publisher endpoints, including gdpr-subject-in/out and gdpr-access-request-in/out; these are distinct from Databrowser's internal UI routes.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L10-L25", + "version": "repo-lines-v1:sha256:ec326188cef56e1657918cbf140528d1217a33290f7adb888680f41eb8730d60:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVjNWU4ZmZjZDYzZGE4NjkzZTUxM2MwNmUyM2U3ZjU2Yzc0OGM3YTlhNDMxZjBiNmI4MzVkZjkzYTVkYzk2NzgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNjYmZjOTdjZTk2NTRiNTBlZjg3N2ZkNWY1NjgyNWIzMzg0ZDE3NDMxNjVlYjNhN2JmMGM0MGVjYTdjNWQ4NTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY1ZTJmZTZlZDYxMDM2ZjY3NWVmMzM4ZWI5OGM2MzgxYjcyNDk3MTFhYzVjMzMzZDkwODMzM2QyZGNlYTQ1NGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU1YmU5NjNiNjRlNWZjNzNhZDIwOWVlNzcwZWZlZTJlNDM0MTAzZDEyMjkzODMzOTA4NTNmYzdmMzFmMmQ3NmUifQ" + }, + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L1274-L1296", + "version": "repo-lines-v1:sha256:e7acad75ed4ed0a6a92d929bcdb1ea4ac26ef35372684069f03ae0303d8a8091:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzMjYyMGU1NmIxNjhjYmNhZTYwZGZjODY0NzNiOTQ2YTM5MTVlZGUxZWJhNzdhNzAyYWViODU5ZTZiNWU1YWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE5MGYxMjgxMGE1NzVlODZiNmU4ODgxM2Q2OWQ4YjQyZDk2YzgzZDk4YzBkNjFmOGU2ZDdmYWY4MjI2MzdhOGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRkZTBmM2VmNDUzMGZkNmVjNTg0NDZiZjBmMGU5NDczNzExMWNmNTg5MzhhZjlmZTFhYWMyOTc1MWNiNTUwYzYifQ" + }, + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L154-L176", + "version": "repo-lines-v1:sha256:c13dff7c912bdec0d08b6dd490dfe136399aa55d0fb2ca68b87e3ef2aa0052dc:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzMjYyMGU1NmIxNjhjYmNhZTYwZGZjODY0NzNiOTQ2YTM5MTVlZGUxZWJhNzdhNzAyYWViODU5ZTZiNWU1YWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE5MGYxMjgxMGE1NzVlODZiNmU4ODgxM2Q2OWQ4YjQyZDk2YzgzZDk4YzBkNjFmOGU2ZDdmYWY4MjI2MzdhOGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2ZmJjYWI1ZTFkNDA2ZjdlNWQ0NmY4ZTEyZjQxNTdhNzM2ZWU5N2Q5Zjk2OGI0NzMxZGFkMDQxNGI4ZThlYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY0OThlNzk3ZDE3YjFhZDQ1MThiMjI2ZDVkNWEwMTVlN2I5Nzc3MGI4ZDNjYWE5YmM0OGI4ZTZhYjk2MzUwMzEifQ" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L2-L6", + "version": "repo-lines-v1:sha256:b3eac5a9b75b4574fd9d6331c2e4df2e3f05c3aa14c8cb8548772c35b6782a1c:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjlkMDNmMGZjZTMwMzRlMTI1YzEzNDc5ZjgwNDYxMjVhMTg3MDcyOThkNjRjN2E1NDgyMjg4MjgxZmVjZmQ2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTRiMWI3YWI2ZjRiZDc2NDUyYjI4Yjk3NzdiOWYyMTRkNmI4ZjkwNGM1MDk0YzA1MDhhNmZlZGZhMDQ2Yzg5YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjEsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2NjZjcyZWNkNjQxODUyOTE5ZjBmMDgxMjU2MDQ1ZmU2ZWY2NGQ3NjU3NDUyMzBlNmY4MmYwODU1OThhMjc0YyJ9" + } + ] + }, + { + "id": "claim_4229eca07df843f2a6e9b7059791c299", + "statement": "JSON Push uses HTTP POST, batching, and JSON arrays even for single entities, supports incremental/full synchronization, and defines full-sync sequence conflicts with 409 and restart behavior, unlike DAP access-request creation's single object schema.", + "evidence": [ + { + "resource": "repo://hub/json-push.rst#L8-L88", + "version": "repo-lines-v1:sha256:e56f2f2f06cc1db3aa77601c80340b8d2f531263059d697084fd575f1620c4d2:eyJzZWxlY3RlZExpbmVDb3VudCI6ODEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIzZTQ5OTcxMTE5MmZhODc4MjhjYjgzOThkOGU4NDJiNDY5ZmFiNGM5MzA1NzI1M2I4YmFlODJjNGY5ZWRhODAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlOTY1ZjJkMDk5NzNlZjNiNzk2MDk4NDYyODhlMWQxOTUxMWU4MWE3YmM0MThhMTQzMzlmYjI0MjM1YzI2M2MiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjlkMzg1YzkxNzc4OGQ5NDY5MzcwM2QxOGY3ODIwYmVhZDVmYmU3YTQ4MDgzYzQxYTQ3NTIzZjAwOTg1ZmFkYWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY3M2M4MmI2MmVlOTMxYTBkNjJiYTg2ZWY5Y2Q2ZmIzMWJjMDAxYTc0M2VlMGZmNDA5YzRkZTdkM2I4MmFiY2QifQ" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L225-L269", + "version": "repo-lines-v1:sha256:8b1b26b7b531777aabaa488b1785f8432fcf1f3972692ad4184556dbf6e04779:eyJzZWxlY3RlZExpbmVDb3VudCI6NDUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY4YjFiM2EzOTY3ZDY5YzUwMTg5M2ZjYzcwNDc1NzkxOGY3MDhjYWU1MDVmOTI3ODkxY2I1YTliNGE1NDUyMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmNmEzOWM0YTlkNTE1YTRkZmQ3MzI3NjJjNjM3ODc1NjE1YTg0ZjA1MTg4ZDA1N2M3OTU2NTliZjljNTI4ZDgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjljNDZmYWUyZTBhMzg4MjA2MmRlODZiYWRhMzFlYzc3NjVhMWIzNGMzY2U4ODMyNjU5ZGY3YTlmNmJhM2Y5YmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQzMzJlMzI2ZjcyZDJiM2I4ZjAzYTM3ZjA0NTE2NTEyMGJiMmIyYWJlN2RhY2ZhOTBkNjJjMDVkOTE2ZGRiMzMifQ" + } + ] + }, + { + "id": "claim_8bbb7e4383874b73aa5a9651d82c8a6c", + "statement": "GDPR automation adds TypeID, Identifiers, and Exclude while leaving the purpose sheet unchanged; Personal identifiers match subjects directly, Related identifiers form parent chains ending in Personal records, Exclude filters properties, and registered custom-subject-data source datasets feed request matching.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L32-L109", + "version": "repo-lines-v1:sha256:737ec804e5c7bad186ea797c266c23bc9c2795a94e8d8db934efe20daff695b2:eyJzZWxlY3RlZExpbmVDb3VudCI6NzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYzZGNmMjYwNzFjOGNlMjBkZDg1YWNhM2JlNDk5OTBjZWE3MjM4NTAwZDM5NTczMDgyMzFkODMyNmUxZjAxNTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1YmIwYjRlYjNjMmM3MjUyNDA2ZDg0NDFhZDFiODM1OWM5OTU1ODE3NzM1N2Y3N2UwMDU5OTk1ZGE1MDQyZjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjlmMjliM2ZlY2MzMzA0MzhmNWJhNzk5YWRlYjk1MmE4N2EyMjZhMjczNDFmZDMzYWMzMDY0OGNjZGQyMWE5N2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBmNDM0MzNlNzVjNGY1YWNjOGI4Y2FmZmNmNTIxYTM4MTMwODQxNTc4Y2NiMjc2MDk5Yzc1NzQ5Nzk1NDlkMTIifQ" + } + ] + }, + { + "id": "claim_93f5695160024df9ac1b7471c864ebcb", + "statement": "The GDPR developer guide says TypeID matches dataset ID, while the getting-started guide says TypeID matches rdf:type, leaving a material configuration-description discrepancy.", + "evidence": [ + { + "resource": "repo://hub/gdpr-getting-started.rst#L163-L175", + "version": "repo-lines-v1:sha256:6a33145c995da3c135f0276cf528c495b545fee4c990b72e142367bf13486ddb:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2NmUzNTY5NmM4MDBmYjA3ZjI5MjI5NjBkYmZjMmI4NmVkMjFjOWVhNDYzNDRlZTAzMTc1OTdlZTg4MTNhZDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk1ZjVjNmM2YTAxM2EwNzgzMzQzYWM5YmY5Y2ExNTEzOGU2NDhlZDhmMzdkNzgzNjk5NGJkNGI3NDM4ODYwOGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ3YmM3ZDc5ZGI2Mjg4OWU2ZWU1OTZiZTQzMzc3ODA4Y2Q0YjgyYTQ2ZGE0MjA1MzNiMjdhMjE4ZTJkNWVlMDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRkMzM4NDYxMGVjYTY3Nzc1OGQ3MzFlMjE1YmU3NzRjNjljMjAxNjg4YmFhY2FmNDA1NmE5MWQyNDc5NmM3ZjkifQ" + }, + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L51-L53", + "version": "repo-lines-v1:sha256:92ae804d69d5418950fcb70ba88c023363568c82a593d75a2fb8782614659e39:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDY5NTQxOGJlOTdhNjE3YjhmM2M4OTNiNGMwMWFkNzg2ZTQ0NGYyZjc4OTk1OTg1ZTkxZjVmODc5OGJmMTgxZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2M1ODIyMTZmNWQ2MGU3MjNmMDU3NzE2MTVlYjZmNTgyZTJiNzI0YTVkMzZkMzM0MDkwZDY5MzFmZTNhNzJmMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTY0ZDg1YWNlNGRmZTg3NjFkMGEwY2NiNmI1MDJhODNkOWUzYWViMTFlZmQ1ZmQzNzEwOTRlY2M5NjQxZGNhOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjI5M2UxYjRiNzViOTcxZjk2MjIzYmUxMWE2MDk4MzU2YjFiMGYyN2RkNmZjZjM1ZDIxY2E2N2I5M2RlYTQ2OSJ9" + } + ] + }, + { + "id": "claim_e2036b4f8cae4d67855fb801f3ad437c", + "statement": "The GDPR subject contract requires a unique subject-id and nonempty identifier list for matching instances of a subject; custom-subject merges with receiver input into gdpr-subject and is externally exposed through its publisher.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L111-L186", + "version": "repo-lines-v1:sha256:4bed91f66f0f1f0181176f01f2ab78409a0793adc4ed97bc608563023c0e22ee:eyJzZWxlY3RlZExpbmVDb3VudCI6NzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ5ZjdmOTAwNWNkMzc3OTc2Y2QyYzVjZTAyZTA1YTFjNzFkOTY4NjlmZjljOWE5N2U0NGQ4ZmI1NWJmM2UzYTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZkYmEyYmM5YmQwNDZiMGM0NzAzOWU1Y2M2NzFkZmViMjBmZDE5YTg5YjRiYzhmYTUyZTJiNTgxOTdjZTIwMGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBiNzA2OTliYTQ2OGFlOTk2NzA5OWZkMDQzNzEwNzdmOGQ2MDRlMDM4ODU1ZjVkYjE0MjVkZDZkZDFiMmVhYjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIzNzg2NTVjZjY5MzM2MWIyZGY2Mjk0MDM2MGU2MmQ0NTBlMWZhMzIyZDFjZGE4NWM2NWFjMmEyOWEyNzVkOGYifQ" + } + ] + }, + { + "id": "claim_fa740ea1a8274e9b8bb7ac1e28032581", + "statement": "GDPR developer contracts merge custom-consent, custom-subject-consent, custom-purpose, custom-purpose-type, custom-data-type, and custom-policy datasets with corresponding receiver inputs into platform datasets exposed through publishers; purpose-type explicitly chooses the newest version for matching purpose-type-id.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L336-L339", + "version": "repo-lines-v1:sha256:f262c3c60044d3095e0c8efd07578b39f5e40fa6aee1c6fa558ca070ab946a5d:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODM5ZTI1MTY2MzNjNDQ3YWQzMjk5ZWJlZjYyOGI1MTVhNmE5ZjQxZDAwMjlhMTcwMTkyN2I3OTJjZTkwNTAwNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRiYTJiYzliZDA0NmIwYzQ3MDM5ZTVjYzY3MWRmZWIyMGZkMTlhODliNGJjOGZhNTJlMmI1ODE5N2NlMjAwZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWNkOTRhNzYyZDA2NmFlMjIwMTlkNzAzY2FkYWMzNWM0MTFjYTVlYzliNjZhN2EzYmQxYTI0NGVmOTNiYjQzMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmM0NmMwYTg0NWU5MWNkMjU4NDEzMjVmN2FmYzQ5NGEzNzJmMTYxYjVmZWViZTAyMDEyMmIyMDJmMDJkMTM0NyJ9" + }, + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L437-L443", + "version": "repo-lines-v1:sha256:ded365ce34c014b9bc0ed9339e172c525b67a6e18ae7b09167a55098d70501b8:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTRkOGY1NDVmYWQ2YzFlYjIwMjBmYWIwZDQ0YzE4YTFjNjU3MDk5NWZiMjRhNzE3ZDkwNGYyMmU3NThjNDZiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRiYTJiYzliZDA0NmIwYzQ3MDM5ZTVjYzY3MWRmZWIyMGZkMTlhODliNGJjOGZhNTJlMmI1ODE5N2NlMjAwZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGQ1NDMxNDQ5MzkzYTAxZjY0YjE5NTkzMDhmN2VmZTliNGI1MTQwMzgzNGZlNWJiM2U0ODZmNDdhZWQ4NWJkZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTJmMWZlMmJlNjRiYzZkMWNiODNiZjI2ZTc0MzIyNjk4YjE5ZGUzZDc0YTM0NzY1NGNiMWI3ZTVjNTQ0MGJiYiJ9" + }, + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L599-L605", + "version": "repo-lines-v1:sha256:fb709a0bae81d2ba9bdaaeb77c3a9542b27a5c35674ea3237db13f59f00c3712:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTRkOGY1NDVmYWQ2YzFlYjIwMjBmYWIwZDQ0YzE4YTFjNjU3MDk5NWZiMjRhNzE3ZDkwNGYyMmU3NThjNDZiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRiYTJiYzliZDA0NmIwYzQ3MDM5ZTVjYzY3MWRmZWIyMGZkMTlhODliNGJjOGZhNTJlMmI1ODE5N2NlMjAwZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGQ1NDMxNDQ5MzkzYTAxZjY0YjE5NTkzMDhmN2VmZTliNGI1MTQwMzgzNGZlNWJiM2U0ODZmNDdhZWQ4NWJkZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmM3NjhmYjk5MmFjMTgxZjE2ODRmOTdiYjA3NTMxZWNjMjAzZDBlZTYwNmY3MjMzNmY5NDE5MDNhYzEzMmFkMSJ9" + }, + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L700-L708", + "version": "repo-lines-v1:sha256:073651f6b884364d870ade9ad3158170523742aa98f60b7cb479ebfe10b2fa9d:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTRkOGY1NDVmYWQ2YzFlYjIwMjBmYWIwZDQ0YzE4YTFjNjU3MDk5NWZiMjRhNzE3ZDkwNGYyMmU3NThjNDZiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWI2NDMyY2Y1MGNmYmE2ZjNjNjVlODNmZDcwOTc3M2MxMGI1ZWY0Yjg1Nzg5ZGRmMDk0ODc5NTczZTE4NzA1OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGQ1NDMxNDQ5MzkzYTAxZjY0YjE5NTkzMDhmN2VmZTliNGI1MTQwMzgzNGZlNWJiM2U0ODZmNDdhZWQ4NWJkZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTE0YmNkMWE2NWE1ODdlOTZjMDQ0ZGRmZTg0ZjU3NTlmNGZmOTNkOTJkOGRkYjY4YjEwZTE3MWNmYzBjODVhYSJ9" + }, + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L826-L832", + "version": "repo-lines-v1:sha256:0ca627f38ff5f503a19070ac77e06d94cd8d44c7a39e299838ac5125c1013ef9:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTRkOGY1NDVmYWQ2YzFlYjIwMjBmYWIwZDQ0YzE4YTFjNjU3MDk5NWZiMjRhNzE3ZDkwNGYyMmU3NThjNDZiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRiYTJiYzliZDA0NmIwYzQ3MDM5ZTVjYzY3MWRmZWIyMGZkMTlhODliNGJjOGZhNTJlMmI1ODE5N2NlMjAwZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGQ1NDMxNDQ5MzkzYTAxZjY0YjE5NTkzMDhmN2VmZTliNGI1MTQwMzgzNGZlNWJiM2U0ODZmNDdhZWQ4NWJkZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzc0M2Y2MjI5NDkyZTgxZWU1Y2JhYTVkNWIyNGEwNWIyYTU3MGRiODM3NWUzYzcwYzVhYThkNDhkMmU0ZTIwZiJ9" + }, + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L952-L958", + "version": "repo-lines-v1:sha256:bdc9007695f5e70590fe791fb6fc843b56c1cff57c94f233bc614151596109e0:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTRkOGY1NDVmYWQ2YzFlYjIwMjBmYWIwZDQ0YzE4YTFjNjU3MDk5NWZiMjRhNzE3ZDkwNGYyMmU3NThjNDZiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRiYTJiYzliZDA0NmIwYzQ3MDM5ZTVjYzY3MWRmZWIyMGZkMTlhODliNGJjOGZhNTJlMmI1ODE5N2NlMjAwZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGQ1NDMxNDQ5MzkzYTAxZjY0YjE5NTkzMDhmN2VmZTliNGI1MTQwMzgzNGZlNWJiM2U0ODZmNDdhZWQ4NWJkZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2JmMjM0M2Q4MmM5YjVlNDc5MDA3ZTdlYjYwMTUyMDUxMGU0YTQ4ZTEwZTlmYTk3NzQ0YWM2ODUwM2I0YWI4MSJ9" + } + ] + }, + { + "id": "claim_82ebb520216649c2b097d5354a11d52c", + "statement": "gdpr-subject-consent records subject-specific affirmative/negative consent choices and selection time; its prototype names gdpr-subject-consent:valid-from while its property table names gdpr-consent:valid-from.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L341-L399", + "version": "repo-lines-v1:sha256:b4005f70553e663f64ffd4e2c98b9fd678ab9c5b8069d11be00a55f99ce66c2f:eyJzZWxlY3RlZExpbmVDb3VudCI6NTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVkOTA0OGE0YjdjNzQxNTU1NmQ1M2Q3YjY4MzI1MTUzMjkzNDllZDJmN2E0ZWE3YWYxMTQ3NDQ5MWFlYzFkNzciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxZjUzNTEwOTlkMTYxY2U2ZWIwNzNjOTA4MGExNzE0NDNiMTNiZTc4YTAzMzNkODZjMDQwNzMyOWQwYmM0NmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZjZDI3MzNmN2NhMDI5YjQ1ODAyZmE2NjE5OTY2ZWVhMjU0YzdkNjU0MjI4NzNiZmRlNDk5NmJjNGJjNjQ3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkyYWY1YWNhZjdlNTIzMGQ1ZDg4NmYxZWJjZTc3YzFjMDk0YWYyYThkMDljZmQwZjkwMGIxNjZhNmM2MDA2OWMifQ" + } + ] + }, + { + "id": "claim_4ee9af1537d04610820ea1f82cd05cc2", + "statement": "The purpose-type input API paragraph names gdpr-purpose-in while the accompanying URL names gdpr-purpose-type-in.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L676-L686", + "version": "repo-lines-v1:sha256:d9c004c67e229b06f570f9c06136e8bec1b0ff072205b05885c95b23c7f86648:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzMjYyMGU1NmIxNjhjYmNhZTYwZGZjODY0NzNiOTQ2YTM5MTVlZGUxZWJhNzdhNzAyYWViODU5ZTZiNWU1YWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ0MzViMmIzZDhjMmEzMjUzNTZkMTg3MmNkZmM4MzFhOTg4OWFjOTVmNTY3ZGEzYzRjZTY3MmE0MGVjNTdlNzciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEwMTJkMWFkOTg3Yjg0MjZlNjA3Mjg3MjQ1ODk1MmU3MzJiYzA4YzYyNWE1ZWFjZWYzNzAwNWNhYzZhZjJhNjEifQ" + } + ] + }, + { + "id": "claim_46aa3590c7c84fe0b209125e95e66e05", + "statement": "The GDPR data-type prototype uses language-prefixed description keys such as gdpr-data-type:en-description, but the property table uses suffix keys such as gdpr-data-type:description-en.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L724-L779", + "version": "repo-lines-v1:sha256:006ad79cdc3da4ab331440f31c3e7f6163777f72be71772b5045166bec77b534:eyJzZWxlY3RlZExpbmVDb3VudCI6NTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA4YzFkYWZiMzE3MzRkMGNlODM3MDcwN2IyZTExZjBjZGIyY2NiMGYxYjgxM2Y3OWI5NzdlMWE4YWFmNGUxOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwZGZiZTQ5M2Y4YzA2NmIzY2E5ODdiYTAyMmNjOTJhM2MzYWQ0ZTI2ODhkNmZmYzlkZTQxYTVhMjY3YTdiZmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY4NTU2ZDEzMjcxZmYwNjU3MDNmOWZmYmVhOGEzNWFmMTJhMjczOGI2NmVjMDVjMTM3ZGVlZDFiZjhmNzJiNTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_490b060aec9f45a29e3822a22cd2f6e0", + "statement": "Dataset GDPR access requests require access-request-id, user-id, and PGP public-key for encrypting collected request data before storage/processing; contactinfo-type chooses email or phone_number, delete-request is a string false/true default false, extra properties pass to output, and platform-assigned outgoing UTC timestamp overwrites input.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L1173-L1270", + "version": "repo-lines-v1:sha256:1d9db66fb97eb050c4367fa3f0dbb06a73798b06fdca95f71bf1326fec8c4712:eyJzZWxlY3RlZExpbmVDb3VudCI6OTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4NGI2MmZmNWE3NzM0NjdlYmQ4OGFkZGM0YTQyYjg2YmMzOTQ1NTE0Njk4MGU1ZWMyMjRiNDc4OTRhODY5ZjciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjMTM1YzhkNDczZDkyZDFmOWZmZTA2NWVhNWUwMzI4OTdmMzExNzE5ODNkN2Y4YWY4NTM3NzJlMmQyNmQ5MzAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA0MTIxMzY0NmJlOGUwMjExNDgwYzdjNDkzNjY5ZTYzN2NjNGFhOWFiZmVhMjYwOGFmN2I4ZDBkNDM2NjcwNDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_74051f51cb5c4344bac12496e0e19c4d", + "statement": "The experimental gdpr-access-request-subject-data-in receiver may not be available in all installations, requires an existing request ID/data-type ID, reporter and entities with unique IDs/data objects, encrypts with the request's subject public key, and has no output API because decryption is on the originating device.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L1298-L1411", + "version": "repo-lines-v1:sha256:051acb7a0f488bf8ed367faa5e105fb5cf55f6faaf5174aaaecd450ae97b42bc:eyJzZWxlY3RlZExpbmVDb3VudCI6MTE0LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiI2OTdhNTE2ZTYwYjZhYzY0Nzg1ZGJjNGRiZmI4ZGNlZjMyNTUwYTU5OGE2Mjk1N2IyMGEzNDVlMDk4MWNmOGQ3IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJiMGQ5NmE2OTgxZGY5MjEzYTFlOWI5OGI1YjcwZjgxODMyZjFiNjliYzMyNmVmNGRlMzcxNzMzNDcwZjBjMzM0IiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI4ZDU0MzE0NDkzOTNhMDFmNjRiMTk1OTMwOGY3ZWZlOWI0YjUxNDAzODM0ZmU1YmIzZTQ4NmY0N2FlZDg1YmRkIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI5MTVkYzc2OGNlODcyNTdlMDI0YjlkZGJiYTk2ODgzMjFhMmE1ZWY0YmJhYTAzMTc4MjBjNWQyOWRiZWViNzQzIn0" + } + ] + }, + { + "id": "claim_bb8c22837fb24dcb82a632d816fc293c", + "statement": "Unstructured GDPR document-source microservices provide metadata and binary-download APIs normalized by importing pipes; custom-documents merges sources for extraction, and the index stores extracted text/properties except metadata without storing original files in that indexing process.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L1434-L1457", + "version": "repo-lines-v1:sha256:f69c249f915e55141e8791f282bf115b709b223ba5a0b9dd78730f3f0553a4d7:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNjN2E0MGQ2YjMxMGM2NzBjNjdmMjk2ODUwNGE0ZWRiMTQyODQwZjMyNWEzZDk4OGZlYWYyMGIyOGNhYmYzZjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMwMGRjNGI2YTg1MDg1ZTFhOTEyZTg2YTk0ZjI4MzVjZjdlMDkzYTU0NTY3ZjcxNDBiOGIwMWM0YjdkZjNjNmMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVhZDA0ZjljMDUwMDA5Y2VhZWVhNzgxNjgyZDBiMDE1NTQzNmYxM2Y1MmE3NGJkNzQ3YThlYjk5OTQ5MTc0YTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI3ZTNjYzhmYjIxNWQzNDU5ODA0ZWQ0MTM5ZjhlMjIxZjRjZWFjN2I4NDNmODk1OGI5ZmI4YjQwZDc1ZTRjYTMifQ" + }, + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L1550-L1568", + "version": "repo-lines-v1:sha256:30791be8266c766876c796e6993ec3cab5d2adc5856754b4906a9a401ff7be87:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU0ZDhmNTQ1ZmFkNmMxZWIyMDIwZmFiMGQ0NGMxOGExYzY1NzA5OTVmYjI0YTcxN2Q5MDRmMjJlNzU4YzQ2YmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA1MGFmOGZiMjdmMzc2MmE3NmIzZWYzNGQ5Yzk5ZjIzOTIxM2YxMTE4OGRlOGEyNmUyMzk4OGIxYjNlZjhkNjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM1MDhiMzg4NDkxN2E2MjA5YWEwZjNjYWQyNzhkN2E2NjIyNjRmOTRkMTBlZTM4NDI4NzcwNjM4YjI2NzM5NTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVkOWFhNzZkZTE0NWI1ODliZWE3MzhlN2IzMzE5YWFiOWM1Nzg1MjNhMDMzNjg2MTRlZTc0MzY4MTlmYTA3ZTgifQ" + } + ] + }, + { + "id": "claim_ae6358543b5b437eb00abba00bb7da05", + "statement": "Unstructured GDPR searches run at new access-request creation using subject properties, are point-in-time, and are not automatically rerun for newly indexed documents; the search paragraph spells custom-document singular despite the internal dataset being named custom-documents.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L1550-L1555", + "version": "repo-lines-v1:sha256:ea1fcd34b1b55bdf1ef2e1267a92420798f94d5b53a17f62c47f265897ecd7f0:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTRkOGY1NDVmYWQ2YzFlYjIwMjBmYWIwZDQ0YzE4YTFjNjU3MDk5NWZiMjRhNzE3ZDkwNGYyMmU3NThjNDZiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmQxZTMzNTQzNjMwMzVmNDM0NzBjN2FkZDVmNWEwYTgzYzUwYTQyMjg3MmNlYzhjYTZiZWQxOTg3YmNjNzQxNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzUwOGIzODg0OTE3YTYyMDlhYTBmM2NhZDI3OGQ3YTY2MjI2NGY5NGQxMGVlMzg0Mjg3NzA2MzhiMjY3Mzk1OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMmQxODQ5N2VkZWU1YmY5ZDhkMTdmZTBhMzY3YWFiNDllZjllMDcyNTYxNTVjZGVjNWM2NjAwMDM2OWZiODQ1MyJ9" + }, + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L1570-L1580", + "version": "repo-lines-v1:sha256:def00f706cce64f5831399e7e6162728d9a1d3f7d61bc380e3dfabeac9a477bf:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwODRhMzM3M2ZmZTVkZTIyYThlMzU1ODkyOTg4NzU1ZTg1ODAzZWQyYmJlNjRjMjgxMDNmNjUxMTJlMjY1NTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU0OGExNWFlOTdjYjIwMzY0MjIxMmY5MGJiZjlmNTU5YjlmOGNkN2E2NjkyMjhjN2ZiYzRiZWJiZGExY2MzYzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQwNzkwOTMyYjQzNzRlODI2OWI2MmIzMjRlNGVjNTA0ZTE0MzcxMjIwYjFiM2VjOTcxNmY1YTJkMTYwZDE3NmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc2YzhiZWJmNWQ4OWY1ZTI2YTg1MjRmN2Q4OTdkZjQxNzg2OTZhNzY3NTA1YTE2NWZlZTRjZWRmZTY4NzllMjUifQ" + } + ] + }, + { + "id": "claim_f60351cb4bb345b88c7cf85d0805b7b9", + "statement": "Every unstructured GDPR search match requires manual vetting before DAP disclosure due to false positives or other subjects' data; reviewers can remove rows, withhold files by removing extract-content links, and replace text/metadata before uploading the reviewed spreadsheet.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L1425-L1432", + "version": "repo-lines-v1:sha256:5c9f6994c55697aeb40e2f5867c359135469375164863c774993e6306697bda2:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDY2N2FjMDgwNmY4Njk0NjYxZTJhODQwYjRiODYzOTZiMGQ3OTkzNDg1ZTg5M2JmZTgzNTZhNzE2OTE4Y2NiMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGVmODI1MWY4ZGVmYWQ0YTdmYTRiMGMxNWYxNGRlNDIzYjFiNDA5NmI4NGJmOWNjNDM2MjgzNjE5MzhlZDczMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGZlYWYzZTI3ZWQ0MTY0OTEwM2NkMzdlYTgyNWJmYWJhZjkzODRlYTFlMWZjNGQxMTAxYjEyOGJkMjk4YjI1YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzUzMTAwODI0YjFkMTI0Y2Q5YmVkMDkzMWFhM2VlNjM5NzJhOWEzNWVhNTYwNjkxMjg5YjRhYWU5ZjIzOWIyNyJ9" + }, + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L1582-L1596", + "version": "repo-lines-v1:sha256:c5428affb3bd9f176d68327ab74a9d3141c1fcf7b75f248f3eb2de978f37e11d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNlODQwNDJmNjg1ODBhZmYwZTNhMDY2OWNlZjY2ODQxZWRhMmQ4MzJjM2U2ZTI0ZjliYWUwZDViMmRhNjlhMDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE1ZTczODY5ODI2YjVmMDM1OTZmNjAyNzhjZTYwYjU3ODE4Yjg5Njg5MzE3MzA2Nzc1NjExMTFhZTg3MjQ1YmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImMxNGI1Nzk4ZDcwMWU2MmM3OGRmNDk2ODVkOTM1MjU0MjQwOTgyM2UzNzQ0NTg0YzYwZWRjMTk0NmVlOTgxZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM4NjUxZWVjNzczODEzYTNlZGJiNjgxNmNmYjljMzFhOWE3ZTRmNTcwZmI2NmUwMzQxOGQ3YWU3ZmEwM2ZjMzYifQ" + } + ] + }, + { + "id": "claim_dd22e79affa64626a3d4d48cbc9e8874", + "statement": "After unstructured GDPR vetting, document metadata is encrypted with the subject public key and transmitted to DAP; a remaining extract-content link also causes the file to be fetched, encrypted, and transmitted for client-side decryption/download.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L1598-L1606", + "version": "repo-lines-v1:sha256:7cab8f751d81350fed5d37254a2ef25987a510d94285bd40fa4d1a90e962984d:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzQ5MzBmMGU0Y2NmOGNlZmQ5YjllOWU0ZTExMzY3MzdkZTE5YjU5NmE1OWViN2RjZjgxY2Q5MDNiNjcyMGUzNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjRhOWJjMjMxZmMwZTRlODlmZjhkNjY1NDlkZWViNTZiMjU2Y2VkZjI4MWU4Njg0NDVhNmZmNjljZDYxODAzMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDMzNjFlZjNhZTIyMjVkYzkzYThlZWI1NjExZDI5NzM2MTBlMDBkMGRhNjA1MzNiYmY5MGY3YzYyNzQzYTQwMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_f6ba6ae150314d2d943624c437ba07ce", + "statement": "The unstructured document extract-content URL is documented as not challenging for authentication and restricted to a local network reachable only by GDPR Platform, with the microservice proxying backend credentials; original-url must challenge for needed authentication and be reachable by human reviewers.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L1503-L1508", + "version": "repo-lines-v1:sha256:aba85eee2991af7bdcf2707d965a244ace0bf6cde94b0b64b2972143eb508385:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDViOWI5ZTU2ZGJlNjNlYTE5ZTBjZjkyMTY4ZjQxNGY0NjEyZGMwMmU0MmJlNWQxNjgyYjY1MzFlYWU0NGRjMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2M1ODIyMTZmNWQ2MGU3MjNmMDU3NzE2MTVlYjZmNTgyZTJiNzI0YTVkMzZkMzM0MDkwZDY5MzFmZTNhNzJmMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyJ9" + }, + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L1537-L1542", + "version": "repo-lines-v1:sha256:23a2d6c8f6f1d023f7755244d308e312e6f487569e8cf4d9d4fd82be8d83a659:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTVkN2ZhMDczNzBmM2E0ZGMyOTlkMzdmZTZhNDY2YzNhM2E2ZjgzMjAyMzA2MDI5YzM0NGZiMWNhNzQxZWYzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2VkNDlmOTI1OGM5ZTIxYTE1NWE1MWUyM2ZjODBjNDIwYzY3ZGJiNjg0Mzc3MDQzN2RhYmE1NGFlM2VmMTY2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyJ9" + } + ] + }, + { + "id": "claim_43d84dc4b74842d4a3b2337e2827910f", + "statement": "GDPR custom-translations changes require preserving template and environment macros and starting the saved pipe; affected notification/object translations apply to new emissions rather than already emitted objects.", + "evidence": [ + { + "resource": "repo://hub/gdpr-platform-configuration.rst#L165-L177", + "version": "repo-lines-v1:sha256:51b899ab05b7ffa4221128c356a5e5392bd964c64862820c1660d6db886be482:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxZDFhMjkxN2Q3ODgzNGI0MzcwMWIwMWZhZDRlOGVjMGRhOGM0MTJmMjBlNjQ2YmExNGI5MGE1OWU3Nzg3MTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNmNDRjMWJmZTUxMzk3NmE1MTczYWFmODAyNjJjYTdiNWRkNTM2YjEyMWIyMDM3MTRhZDYxN2E2ZDA5ODEzYWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUxNWE1ZmJiYWYyNzU2YjJiNmJkMjdmYjQyNTQxZjAzMTM5MDc0Yjk4MTdjODI4MzBhNTM4OWZlNDg0NmZiNjIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI5ZWM2ZDgyMGIwMDViYjI1YTMwNjZlZDUzNzQ1MTcwMTdmYjJkNzRhNTNhNTBhZTc4YmYyZWE4MGM4NDhhNTEifQ" + }, + { + "resource": "repo://hub/gdpr-platform-developer-docs.rst#L1164-L1170", + "version": "repo-lines-v1:sha256:b9db1678d64684d09fb6217a8a1688183eccb70de3cb6b04f0c1d58d4b07ab06:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWFmOTMzMjk1OTJiMzhkZWZkYWQ5NTUzZmMzMmQ0MWRkMjc5ODRlMDQ0ZTVlMWNiMmQ1MTc3OTJhYjk4M2QzZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmM0YTVjMmZjZmQxNjhkNjM5NTY0MGZlNDlkOWYxYmY2ODdkOTFjNzFkODY0Y2EyOGU0NTE3Y2Y3YmI3ODNjZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDRiOWEwYjE2Yjk5MTBiYWE1ZDBhNGRjYWZmOGE2MGM0Mjk2MzNiZjJhZTNjYmFjYzgyMDI5MDc1ODBkMTBjYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjAxZDAxNDg5MzQ2YjNiNTIxMWFiZmQyZWZmMDRhZDZlYzJhM2IxMGZlMmU1MWJiOTFhZWVkYzEzNjVhMjQ2OSJ9" + } + ] + }, + { + "id": "claim_32a479dd2e5f410aa22968eff783e241", + "statement": "The inspected repository pull-request workflow builds documentation using make html, and README documents the same preview command; this does not establish runtime legacy-service integration test results.", + "evidence": [ + { + "resource": "repo://.github/workflows/pull_request.yml#L1-L24", + "version": "repo-lines-v1:sha256:ab2d94a14754095e30394af009c769acad0193ea609c92644e1643ab8d158696:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVkZTM0NDY5ZTI4OTkzNDNiZTBhYzNkOWEyMWM3ODI0MTY3OGVjMzU1Y2M2NWUxNWE1YjJiNTE3ZGYwMjRiYzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEwMjgwNmI3MTI1NjI2NDA4NTU0YWFlMzE2MTkwYjYwMDk2YmE4NWJkNmMwYzJkN2EyMDRmYzlmNmYzZTYxNDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://README.md#L1-L25", + "version": "repo-lines-v1:sha256:446ef5080a2a970dba92129cb8359028ffdec908524220257a860419123707a1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhNmRmM2U0MmQ0MGU2OTM5MTQ4ZGZiZDNjY2E2Y2M2YjA5Yjk2N2Q4NGJkZDk5M2EzNzRkZDUxYzU2ZWI3MWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI4MjIwMTYzZWRlMjA1MDJiMjhhNjYyNzY5NTA2YTllN2I3YzVkOTRhN2ExZDhlYTFjNmE1NjFhOGQyMzQ0OTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk2MjhlZWFjMzJkOTQ1N2QxMWFkOGVkYjk3NDRiZDdiMzIwNGRjNWVhZDA0NWY3Y2NjNTY3NzljMDk1ZjFkNzMifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/testing/configuration-change-lifecycle.json b/openwiki/.claims/testing/configuration-change-lifecycle.json new file mode 100644 index 00000000000..480cb029233 --- /dev/null +++ b/openwiki/.claims/testing/configuration-change-lifecycle.json @@ -0,0 +1,610 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:c565996d0cce710a11aa5ba77eb70dd222b6895114e9a22cd26dc544078adbb7", + "claims": [ + { + "id": "claim_ac77b96eb7504407b75e06c4e3652a47", + "statement": "The documented Sesam project lifecycle uses API features with external development tools for version control, local/CI testing, and optional automatic deployment rather than a built-in project configuration-management suite.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/configuration-management.rst#L5-L15", + "version": "repo-lines-v1:sha256:547f0732f5451d851e40b7e5d1828a6b1103469062f9869c0c91067c794238ae:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxZDFiYjBiMWMzN2M2MTYxOGEwY2QzOGMxODRjMzYzNWFhNjAzYTBiMDcxOGU3NDY0N2FkMWUwYzBiYmRlYTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdjNzlhMjVkNDY1NzgyOTBiNjc4NDVjNmEwMTFmY2UyM2IzZDc5ZTJjYTFjYTgyNTE2MzQzMGY1M2U1NDAxMjAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ4NWEyYTBiZjZjN2FkNzVjYzAzMmY2M2QxMjA1NWQ5NWE2ZTA4NjJmODQxNTAyNGIyMGZlMjU4MzdiOTgzN2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/setup-environment.rst#L39-L56", + "version": "repo-lines-v1:sha256:8b4c4a7be7f377120308d847badff67e697ad2991d2e9aed09ed59b127fa2172:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVjOWRmOWVlMTFkYjhhYmViMjUxNjBkYjJhY2NiNGI0NjU1YzhlZWZlZWU4OTk1MzRkZjZjNGFlNWEzNjNhODAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRjZmZlNDJmYjIzYzE1N2VlMDg4NDg2ZTcyNDliZWU0ZmM4MmRiMDBiMzVmNTM0ZGM5ZWI3OTA4NTQ3MTc4NGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU1MDdjMDE3ZTYzNjFjMTgxNDc4NTRhYTQ2OWI5ODZkNDk5MzE4ZDNlMjcwZmY5ODI0YzYwZmQ1MTZkOTg1ZjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjllNmQ1YWU3MTM2MTIyNWM1ZDA4OWRjMGNlZjA5YzZlNjc3MWJmZDM2MmNkNjZmYmE2MWUzZjAyOWE2MjE1NGEifQ" + } + ] + }, + { + "id": "claim_e28a86aa074a4992bfba1642af8b55c8", + "statement": "The Sesam client is documented to download and upload JSON configuration, simulate pipe runs from start to finish, and compare actual with expected outputs; installation and usage are handed off to the external sesam-community/sesam-py README.", + "evidence": [ + { + "resource": "repo://hub/sesam-client.rst#L10-L24", + "version": "repo-lines-v1:sha256:084dc77d3b6c2173dda73a5c2f2505ec09036c931a7ceb2bf1d2513a611f80e5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiNzc5YjQ2Zjg2YWEzZjQ4YTNlOTQ1Zjc3YjBjMDJkYTA1ZjJhMjQzNDM0NGYxMmM3YzIwMjViMWZjMzE2ZDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5MTllZjVmYWViNTA1N2ViYTQyZGM1ZWIxNjI2YWRjNDkxZTVlNzUyYjJiNDk5MmYzZWNhOTNmOTI4MDgxMGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdiZWY2NmU2N2FlNWFkNWY5MWRlMDc4MDQ5ZGY3ZGY4ZDhkMWIyMThlZjk1MzEyYjM4NTgzZDQ0YWY3NzdmZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJiNjQzMzIzOGY2M2QwNWExOTNhN2Y2YjlmN2M3NDYwMzkxMThhYjk3OGQ5Mzk5YmYzOTZiZjYwYTg5NzZlMDQifQ" + }, + { + "resource": "repo://hub/sesam-client.rst#L38-L53", + "version": "repo-lines-v1:sha256:a923202e8a9dbea5422ea134e811e5cd37f8a7d9cf9c4f8663ccbf39790446eb:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1MGU0NWQwOTExZTg0ODBmNGE5ZDM4YmE4ZGI0MzQyNDAzNWM4ZGIwZTZkNTE2Nzc5NGRkODg1YmMwOGUxNWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdjZGI5OGFhM2MwNWZhYzE4MWQxNmI2YTgzZTEyNmM0NjBkNmQxYzBmMzliMzEyNmYwNzBhMTQ2NmRlZDU3NzgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImEzZDdmMjE1ZTYxMGNkZjkzN2M2MDNiNWIzNjQxMDk1YzhmYmZkNzFkZjAzMTdlMjVkMjNjOTA5ZWE0ZTVjNjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_b10ec55a4e874ef68413e649b0d0317e", + "statement": "The client is intended for personal testing subscriptions and dedicated CI/CD testing subscriptions, and its documentation explicitly warns not to run it on production subscriptions.", + "evidence": [ + { + "resource": "repo://hub/sesam-client.rst#L21-L36", + "version": "repo-lines-v1:sha256:a50b2ae619290e67be7b102eaccddc74ba64dba970c76db18a24b5691f49cf3c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgyNjk1ZjU2YmU0YjlhNzczYjhjMjVhNDgyOGYxMjdiOWZjYTY4M2EwYjMzNWYzN2VlZTI0YzkwN2Y2N2MyZTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxMGQ0ZTdiNmYzMmYxMzMzMGM4ZTE0YmU4ZGI0MTcxMjMyZjI2ZGQ1MWZjYTU4MzNjOWFlZjhiNjBlZTdiMmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjljZjRlNGRiODMxY2M2ZmQ5MThmNmQzYjZkNmYwNjg2MThlMzQzYWE1MzhjOTRjZmU5MzIzMTdkNWE0Y2IyNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE3MDExNWIxZGU0OTU2YjM3NTA3NjE2NzkxZWRjMjA3OTBiY2M4ODc0M2Y4NWZmYzIxYWI5ZmRlOWJiYzk5ZmUifQ" + } + ] + }, + { + "id": "claim_8805a5c755cf41969e760e49f40b361e", + "statement": "Only one client instance may run commands on a subscription at a time, and manual changes while the client runs are warned against because they can produce undesired results.", + "evidence": [ + { + "resource": "repo://hub/sesam-client.rst#L26-L36", + "version": "repo-lines-v1:sha256:82c2180101a8e94ea8b9774205eb8c69fdd9bd5f1a740e177cec8a4ef7a3f367:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzNzkwNjA2NTg3YjMzYzdiY2VkOWI3N2UxYmU4OTcwMDE2NzcxMjhjMTI2YjgwYzllNmMyYTQ4NDc1MjFiZjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxMGQ0ZTdiNmYzMmYxMzMzMGM4ZTE0YmU4ZGI0MTcxMjMyZjI2ZGQ1MWZjYTU4MzNjOWFlZjhiNjBlZTdiMmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ0YjA5MGY5OTYxMWJmMzY0NDUxMGEyNjhhNWZkZmVmZGI4YjE5MmMyZDA4MmU5ZDE0YjdiYTY5NTMyMzI2ZDUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE3MDExNWIxZGU0OTU2YjM3NTA3NjE2NzkxZWRjMjA3OTBiY2M4ODc0M2Y4NWZmYzIxYWI5ZmRlOWJiYzk5ZmUifQ" + } + ] + }, + { + "id": "claim_4659f517dae9416b9bb502099d21294a", + "statement": "The environment guide separates per-developer development subscriptions, a CI-test subscription, a production-sized test subscription, and production, and recommends test data for all incoming data types so developers can test independently before propagation.", + "evidence": [ + { + "resource": "repo://hub/setup-environment.rst#L14-L25", + "version": "repo-lines-v1:sha256:690003c1a7dc82bf4e2685454b6d042e03e66fc7854720ed9502166acfda19e8:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAzYjZlNDAxNWI0NjliMGJiMTFkNmJjNDA5YmIzOTU5ZWI0ZGY2MWZkMWQyYjAzZGMxNmVhOTQwY2E0MWU2NTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEwNTg2NDJjOTQwNTRkODRmMTc4YTk4OGViZDQyY2VhYzhiN2E0MTE4OTYwYzYzZmU1Nzk4ZDliZDNiZmJhM2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkxMzcyMThkNDk0NGE3NDc3OTg0ZGQxYWRlNTcxZWE4YmNkMmE0MThmZjk4ODVkY2U4YWJmNWU5OGVhMzBhNDIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI4MGJlYWZjN2I2Yzk3MmE3YjkzZThhMDk0ZjFhNjQ4OWU2NzFhOGNlYzdiMDE0M2Y2OWQwYmZjOWM2YTMzYWYifQ" + }, + { + "resource": "repo://hub/setup-environment.rst#L42-L56", + "version": "repo-lines-v1:sha256:608baf31fa484a6c9a6a154fd53eea6792fd5aa3a05189a9e6348109c6e80975:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA3YWM0N2JhODJjNWUwMjgyZDMzOWMzYzM1ZWEwNzllNjQ1MjdmNjQxNGM1MmI3OWExNWYyYTQxNmIwYmI2MmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRjZmZlNDJmYjIzYzE1N2VlMDg4NDg2ZTcyNDliZWU0ZmM4MmRiMDBiMzVmNTM0ZGM5ZWI3OTA4NTQ3MTc4NGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQxMzVlNGNmMjI0NmI3ODBjN2NmNWI0ZTMwY2VlOGQzNDg0MmE5YzAzZTc5ZWM5ODcyMGVkMzZiMGVhMTE4ZWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjllNmQ1YWU3MTM2MTIyNWM1ZDA4OWRjMGNlZjA5YzZlNjc3MWJmZDM2MmNkNjZmYmE2MWUzZjAyOWE2MjE1NGEifQ" + } + ] + }, + { + "id": "claim_61e15574c9524f02b09f02b0011d708d", + "statement": "Documented local testing requires output pipes to be disabled or unable to send to their systems; CI must be unable to write to another system and should not contain the variables or secrets needed for usual output connections.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L20-L24", + "version": "repo-lines-v1:sha256:fcd7c8f6d710e3415c41b1d007ee6de9d623798834ee28cf5cfdfd8800131ab6:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmRkMGJmMGYzMTI0NjRhYzY4M2M5MTQxMDhjYjhhNjcyMzcyMDBhYzc0Y2Y5NDE5NDFjYTRjNGJjZDM5YzcxZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTNmM2FhNTdlNGYzYzc4ZGZkNWRmNGE3NDk4MmJiNDJlM2U2YTc0OWVhOWExODE2ZTUzOTAyODFlODI4Y2FkNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjg0N2I1NmQ3M2UyNGE1M2I2ODQ0NjZkM2IyMDk0MGUwZGY4Y2MwNzdmNTZkNWM4NWIzMGViZjVjZjg5MTM2NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWJlZjA1NGIyMDEyMTA0ZmM0MTVlOGUyY2I1NzJiZGQzNmFjMGJhZDgwYTgyOWZiMjliNjNkYTZhNDQ4NmZiYiJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L9", + "version": "repo-lines-v1:sha256:bd64e696390e5fc902c522bbd9dc446b7baadc0ff24dfc204a731c810c699c20:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOThhYmRjZjJiYzkwODIwNDYxNTkyMjY2OGU2NWJkNmQ4YjdmMWM5YTRmNzE0NTcwMjY1YjhlNjdiODdhMmMyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjg4NmNlYWUxMWVlZWE4Y2YwYWFjNjkyMzA4OTU3NGUxMDA4ODlmMTU1YTBiMTQ1MTlmYTQ5MzI1NzVhMTk0MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTkyYTJiODM3ZDY1MDE4ZDA0OWM4MmE0ODBmZTgyNWU1OWZiYzEwNGM3MGUzNTIwM2Y0OTA5NmVmODg5YjFkMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGE0YzI4N2VlMWJiZTAyOWNkMGQxYWE1M2E3YjI1NGIyNjY5Njg3OGU1N2NmZjVlMjM0YzIyZTAyMzZhZGVmMCJ9" + } + ] + }, + { + "id": "claim_7bc220a2bbee4277bb262d2f884f8bc1", + "statement": "Disabling a pump prevents automatic execution but still permits a manual start, so pump disablement alone is not an absolute output-write barrier.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L548-L573", + "version": "repo-lines-v1:sha256:6745b0cf2c2046108d25e13fe54cf674b72d0356ba50811d2df6fc7515a8d19e:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2ODc2YjY2NTkwYjliOTNmYTNjMGU4NjY2YzQxYmJmNzU2YmUwNmVhNzNmNTM4ZTNhODkxYjgxOTE0OTVkMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJlOWMwMjZiOTM1Yzg4ZDRlZTdjNTVkOGUxZGIzYTM1N2JmNDM1YTM0OWM5ZGFlYWQ4ZmU3OGVjMWZjMjcwYWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFmNDc2MDU5NGVlYTI5OGIzNTEzMjcyNTUxNWMwNzM2YWJmMThlMmNiZDQxODVmOTM1YjBkOTZhZDhjZTUwYTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAwNmJjNTA2NGFmNTQzZjcxN2Q2Y2E4M2RkMzQ5NDU3NjBhNGFhMTQ0N2FjZjg1MzE5YmZkMzNmZTIwMmViZDEifQ" + } + ] + }, + { + "id": "claim_10ef0e173a3b4cbf8bc9897dc8072450", + "statement": "Conditional sources and sinks select an alternative using a key typically controlled by an environment variable, resolve the selected component when the parent pipe is created, and require every possible condition value to be present in alternatives.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-conditional.rst#L7-L61", + "version": "repo-lines-v1:sha256:bc04184c373b468a6e6ebaca449a7eedaaeb2c99f2dfc4dd6463ca7458352d54:eyJzZWxlY3RlZExpbmVDb3VudCI6NTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNkMWM5NjZkNjc5ZDk3ZjI1MDg5YTIyOGQ3ZjE2NGYwYjM3YjJmNjViNjExMWU3NmQyYjE4ZDAyNWMxMTRlYjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM3ZTMzYThiNjE5ZWYwMzJmOTA3YzgyYjFjYjE0ZjMwYzljYjgwODZhY2Q2NWFiZmMyNmNlOTVkNjIxZjQ4YjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-conditional.rst#L7-L61", + "version": "repo-lines-v1:sha256:5bcae0be1092978765843fe74a8d84083920a34fca4f5ab1f7111fbd898c0691:eyJzZWxlY3RlZExpbmVDb3VudCI6NTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFiYzhhMWJjNDg4NDI3ZTRjYjg3N2JhOWUxZTY1MDQyY2Y4ZTYwOTIyYzY2NzJlYjE3YjBhYjkxZmRkNWI2MmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZlNTY4ZTdiZTZlOGQ0ZDliNGY3M2E4MTg2NjUzNGQwNjU3NGRkMGQwYzg4ODlmZGZiOTVhMTk5MTJlMjE3OGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_9f95c35c6e4d4dc2b14d4b0f527c9f0a", + "statement": "The documented development isolation pattern uses conditional sources for anonymized embedded inputs and conditional sinks with a development null alternative; a null sink discards written entities and does nothing rather than writing to an external destination.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L310-L331", + "version": "repo-lines-v1:sha256:90371c8b9e34f8c824aa82e2a37b47f2fe80878ed8d2fbbea5b52c2ac0464821:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI2OWVhMjFmYmFjNGQ2ZDQ4MzY5MjUyMGU1NzRjZTRlNjU3YjBlNTdhYzI5OTMxNWZlNWQzMDc4YWQ0MWZlYTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJjZTQ4NjkwM2M2YjM4MzUzMjcxMTA3NDI1ODQ1OGFiMDE1MjIyNjU2ZmNmZTY3OWRkZjcyMjQxMmMwNDE5MjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYyYmJhNmVhMWRlMWM0MDIyNzc5MDljNzM3MDQwYmQzYjEwNGE4OGJiZWU1ODg4MzhmOTgyMmVkNTA5NmNhMDcifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-conditional.rst#L18-L35", + "version": "repo-lines-v1:sha256:708573b1ebd933268ca87a9b2ba8582df539645c436f593ea682fee8d40c215b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY5Y2E4OTFiZmY3YWMxZjdjZWFhZTQwZWYwNTEwNjZiZTllZmU0N2I0ZTQyODFlODZjMzE5YmUyYzU1ZWJjZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY4NTU2ZDEzMjcxZmYwNjU3MDNmOWZmYmVhOGEzNWFmMTJhMjczOGI2NmVjMDVjMTM3ZGVlZDFiZjhmNzJiNTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2OGFmNDBiY2U0YWUzNTRmYmEwNDg2MmU4OWY5MGEzZWZiZTMxNjdiNjA5MjU4YjUyMzc4YmU1NTI1Mjc0Y2MifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-null.rst#L4-L17", + "version": "repo-lines-v1:sha256:dcf3f25dc758152b80abbb987ea3b6cf8144b07873f6c4865e3df022ace95a10:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY5ZGE0YWE0ODQ1Y2M1ZDMxYTkzNjU0YzgxNWFkZTFmN2FkOTkyMjJmY2IzNjQyMDQzZDZmNzhjNzQ1ZmY0NmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA2ZjUzNWRhNDFkNTcxNDUwY2QyMGUyMjkyM2Q2YTQ5Yzc5NjE1OGE0Y2MwNzZlZDBmYmM3ODA1MzBkNDk4NDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRiNjcxNmZkODg4ZGM3MTkwODFkNThjNjdkZTI2ODBlYjRiOGUzMmU0MWZmM2ZkMGZiODI4NmRmZWY5MDcxZDAifQ" + } + ] + }, + { + "id": "claim_91e79565d0a44c51a2e4a8c3d7341652", + "statement": "An embedded source stores input entities inside source configuration and is intended for small, static datasets, not a large number of entities.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-embedded.rst#L4-L26", + "version": "repo-lines-v1:sha256:88d513a7e7eeed39ceb59f31f0b5e9f847a0821ff639edb5af426f6d34b4aca4:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU5NWZmZWVjYmQ2ZjQ3MDNhZmE4YzU3YzNiOGRmMzI3YWFlMDk3MWRiNmMyZDRjZTVhZmE1ZmNmZTVjOThhZmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU4YzZkZjc2NWUzMTEyNjliY2U4MzgyNGYyMTQ3MmIxYWM2ZWJjODllNmJlNjI2NzM3NzQ2MDQ4MDA0MmFhOTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU3ODg0OGRmYWFiMjI4NDM2ZDRhZmRmOWUzMDlhYTE3NGM0ODQ0ZjUwNmU3MTg1MGYwYTUwNTQ3MDA3NDIxNmMifQ" + } + ] + }, + { + "id": "claim_43863be8e7e24105ad5135ae02b0c357", + "statement": "The version-control guide recommends exporting configuration through the client, API, or portal into a VCS working copy, including pipes, systems, expected, and variables directories, and using GitHub Flow with semantic-version release tags.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/version-control-system.rst#L14-L46", + "version": "repo-lines-v1:sha256:b55c26e6cec5ae2e08b925feddbf89c95f894b8292697ad9e54722586d84e909:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE3NTEwYmYwMWY5ZDUwZDY4Yzg1MTU4MmE1YTcxYmMzODg3MzAyOTNlMzgyZDg5ZTA3ZjY2NGQ5MWIyMzBlNDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhOGNiNzcxMjkwNmU2NjM4ZjdjNTE1NTM1ODE3YWQ4ZWI3ZDc3ZTdlNzcyMGY4OWY2M2VmNGNkNDYwMTFlMjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM3YTBjZWMyNTIxYmYwMDFmYWNlOTA4MTQ3OGJjNWJiZjlhYzZlZDdmODNkZWE4ZTIyZjgwZjE0OWJkYWQ5OWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_7792e381e0894743a4e4020ef93d1de4", + "statement": "Sesam retains uploaded pipe/system configuration versions in system:config and exposes previous configurations, but the guide explicitly says this history is not proper project version control and recommends a separate VCS.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/version-control-system.rst#L7-L12", + "version": "repo-lines-v1:sha256:264b31b62d4087fd6344bfd4d94a6fc43e92fee78b5c355d4f944233ceecf8e2:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmQzZWZhY2RjMjBjOTUzMDgwNzU1ZDg5NjNkMWQxYzBlZTk1OGI5ODI1NTQxNGViZTM0MDQ5ZjcxN2M2MDBmZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGNjMDBmYmUxM2FlZDgzMWNlYzMwYWVjOTY1ZDgxOGQ3MjczOWUwZjA0Nzc4ZmEyZDQwZDAwMmRmMGVlODg4NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjM4NWZjZGQyZjM4MWM1NzY2ZjNkOTBiNmE3OTg5N2IxYThlZDA1OWRiMWU4MmUzNTY2N2FlNTMzYWRhYTg0NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzM3MjUyN2FkODg4M2IxYjcxODA5YzNjYzRjOTNjYTY2MDY5NDNlNGU0YjBhMDVhMDZjMjliMmNhYjAyYjM4MiJ9" + } + ] + }, + { + "id": "claim_6e9018ac38024e6a99f58f8a3aa77098", + "statement": "The documented default endpoint-test contract places expected beside pipes and systems and requires a .json expected-result file plus a .test.json test-configuration file for each endpoint pipe.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L241-L250", + "version": "repo-lines-v1:sha256:8a80982d8e834ef031f50dd50480bdc484074bc7e57efdd5b592dce1218c29ad:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI5NTQxOTlmMTIwYzgxMTJlZGE0YzY3OTM4MjZlODY0YWFjOTNkMzRjMzRmNmM5YzIxNjZlYTYxZmI1ZDYwMmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJkNDQ5NjhiYzZmMDVhMjY5NTBiYjY0Yjg1MTc1MmEwYTQwOTNlMmE0MDQyYTY2OTc2MTA2M2E2NmI5NmE2MmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg2ZmVlNDUwNTRhMjQ0Nzk1YmRkZWMzZjNlOWZiYjlkN2RiMmMwMWNiM2U0ZGExYTE5OWY1ZTllOWIzNzcwYTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L11-L21", + "version": "repo-lines-v1:sha256:440f2be615a541f66d5e9a7b5fb2663a362d7704f6d728297930e137835916cc:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAyNGU4NjA5ZGQ0N2JhNTMyYTJmZWNiNWI5NTZkNDI5ZDZhOTJiNzkzMGRhMjY2NWI0ZjI4ZTExMzFkZmE1NzQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjljZGE1NGMwMDFhYmFkMzIzZWY2M2Q4OGRmNzQ2MThjOGY3MmE0OTE4Yzk4NzdkODFjY2QwMzg4Mzg0OTQ1MWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + }, + { + "id": "claim_8f197d3f24f44a83b0f21bd37d578b10", + "statement": "Test configuration offers optional naming/type/description, pipe selection, and expected-file selection; foo.test.json defaults to foo.json, while the authored pipe-default description repeats the expected-file wording rather than clearly specifying a pipe-name algorithm.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L33-L49", + "version": "repo-lines-v1:sha256:7d383cc22a0605d9c9e79378b653aae8de52b4ebc712ef4a8d1c557084b5e275:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImExMTc5OTJmMmQ4ZGM1OWM5NWIwYWVhMDU0OTcwYTdlN2NhMWVmZmNjZmRhODg3MzlhZDcwYjMyMzQ3YjFmMDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4MGMxZDQ4MjBlOGE2YWExMWIxOGRkMjE5ZWM3YjU2OTU0ZjM4NDEzOGEwYmM5YzYzMjVmMmZkN2JlODYzYzUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYyMmMwMDY4NjI0NzVhNjZlY2UwMDMzNDc3ZjQ5NThiNjVmOTQwZTRiZGEwNWY2YmMyMzU5NmJiYjA3NGY4ZGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI3NDNjNzFjZmFmN2EzYzYyZjg4MGM2YTlkOGFiMGQxY2U2YzJlYjMyNGZiNWVmMzA5ZTQyNmI3ZjUyYzFkODQifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L69-L79", + "version": "repo-lines-v1:sha256:a175ccbff946a0c733a7a462bb2080248e0cfc93090971f9e6b92ce26376a6ec:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjExYzgxNTllODBjYjM0YmY0YmE4ZWQwOWEwMDE0MGFjMmYwMTA0ZjhhNTg1NzBhMjk2NTg5NTM0ZTlkNGRiNGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZmNWU2OGNkZmFiNTE2MDBlZmQ0MDAzZTEzNTFiNmU2ZjI5OWQ5YTkwNzVmOGQ4MTY1Y2Q0YWRkMTE0OWU5YmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhMjIyZGUxZDkyMTJkOWZkOWViZjAyY2UxY2YxYTlhNWY1NGExYjZhMzI4ZGRmYjc0YWJmNzljYzExYWUwMzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA0YTg4OWIyYzY4ODE5Y2IzMTlhMDFhNDhmZTQ2MDE4ZDM0ZjJlMTg3Zjg1YjdiYTZmMTY1YjgyZmU4MmFkNWYifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L97-L105", + "version": "repo-lines-v1:sha256:978bd5c2254e9db4be861cbcd5c1c264ab420c3faa44faf31234df2271bb405d:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjljYTg5MWJmZjdhYzFmN2NlYWFlNDBlZjA1MTA2NmJlOWVmZTQ3YjRlNDI4MWU4NmMzMTliZTJjNTVlYmNlNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTZiMDQ0OTE0Njk3MjJlODM2M2E5NGU0MDQ0NTM4ZTAxM2EyYTIxN2UzNmIxZTU2OGJhNjBhY2I3YjRjOGYyZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjg1NTZkMTMyNzFmZjA2NTcwM2Y5ZmZiZWE4YTM1YWYxMmEyNzM4YjY2ZWMwNWMxMzdkZWVkMWJmOGY3MmI1OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTlmN2U5MmJiYTUzYjhjNzYxMGVkZGEyNTJhNmUyZDc1MjRhYzVlYWFiYzk2YmEzNzE0Y2MxMmJmZDk2YmVhZSJ9" + } + ] + }, + { + "id": "claim_2991ff87ea504f6990bd983adfd433c8", + "statement": "The documented blacklist ignores selected output property names and defaults to an empty array, while ignore controls whether an output is ignored during tests and defaults to false; neither is documented as a destination-write isolation mechanism.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L51-L55", + "version": "repo-lines-v1:sha256:349abc5175d6477c5b13c17b846b9c7cdcb4e19866210b797efcad9e0a1c9ee7:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzhkYTUwOGUyYTQwMDA1Y2QxMDAyOWNjNjFhZGMzZjYwODAwMzc5NTNmY2U3Y2E3MjM0MjBiNjRhNDMwZTMzNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjdhYjVhYWFkMWYzZGE5ZWJhNzVlZGQ4NjUwYmQ0MGNkZTZhNzY4YjU4ZWMyYmNhM2I1MDZjZmQ4MTQ2ODk1MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTYyN2Y3ODBlYWQ3OGIxYzJmODkzYzExZWY4YmVmZjM3MmVmYjU1NWU5MThjNGQxMDY5NWQ1YzhiOTZiMDcwNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDVmZWNjZTkwYjUzYzgwYzZiYjA0MjUzYjgzYjIyZTZkY2Q2ZWZkZWI2ODhhNWEyMGU5NWZiOTYwNmM2M2M5MiJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L81-L91", + "version": "repo-lines-v1:sha256:457239ca7c2d780b92bf929cd50a5e113c4527d0c93a720cc24ab6f1b82d52b2:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwOGIyMzI2ZjQ2NTE2NDNjMmZlOWRmYWRlM2Q5MGVkNDA0ZmExMjBmNzE5MDBmZGRmY2QyZDQyZjBlZDk3ZjQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzMjExOTAwMjM3NTFhM2M5MWVlYTM2ZTUyN2UwMzRiZGRhZmNhMGY2NzFmMTE4NzY5NWViNDI3MmI4NTAxM2EiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg5MzczMjIxMWI2YzZiZTM1ZGJiYmU2MzQ5YTE5M2E1ZTY3M2VhMTExMWFjZjBmYzAxMmQ5NzVhZGMxYjhjMDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4YjkzNDE2ZGQzNWQ0Zjg0MGQxMjk4YzZhYTYyNzZiMDNmNjcxMWY0OThhN2UyYTViY2MyMDdlYmE1ZTNkZTAifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L9-L9", + "version": "repo-lines-v1:sha256:b886ceae11eeea8cf0aac6923089574e100889f155a0b14519fa4932575a1940:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjg4NmNlYWUxMWVlZWE4Y2YwYWFjNjkyMzA4OTU3NGUxMDA4ODlmMTU1YTBiMTQ1MTlmYTQ5MzI1NzVhMTk0MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjg4NmNlYWUxMWVlZWE4Y2YwYWFjNjkyMzA4OTU3NGUxMDA4ODlmMTU1YTBiMTQ1MTlmYTQ5MzI1NzVhMTk0MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTgxNDQ5ZmM5ODZhNTNjODQ4NzlhNzlmNDQwODEwZjc5ZDJjYzZkZGMxYTcxMzFlYmY4YjExZTQzZjJkMjNiYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGE0YzI4N2VlMWJiZTAyOWNkMGQxYWE1M2E3YjI1NGIyNjY5Njg3OGU1N2NmZjVlMjM0YzIyZTAyMzZhZGVmMCJ9" + } + ] + }, + { + "id": "claim_4c4eeddd9c344e6b97fb405e6127b2cf", + "statement": "The test guide defaults to /pipes//entities and describes endpoint selection as a published /publishers// read that requires the pipe to publish the chosen endpoint; expected files can be XML as well as default JSON.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L146-L163", + "version": "repo-lines-v1:sha256:2abedd188a1ae1cfb90a9f42d05e9994fb898099d67748032e1f5f180fee7811:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM3ODJkMjFkZTM0NDMyZTFhZDBlOGU4MjhkZmE2MDA5ZGZjMzY0Mzc1M2NiYmViZWQ5NzVjNmZhZTJiYjgxMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4ODMyNjYxYzYzYjkzMmI2N2FmMjc2MTkzNDZiNmUwNzAxZTVjNTEwMGU3ODM2ZDQ4NWVjYjM3YzNmYTU3YmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJkMzYxMjc3ODcyZDQ4YjNmMTdjNzNiNjM5OTM5OGI3MzI3OWE0NjYwMDg3YmY5ZGRhNmZjNzcyYTk4YjY0OGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4YjkzNDE2ZGQzNWQ0Zjg0MGQxMjk4YzZhYTYyNzZiMDNmNjcxMWY0OThhN2UyYTViY2MyMDdlYmE1ZTNkZTAifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L57-L61", + "version": "repo-lines-v1:sha256:e9b13b871e64acc646c3e69ae7a8ddee489fc0447eb1b41039d5d1112389ae47:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjZlNWYwOWY0YTRhMmQxMjJiMjk3ZTdmNDUzNWIwODQ5NjZlNDM0NmVjZDE2NTllMzU5MWY3MWE2MDFlMmFlZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmY2MTJjNjhjMTZhN2RhODU3YzhjN2M1MmI5MzllNTk0ODIwZDM2N2EzMTQwMGYwYzViNGU2ZjYwMzllMjY3NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjQwZjZhZTQ5MDFjZjU1YmYxMzZiMTUzNmQ3YmY2OTdiMzI3NTg4Yzc5YmY1M2FiZDNkYmFlYmRhOTE3MWFhMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2MzNjNjMzMwNGUzODkyMGFkMmU0OGJmZWI0Zjg5ZWVjODY1Nzk4Y2QwNWZhMDk3ZWRiZmMxYzgyYWMxODQ5MCJ9" + } + ] + }, + { + "id": "claim_3605a978e8354098abdeb70d585118f1", + "statement": "Bound parameters in test configuration are documented to work only with published endpoints, default to an empty object, and support separate test files for parameter combinations such as comparing /publishers/foo/xml?my-param=A with foo-A.xml and the B variant with foo-B.xml.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L87-L139", + "version": "repo-lines-v1:sha256:70fce9aefecc52ade26c9e45b7b90985a9cb597bba189c1f63fc285a5dd2a06e:eyJzZWxlY3RlZExpbmVDb3VudCI6NTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNmMTQyOWQ5Zjc4MGNjMzBlZjUyMTFiOTM5NTMyMGUyNDIwNTk1OGY3NzI4NjZjMjEzNGFiMjc0YzU3YWFjOTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUzNTBkYzY2Njg4M2Y2Yzc0YzRhY2U2Mzk1MjY0MWVkYTRmNWQ5ZDQ0MzI2Y2Y3YmU3ZDQzMDMxNTZkZTA2OTgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY0YzkzM2U0MDI1MzU0ZjYzN2JhNTBmNzZiNTNjNzBjMjg2MzgyZTU2M2FkNGQ3ZDU5YjJmZjEwNTEzMWFjZDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4ODA4Yjc3MjQyMmI5NTA4ZGQwYjU2ZWNjMzJjYjFhY2Q2ZGJiOGVjOGRjYzlmNDIzM2Q4ZTQ2Mjc2MDBlNDAifQ" + } + ] + }, + { + "id": "claim_720324c7123a4868a6f17a200c5fb83b", + "statement": "Stage selection defaults to sink, but the local-test table spells intermediate stages before-transform/after-transform while the public entities API spells them before-transforms/after-transforms; the documentation does not establish client aliases for the difference.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L63-L67", + "version": "repo-lines-v1:sha256:7358af66a028f4d2e9b0ba5be3c1f72485419ed8ed61c60c37f941dca90263e3:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGQzN2I0NzFlNzA5ZTA0ZTVmZjAwYjczZjkzM2Y2NjVlYzIyNjJlZTVmYzQxNzQ2MGIwZTNjNThjNmRkZWQ2YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGU0YWRkNDA1MTlmMDhiNzlhOGRmNzRiMmU4N2Q0ZWNiZDM5YTg2YmQ4OGFjMDdkYzAwZjcwMGRkMmMxMmExNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGExM2VmNjg1YWU3NzljODhkMmFlOTE0MWY3OWExM2JiNDFjYmUyYTEwODkxYjg1Y2Y4ZTBmODRkMWY3NWQyYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjhhMzRiNTRhZmU4ODA3ZTAzODhlNTI2OWM2OGVmZmI2OTZhYjMyNjExNDFkMTNjMTJkZWU5MDJiNmI1Mzc2MSJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L305-L342", + "version": "repo-lines-v1:sha256:42a82370d2959c3d0ffb0b486b599c7b4a5b78b63899c990b71e49e5bbb7adfe:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxNmY1M2VjNGNlYmI0Yzk3MzcyNDJjNjkwNjdkZDcwNGFmOTc5NGFlZGExNWE5ZjA0NTUyMWJiMzA2ZGZlZmEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFkMGFmOGQ5NGU2OTY4ZGQ1NTY2Y2VmNTljODcwYTAzNjc1MzgwMjEyZjAwMzU5MDVjMmMzZGNlYjUxMTIzYjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNiYTU4NDA4MjRiNjUyODI0ZjkyMGVmNWI0OTAzZDRiZmU2MTJhMTJjNzE3YmI0MmYyMTYzMjU5ZThjOGVlZTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNiYjJiNjIzNDE5YjhiN2UyYWU5OGRlM2RmYTk4ZjMwNGJlOWFlMjcxZTkwNDEyNTRkZDEyNTA5MzdiYzM1MDkifQ" + } + ] + }, + { + "id": "claim_6c1d871f677c45f2856351b502bec815", + "statement": "One authored test example sets endpoint=json and stage=source but describes an entities-route read, contradicting the guide's general published-endpoint rule and leaving route precedence for that combination uncertain.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L149-L176", + "version": "repo-lines-v1:sha256:d06919cc6a5ca2288b11bcc1a53e559bc3dbc66e9197441a5bde4aa2897cf3a6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI5YjgxOWM0ZDljMDUzMDM2OGQ4ZTczNmUzOWIzYTQ3NTA2NTkzZjM4ZWQxODU5ZThkN2YzYjllMDc5N2RlMGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM0NGFmMjFhYTk0MzM2NGI2YzU1NGQ2OTc5ZTBiNDlkNGQ2ZjVkNGE1OGNmYmQ4MGU2ZjFjNjBmYzkxM2ZkNWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMyMDA3NDlhMGIwNDk4ZGE3YWYyMWFjODQwN2Q1Nzg0ZTE5MDU3MmUzNjhlMzAwMWFmOGQ4NDkwZTg4Y2VkOWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRhYWU1OWExMWM0YWQ3ZGQ3YTI1MTJhMmE1ZTkwZTBkYjdjODM0NWY4Y2U5NzY1NjEwMjRjYjU5NTNlN2FjMzMifQ" + } + ] + }, + { + "id": "claim_a6283ac13c0347b78b9d1ad9bd1b6974", + "statement": "The authored foo.test.json example is not directly valid JSON because it contains a shell prompt and lacks a comma after file, and the parameter examples wrap shell transcripts and separate objects in surrounding braces.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L113-L137", + "version": "repo-lines-v1:sha256:efa8c4c5cacf480c9e194f8eefdb9e80604214f277f4a91664e5f1ecd68b2bd9:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg1OTZiNTkwNjlmNTljNmI2NDNlM2Q1NjUwY2VjNzJmNDY2MTUyYWEzMDY5YThhZWVjODhjZDZlN2I4NDFiNTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY3Y2RhODJkYTYwNjIzOGUwNWU2MjM5OTU2OWM1ZWUwMzk5MzQxOTY0OGFlNWQ0M2EyYmY4Y2Q2MzQ3ZjgyNjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUyM2E5Zjc3ZjlkMGU4Mzg4MDczNjk3MGEwYTM5MDZiNTc0ZDg1YjYzMGEwYTRhNTdiMmVlOGU1ODk0ZmE5MGYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA0M2Y3YjFlNWJkODM2MWI2N2RhZjFjNGZiOTU2NWMyZDFhN2JkNTU3NTAxYzY0OTRiMWZmZTJjZDgwMWJlMDMifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L93-L106", + "version": "repo-lines-v1:sha256:029f918db3c07c5db3e6ff7112ea25b56fe4f4ab5d864e8e5dd7670ab407d6ef:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg1OTZiNTkwNjlmNTljNmI2NDNlM2Q1NjUwY2VjNzJmNDY2MTUyYWEzMDY5YThhZWVjODhjZDZlN2I4NDFiNTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAxZTA1MjBhYTM2ODg2YTNhMWI1ODBjZDc5ZGEyYTJkOTczMTg1ZTZiMGYxNjE4YzA1OTQwNzNmNzM4NWU1NzMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVmYzFmZDM5MzEyMzc4NjM4NTlhM2UxZmQzMWYwYjU4NzFlZDNmN2IwOWViZjNkZmVmOGY5M2NjNTE4MzU1MmUifQ" + } + ] + }, + { + "id": "claim_96286444d9c74b21807b81830fe61725", + "statement": "The local-test guide says internal properties other than _id and _deleted are removed and entities with _deleted=false are removed, but this is an unverified, suspicious client-normalization statement because Sesam deletion tracking documents _deleted=true for deleted entities.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L141-L144", + "version": "repo-lines-v1:sha256:89506b668ea86ed7cfc1df98d73995ad754d532bab9f4bd6e2227ef9aabfd51b:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTM3NTIyMzE5NGYyYzlkY2RlODIxMjQwOGE1NTBmZDM0YmZiZTdhNmI4YzQzMmM5NTAyNGE3Y2VhZjYzNjBiYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzlmZGY0YmI5OGVjMWQ5ODYxYjRiMTViMWU5NDc0NTVlZDI3NmU0MmFjNzI4NTU2MDliMzAzNDZiOWZlZDgwOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDQzZjdiMWU1YmQ4MzYxYjY3ZGFmMWM0ZmI5NTY1YzJkMWE3YmQ1NTc1MDFjNjQ5NGIxZmZlMmNkODAxYmUwMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjY3YTUyNzAxZGQ2YWMzMTEyZGNlMTI5N2ZlZDdlNDRlNjUzYTk3MTFjYzEzOTRiMmJmYWFkNzlmYjAwOTMzMyJ9" + }, + { + "resource": "repo://hub/features/deletion-tracking.rst#L5-L8", + "version": "repo-lines-v1:sha256:10d1d72a13ee739ede1b2dbdf1e72292c41f6d9b7934a0a5ecd494c7f0ca4b30:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjc5N2U3ZGJiZTg1MDVkMjRiODMyNWNmZWIyNWIxM2UwNGFhODg3OTU3NzY5MzFiZDNlMjlhZDQ4NDVjYTIxNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDAyMDQyNGEzYzI1ZWYyMDY5ZDdhYTAyNTU0M2NjNWVjMmQ0YmM1N2VkMDgzM2EzZTJmZmM0MTNmNzE3ODQyNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzZhNGQxNWFhZmZmZjQ2OGUyYTViMGU1ZTdhYjk3MjE3YjVkMjZjZWM2MDgzZTQ3YTY2ZDcyYTA0MTY2MDE3MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/sesam-client.rst#L53-L53", + "version": "repo-lines-v1:sha256:7cdb98aa3c05fac181d16b6a83e126c460d6d1c0f39b3126f070a1466ded5778:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2NkYjk4YWEzYzA1ZmFjMTgxZDE2YjZhODNlMTI2YzQ2MGQ2ZDFjMGYzOWIzMTI2ZjA3MGExNDY2ZGVkNTc3OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2NkYjk4YWEzYzA1ZmFjMTgxZDE2YjZhODNlMTI2YzQ2MGQ2ZDFjMGYzOWIzMTI2ZjA3MGExNDY2ZGVkNTc3OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTRjMDZjY2MzZjM0ZDdjZWQ2MmNjNTdjMDExZjVmNTBiMjIwYjQ2NzQyNTkyN2I2N2NlM2Q4Y2I2NjY5OTEwZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_1fa924196d624196a4b450d1fd9555c0", + "statement": "The inspected local-testing guide does not specify sorting, comparison tolerances, or a complete normalization algorithm, and its client behavior descriptions are external handoffs rather than an inspected implementation.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst", + "version": "repo-file-v1:sha256:f030c39ca615557b92ae2eabbb973f82776694e0cb4e29962364c8466331d228" + }, + { + "resource": "repo://hub/sesam-client.rst#L53-L53", + "version": "repo-lines-v1:sha256:7cdb98aa3c05fac181d16b6a83e126c460d6d1c0f39b3126f070a1466ded5778:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2NkYjk4YWEzYzA1ZmFjMTgxZDE2YjZhODNlMTI2YzQ2MGQ2ZDFjMGYzOWIzMTI2ZjA3MGExNDY2ZGVkNTc3OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2NkYjk4YWEzYzA1ZmFjMTgxZDE2YjZhODNlMTI2YzQ2MGQ2ZDFjMGYzOWIzMTI2ZjA3MGExNDY2ZGVkNTc3OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTRjMDZjY2MzZjM0ZDdjZWQ2MmNjNTdjMDExZjVmNTBiMjIwYjQ2NzQyNTkyN2I2N2NlM2Q4Y2I2NjY5OTEwZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_1f8ea51125ca405dab740d861a8ed471", + "statement": "Service API paths are relative to the instance's API base, which for a cloud instance is typically https://instance-guid.sesam.cloud/api.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L10-L20", + "version": "repo-lines-v1:sha256:2b0dfaa70c6101b550419fcfa76cdb41f3f0d33fb46a65e8181904f073f16263:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2MGRhMTJiNTFlZDQwYmIxZGE5ZWY2NDUwMjFjMDY3Yzg2MmM2NDE5ODljOTY1NWY4Y2FmM2I4NjZjY2JiZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI0Y2VmMTRmZDIwNDllZWMzNjJiNTVmNWE3N2I5ZTNiMzdjYWI0YjA0NzUxZWQ1OWY2OGNlOTM5NDQyODA5M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdiZWY2NmU2N2FlNWFkNWY5MWRlMDc4MDQ5ZGY3ZGY4ZDhkMWIyMThlZjk1MzEyYjM4NTgzZDQ0YWY3NzdmZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ1MWU2YmExYzAzOTdkOGM3MzI5MDNhY2E0NWE4YmVhMjNiOWUxMjkwNDg1OGRkMzllM2MwZDBlZDI3MTRlOGIifQ" + } + ] + }, + { + "id": "claim_cdf5a7afb93c4fb6ac2cb9c9edae0ccf", + "statement": "The client setup requires a personal subscription and a JWT, with the subscription URL available under the subscription name and JWT generation under Settings > Subscription > JWT.", + "evidence": [ + { + "resource": "repo://hub/sesam-client.rst#L38-L53", + "version": "repo-lines-v1:sha256:a923202e8a9dbea5422ea134e811e5cd37f8a7d9cf9c4f8663ccbf39790446eb:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1MGU0NWQwOTExZTg0ODBmNGE5ZDM4YmE4ZGI0MzQyNDAzNWM4ZGIwZTZkNTE2Nzc5NGRkODg1YmMwOGUxNWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdjZGI5OGFhM2MwNWZhYzE4MWQxNmI2YTgzZTEyNmM0NjBkNmQxYzBmMzliMzEyNmYwNzBhMTQ2NmRlZDU3NzgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImEzZDdmMjE1ZTYxMGNkZjkzN2M2MDNiNWIzNjQxMDk1YzhmYmZkNzFkZjAzMTdlMjVkMjNjOTA5ZWE0ZTVjNjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_c520f8e3b3f74d79aac39c73c19dd43b", + "statement": "The documented local test command is sesam -vv test, and the test model runs non-output pipes until their queues have no remaining entities before comparing endpoint output with expected results, rather than starting every pipe only once.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L9", + "version": "repo-lines-v1:sha256:bd64e696390e5fc902c522bbd9dc446b7baadc0ff24dfc204a731c810c699c20:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOThhYmRjZjJiYzkwODIwNDYxNTkyMjY2OGU2NWJkNmQ4YjdmMWM5YTRmNzE0NTcwMjY1YjhlNjdiODdhMmMyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjg4NmNlYWUxMWVlZWE4Y2YwYWFjNjkyMzA4OTU3NGUxMDA4ODlmMTU1YTBiMTQ1MTlmYTQ5MzI1NzVhMTk0MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTkyYTJiODM3ZDY1MDE4ZDA0OWM4MmE0ODBmZTgyNWU1OWZiYzEwNGM3MGUzNTIwM2Y0OTA5NmVmODg5YjFkMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGE0YzI4N2VlMWJiZTAyOWNkMGQxYWE1M2E3YjI1NGIyNjY5Njg3OGU1N2NmZjVlMjM0YzIyZTAyMzZhZGVmMCJ9" + } + ] + }, + { + "id": "claim_6258477e37bb4523b884aeefefa18df2", + "statement": "The local guide documents notification of invalid/missing endpoint tests, an all-passed message on success, and failed-test/pipe identification with expected-versus-received comparison on failure; it describes support for updating intended expected outputs but gives no update-results command.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L9-L9", + "version": "repo-lines-v1:sha256:b886ceae11eeea8cf0aac6923089574e100889f155a0b14519fa4932575a1940:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjg4NmNlYWUxMWVlZWE4Y2YwYWFjNjkyMzA4OTU3NGUxMDA4ODlmMTU1YTBiMTQ1MTlmYTQ5MzI1NzVhMTk0MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjg4NmNlYWUxMWVlZWE4Y2YwYWFjNjkyMzA4OTU3NGUxMDA4ODlmMTU1YTBiMTQ1MTlmYTQ5MzI1NzVhMTk0MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTgxNDQ5ZmM5ODZhNTNjODQ4NzlhNzlmNDQwODEwZjc5ZDJjYzZkZGMxYTcxMzFlYmY4YjExZTQzZjJkMjNiYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGE0YzI4N2VlMWJiZTAyOWNkMGQxYWE1M2E3YjI1NGIyNjY5Njg3OGU1N2NmZjVlMjM0YzIyZTAyMzZhZGVmMCJ9" + } + ] + }, + { + "id": "claim_2220c6dd0e0a46d6886b71533f708c16", + "statement": "CI requires a designated testing node, runs the same configuration tests as personal testing under CI orchestration, requires successful tests for validation, and recommends peer approval before PR merge; small test data usually permits a smaller node than production.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L7-L24", + "version": "repo-lines-v1:sha256:2bca9d22996e089efc3c41270a559bc9639ef5c0894312477915e1887d36bdc1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5NWQ0OTIyYjgzZGRlZTFkODI2ZWNhNWFlZGYyNTUyNTVhYjZhOTlmYjljZTBhNTcwYTE4MTFlNjZmZDQ4ZGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzZjNhYTU3ZTRmM2M3OGRmZDVkZjRhNzQ5ODJiYjQyZTNlNmE3NDllYTlhMTgxNmU1MzkwMjgxZTgyOGNhZDQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU4MjMyOTcxYzUwMTJkZjU1ODc2MDZiOTRlMjVhOWI0Y2VlOTA4NDQ1MzUwODlkNTEyZjkzMTk5YjA0MDQwY2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFiZWYwNTRiMjAxMjEwNGZjNDE1ZThlMmNiNTcyYmRkMzZhYzBiYWQ4MGE4MjlmYjI5YjYzZGE2YTQ0ODZmYmIifQ" + } + ] + }, + { + "id": "claim_7b85ad7e5a2846a0b2bc1bebbda92f21", + "statement": "CI tests against a shared node must be serialized because the client overwrites configuration, causing overlapping tests to fail or not finish.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L18-L20", + "version": "repo-lines-v1:sha256:0a71474d80306658abf0a9514859d68f90cf99798e6fc39c09fb8455e95afa1c:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWE0ZGIxMTExY2VmNDUzMzYwYzYzNTQzY2FhNmZlMzI5ZWEzMDFiNWQ0M2FjZDA3ZTA3OGI0NzVmZmM0ZjU5NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmRkMGJmMGYzMTI0NjRhYzY4M2M5MTQxMDhjYjhhNjcyMzcyMDBhYzc0Y2Y5NDE5NDFjYTRjNGJjZDM5YzcxZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWQyYjRjYzIwZmM4YzJiMzI5YzkwN2YyNTBiZTE0MDhlZmJiMzY0NzE4ZWE4MDU5NDhlN2ZlNzdkZWUzOTVmYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODRlZTc2NzE2YjI3Yzc0YTFkMWU1NmMyMDg1YjQzYWUzMjFiZDBhZTUzN2VlMDU0MzM5NjIwMGIzNTc3MTE5MiJ9" + }, + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L33-L35", + "version": "repo-lines-v1:sha256:af6131f504a5e438eaf49da47f253debfe692f006da51e146ec4c4316b5c2760:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTlkNGYzNGY4YjcxY2U5OTViZDE4MmU5YTE4ZDYzMThhYTU1YmM2NTI5NGE4Yjg3NzkwODQ1NzgxNjc5N2U0ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTE0YTZhZjJiNTY0OTQ2YzdlYWU2NGQwMTExYzM2NTI1NjE2MTYzN2Q2YmEwOWRiYjUwN2Q5ODU3YjIxNGFiNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTAzYTBlMWU0NDRhYjBlNGUzYTUzZDc5ZjdmMGYwOGQ0NmNkMWFkOWZlZTk2ZDJkMzgxZjFlOGY1MGUyMzE3MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTFmYjA2NGZhMjhmNTg3YzUwY2ZkZjMzZDk2ZjJlNGExM2NhMmE3NWNjNjYxY2Q1M2YxMjMxNjU3MWU2N2FkOSJ9" + } + ] + }, + { + "id": "claim_6386af0e8fb943219a4e1c79eff7fbbc", + "statement": "The documented Jenkins template uses a Kubernetes client container, disableConcurrentBuilds(), a Jenkins credential for the CI JWT, version verification, and a test step exporting NODE/JWT and running from node with -print-scheduler-log; its container-build example pins client version 1.16.1.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L140-L177", + "version": "repo-lines-v1:sha256:d00dcadfbea0273ade9592228e239a96f02936ece70ff4686a6267559ebe8333:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc3Y2FmNTU4NDhkYWRkZDQ2MmFhZTY1ZTBjYmIwOTBhMzBlOGU4ZjU0YWJmYjBmMTg4ZGJhNDMzNDU3NGQzZDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY4YWE4ZDJjMWQ4NTIzZjY3ZjYzMDMwMDIzMmY3NWFlNjQyMGNkMDkyY2UzYzU0YTRiYWI4YjE5OTY0MmZmZDYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc4YmYwY2M3Y2M4MmVlMjVhNTAzYzNmYWMzOTI3YjE0Y2U5ODM4ODlkMmIyNTQ5NDZjNmIwMWNmNGU3ZGY5ZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdlOGU4NzRlYTZlODhhNTUwYWQ0ZGJiYmVlYTcxYWZkY2I2Nzk1ZWUyYTAyMDNjZDAyOTQ2YTY0YWJlYWIxNzAifQ" + }, + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L56-L131", + "version": "repo-lines-v1:sha256:66eb7f71930db67b58a84feda8e4abe0ff6cbce9186422ca8efc579de498c66a:eyJzZWxlY3RlZExpbmVDb3VudCI6NzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhiYjNlNDU0OWM5NzYyODZlYjRlMDYxMmJmODBmZWE4ODJhYTJjZjJiMjgxZWVlNjVhZjBhMTIyZGY0NWFjZWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2NzY0NTgyMGNmNjc5NzQ5ODRiODRkM2Q2ODJmOWEzMTJmNmE5Y2MxZDQ4ZTVlOTE1ZDdiZDNmNDFkMWEzYTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjllMDQ1ZDBlZDYyNmQwZDM2OTBkZTY1MDU1NTM0YmY3MzJhMjFiNDI2NjQ0MjA1NjAwYzE1NWZhZTVjZDAxZDYifQ" + } + ] + }, + { + "id": "claim_1a0965d3746c482c8f3f22671745e87c", + "statement": "The Azure DevOps example downloads the sesam_cli_version release, verifies the CLI version, exports node/node_jwt into NODE/JWT, and runs .././sesam -vv test -print-scheduler-log from node.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L179-L216", + "version": "repo-lines-v1:sha256:72e38a58da7857353862e61a3f2a3e83c7ff8f1a6b92fb8a7eb4fa6c4c3f7ae7:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY4ZmU5ZDBhMmRkYzg3MzI3ODE1M2MzNzE1OTNlYzFjMDlhOTJhM2FlOWMzZWI1Zjk5NDJmYmQ2OGE5YWEwMDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjViOGI3MzE0YWNjYmRlMjRjOTUxMWM3ZjYxOTZjYzE3YjQwZTViZDJiZTZmYjgxY2JkYzQ4MjA4YTIyZTExMWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVlYTYxODFmMjNiMDdlMzU2NTM3YWNkZWExNzQ5NjZhM2YyYzhmYjM4NzQxNzkyNTA1MzU0ODQ4ZjhkYmY4YTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUyZjdlNTkyNzFmZDI4MmQ0Y2Q2NTZlYTg4NTQ0NmVhYTJlZjExNmYyMDllZjk1MGU1ZmYwYjQzMjc2YjBmNzEifQ" + } + ] + }, + { + "id": "claim_4dd431bc8e0e40909bdc7b7aadea476f", + "statement": "The Azure guide pairs trigger:none with branch build policies, one minimum reviewer, and linked work items on develop/master, and separately instructs disabling parallel builds and queuing the second build, illustrating a Limit=DisAbleParallel capability and matching pool demand.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L188-L188", + "version": "repo-lines-v1:sha256:e3281fa00cb9991b6a55a0312830e863a5dc2a15874895067830259a4df6eb59:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTMyODFmYTAwY2I5OTkxYjZhNTVhMDMxMjgzMGU4NjNhNWRjMmExNTg3NDg5NTA2NzgzMDI1OWE0ZGY2ZWI1OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTMyODFmYTAwY2I5OTkxYjZhNTVhMDMxMjgzMGU4NjNhNWRjMmExNTg3NDg5NTA2NzgzMDI1OWE0ZGY2ZWI1OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjExN2FmOWI2MGUzOTJjYmM2NmZlMThlMjE0YzUwYTZlMmFkZmJjYzYzMmYwYmJmOTU0MWEzZTg2M2M5ZTQ0NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWVhMjUwMDFhZGQ2ZjFiYWVjYTc5M2NiNjNlYWE2OWNiNjU0NjNiNWRkY2E0NDhkZmRhMmVhOTZkNzY3ZDUzYiJ9" + }, + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L219-L239", + "version": "repo-lines-v1:sha256:5327084b676c75b12c3d81ec27024dad27cb8e13229732676a02a0ae4505e4c4:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmNTZiZTFiOGI3MWQwMTVjNTcwMGFhZDI3OTkxNDY3M2E2ZmU3M2QzNTc1NDMyYWRiMzdjYjc5ZDVlOTIyYjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRmMzM0MDMxNDZhZjU2NWI0MzJjODVjZjI2YmU2NGViZjU5ODE5YmYwNGY4NjM5ZDJjOGM3OGIxOWNjMTExMjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAwNDNiMzMzZWJmNTk1M2U0NjljZjY4ODIyZmQ1ZmZjNDQ4ODE1NGQ3NTg1NjkyOTgwMTA4MGI5NjVkZjE1MmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU5YzAwNDY3Y2JmZTZjMmQyM2E1Mjg0NWUxZjFmNTcyNDIxMTc5OTE4N2FiYTNkYzRhZjhkNWQwNmFlNjkyZDQifQ" + } + ] + }, + { + "id": "claim_2ff097e4b0284ced9df20f38d6d1453a", + "statement": "The configuration API scopes GET/PUT /config to the default empty config-group, GET/PUT /config/{config-group} to the named group, and GET/PUT /config-all to all groups; the PUT operations overwrite the complete configuration in their scope.", + "evidence": [ + { + "resource": "repo://hub/features/api-config-groups.rst#L41-L46", + "version": "repo-lines-v1:sha256:fe519e3df9366b3dde7458610ec71c69e2c6ab6ee1f1f7a99baf6d507c6f57c9:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU2MDE2NjhiOTg2YzBiNjBiZTU1ZGQ2OWNhZDg1OWU2OGM5NGRkMDUxZDgyNTIxOWQzYTc2ZWVkMzUxYWVkNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGE1MzRhNjZjYWFkYjA4OGVkNjkwYzlhMDM5MzQ2YjViMzkwY2JiM2QyYjE5Mzg3ZWJlYTRjNGJmNDQ1ODYzNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDRiOWEwYjE2Yjk5MTBiYWE1ZDBhNGRjYWZmOGE2MGM0Mjk2MzNiZjJhZTNjYmFjYzgyMDI5MDc1ODBkMTBjYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L1226-L1348", + "version": "repo-lines-v1:sha256:f892acc1bec8eb1a8d9a186fe4014047f65ad0d045514e229a39e3ab001e5046:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIzLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiIyYzk4MDc4YTM2YjgzNDY2YWU5MThiM2UwZDUzMDg5OWY3NmQ2ZjNmM2JiZWFjNWEwZGI1MTU2ZGVhNmI2ZjM2IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJmMzlkYmJiNDBjNDc0ZjU4OTBlM2IzMzUyZGM5YmYyZTdmNDI5OThkMjM5ODE2NGFkMTNkOWYzZTZiZmY0MDEyIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI3NDgwNjhmNzE4Y2JjZmVjZTllYzNhNWEzMjUzOWIwNzBiYmYxMzE2NTJjMjEzODJkYTdmZDgxMjFlOTM2OGU0IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiI0NjA5NjkwYzg3NjlhMDE4ZjJhYjg3OWU3NDk2NjIyNjE3MTM3MWQ3MTJjMzdlNjIzMThiODA3ZjRjNjE1ZGRkIn0" + } + ] + }, + { + "id": "claim_a791281682e5416195a8fc80cb9629fb", + "statement": "Individual pipe/system configuration endpoints express group membership through metadata.$config-group, whereas group-upload endpoints select the group through the URL, with no explicit group placing components in the default group.", + "evidence": [ + { + "resource": "repo://hub/features/api-config-groups.rst#L8-L46", + "version": "repo-lines-v1:sha256:23221ef34edcdd6abb876b01875cfe69dc8036de0703907118d2fab01d31c32c:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUzOGQzYzJlN2NlMDBmMzJjMjFkNjU1ZDhiYTc0NDE0Y2RmMDNjNjhjZTUwNjNlZGUxYzI2OGIwNmM1MmNiNzkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhhNTM0YTY2Y2FhZGIwODhlZDY5MGM5YTAzOTM0NmI1YjM5MGNiYjNkMmIxOTM4N2ViZWE0YzRiZjQ0NTg2MzUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMzMDc1MzMzNDI2ODg0YzVkNmQ5MDRkMTcxZDdmZWEwN2Q4NWUxN2Y1MDM2MWZmZWQ0YzNlNzVjNGM4YjdjODciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_a5f0166f36f84b228f0d6cadc3eea281", + "statement": "force=true on PUT /config and PUT /config-all forces acceptance of configuration errors and best-effort application; the API describes this as rarely a good idea.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L1243-L1258", + "version": "repo-lines-v1:sha256:229e0ae01a594d6255fa41f366b3b0c6ab5dbc0fa4aac9cd5d093ecbc8951cfa:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5MWE1MjE0M2UyNWNiZTYzNWRhY2Q4YWZkMmY4NDFlZjY5YzdmMjQ2ZmQwYjMwNTg0MjQwZWQwMTdlZWEyMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwY2E4NzEyMDQ3MWE3YzFjODNkYjk0ZWVjMzkxN2Q0YTE3MTFkYTEzZDlkNDEyYWRlMzhiNWI4OTY5OThjMmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhhYWRmNDk5NmM3MDI0ODFmOTc5YjNlMTYwNDY1OWY4YTM4ZTJjMzJkYWU5YmFkOWE0ODk2YWRjZWJhOWFmOTciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhkMDhmMmYwZTE3YmJkODc0OTlhNTlkNDc5YTI0ZGY0NTU5ZmIwY2U5MTcwMDExYzhlMTc0YzBkNDAzY2E0ZmIifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L1329-L1345", + "version": "repo-lines-v1:sha256:0283033c062489598cc53108f93f7add2ac107b6bcc51ba9cc09539aee397f45:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5MWE1MjE0M2UyNWNiZTYzNWRhY2Q4YWZkMmY4NDFlZjY5YzdmMjQ2ZmQwYjMwNTg0MjQwZWQwMTdlZWEyMjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwY2E4NzEyMDQ3MWE3YzFjODNkYjk0ZWVjMzkxN2Q0YTE3MTFkYTEzZDlkNDEyYWRlMzhiNWI4OTY5OThjMmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhhYWRmNDk5NmM3MDI0ODFmOTc5YjNlMTYwNDY1OWY4YTM4ZTJjMzJkYWU5YmFkOWE0ODk2YWRjZWJhOWFmOTciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhkMDhmMmYwZTE3YmJkODc0OTlhNTlkNDc5YTI0ZGY0NTU5ZmIwY2U5MTcwMDExYzhlMTc0YzBkNDAzY2E0ZmIifQ" + } + ] + }, + { + "id": "claim_ad725af7fea54024bec4f3b2f70ae8f2", + "statement": "The documented GitHub Autodeployer periodically checks repository configuration for changes, can select a tag or branch, and uses the branch setting with a default of master when no tag is specified.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/automatic-deployment.rst#L9-L14", + "version": "repo-lines-v1:sha256:96db6ec56445e247e3b1cf191d5de5ed155be218a3a47db01d3f31d335cbef8f:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTBjMDg1OTNmN2QzMWVmMGFmZGVhMzg3MzkzMzQ2YzAxY2VjNDlkYTg0MzE5MzI5MzY3ZWQwYjRkM2JmNmU0OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTY0ZDEwZmRkMzg3Yzc2NGM2MzViNDMxYjIyNWUyNDJkZWM3OGE1ZGEyMzA3ODg2ZGU3N2FkOWJmMjU0ZmY5MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjI5NTBjMGJkNWU2NmQ0MmM1NjllODEwYjQ1YTA2YzgzMjlhNTI3YjBiYWEwNGU2NzliYmVkYzM2OWQ1MjUzMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWU2ZWE3NjU0OWM1YjcxMzQ4YWY5YmUwZDM1ODA0OGIyZGFiOWQxMzkxNjI0NjIwYTM0OTE1NmMxNGU4Y2ZhMyJ9" + } + ] + }, + { + "id": "claim_edccf747d1594162a8e03c823064affb", + "statement": "The autodeployer documentation warns that deployment overwrites existing pipes and systems and removes node pipe/system configurations absent from the selected repository branch; the guide hands implementation/configuration details to an external repository rather than specifying the API or config-group handling.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/automatic-deployment.rst#L16-L20", + "version": "repo-lines-v1:sha256:c3f1b43953727cf8060c8779bf2447131d62f23d5c3a18c37a901f1b0941c01c:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2IxM2NiNTg5OWRkYzY0OTViZmRjYjBkZGI2N2VmMDA0Yzk1NzY4NzYyMTA1NjMyZGQyN2RiYmNjOTQ3ZmVkMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTk2NzUyOWYzNDkxN2Q3ODBmYzhlOGZjNGQ4ZjIyMmYzOGE1Yzk0ZjkyNDBlYmM3OGVmMWJlY2M2MTMxNzdmMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWIxNzNhYTBhZWZhODNmNGIwZGMzMTFkNmMyZGZhNTMwMjhmYzRjMjY5ODFhZTI0NzZiMjU0N2QxM2NlZmQ5YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjM1N2Y3Mzc4MTI4OTA5MDk3NjNjMGVlZDZhNDA2NTQ4YjUwZTYxNzJhN2QzZWI4NjRkNjBhZTQxZGMzZjg0OCJ9" + } + ] + }, + { + "id": "claim_640c39cec1894ba6b7d435f9554935f8", + "statement": "Automatic deployment is optional and the guide cautions that business-critical installations often need release-timing control; the autodeployer only deploys configuration and does not start or reset pipes, leaving required actions manual.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/automatic-deployment.rst#L7-L18", + "version": "repo-lines-v1:sha256:6ff079c7e1b82755fb38a2ea85b05192e2db0c0d9db8638c0a7de98295354536:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY5YjVhZDNiZTIzMzc5ZmY5ZDkzY2Y0MGFjN2QwYmMxZWE0NmNhODg1MGI1MzcxMTc2NzkzN2YwZDY4N2QzNGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdkYWIxNDNjYzI3ZDFmYjcyZGIwZjdjMDljZGRjMjM5NTliMTYwYWIxYzFhY2JhNTk4ODU3YjliNjEzYTBiZjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMwNGM2YTcyODIwOTIxZTcxMjBkZmFhN2RiODUzY2I3OThjYjI2MDI3Y2NmNWRkMTM3ZDkzMmQ4NTU0MjAyNjMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlhMmU5ZTU3ODUwOWY3ZTE4MTAzMGJjMDQ4ZTliMWYxYjg2NGZhZDQxZDJjZTE3ODQyYTkzYzNkYjYzMzQyZmIifQ" + }, + { + "resource": "repo://hub/setup-environment.rst#L54-L54", + "version": "repo-lines-v1:sha256:f3b4fd18e4bcea3c0f2ee3939dc596eb89a641419c1e17a7079e0d0b43030a02:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjNiNGZkMThlNGJjZWEzYzBmMmVlMzkzOWRjNTk2ZWI4OWE2NDE0MTljMWUxN2E3MDc5ZTBkMGI0MzAzMGEwMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjNiNGZkMThlNGJjZWEzYzBmMmVlMzkzOWRjNTk2ZWI4OWE2NDE0MTljMWUxN2E3MDc5ZTBkMGI0MzAzMGEwMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2U3MzllZTZkYTdkYTI4NGNkMjY4ZGQ3MzQ2MDA4N2MzZTU1YjQ3MzllODkzYjMzZDBiMTI5ODg1MGUxNWVjNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDIyNzQ5NjNiY2Y2MTRmMGY2ZjY2M2RhYTQ5MTgwZDkyMTQzYTZjMDhiODAwNjJiNmU5MGZlMDAzODViYjk1OSJ9" + } + ] + }, + { + "id": "claim_d7896e7f023b4a24931b0bd5cb90a18b", + "statement": "The deployment guide proposes replacing CI test steps with release-parameterized deployment steps in Jenkins/Azure but delegates exact client parameters to client documentation, while the client page explicitly forbids production-subscription use.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/automatic-deployment.rst#L22-L27", + "version": "repo-lines-v1:sha256:902dbf2f6a0a00da847c6129c3bdd0916f090b733474260597d280eb885a011e:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODkwYTVkYjk3NDM4NzUzYWFkZDY2OWMxZTg2NzBmMDc3NGFiMjIwMjVjNjk3MjQ1MzQ1N2EwNDEyMGQ3MDAyOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTcxNWI4MmQ0NDI5ZmRjNDcyMGU5NzA3ODFlOWM1ZDg1MGIxNTIwMWRkYjQ4MTcwYjZlNGNmM2YzZjAxNDE2ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWEyZTllNTc4NTA5ZjdlMTgxMDMwYmMwNDhlOWIxZjFiODY0ZmFkNDFkMmNlMTc4NDJhOTNjM2RiNjMzNDJmYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/sesam-client.rst#L34-L36", + "version": "repo-lines-v1:sha256:86af45df34273572977bd31ff64cacea741d4d982462772035dad9011c21d763:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDY3NGVhNDc2NjczYzBhYzg0NTUzYWMyMjEyYjc5MzVhOTY3ZGExNmEwMTM2Njg4ZjBmZmFmODdmZWI1YmJmZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjEwZDRlN2I2ZjMyZjEzMzMwYzhlMTRiZThkYjQxNzEyMzJmMjZkZDUxZmNhNTgzM2M5YWVmOGI2MGVlN2IyZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDc5NmI1YmZmMzk0MTMzOGE4Nzg3ZTE3NTgzYmFkNGMwY2Q5YTJkZGQ5YTY0ZjZkYmY2NjA4M2JjZmFhNDA4MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTcwMTE1YjFkZTQ5NTZiMzc1MDc2MTY3OTFlZGMyMDc5MGJjYzg4NzQzZjg1ZmZjMjFhYjlmZGU5YmJjOTlmZSJ9" + }, + { + "resource": "repo://hub/sesam-client.rst#L53-L53", + "version": "repo-lines-v1:sha256:7cdb98aa3c05fac181d16b6a83e126c460d6d1c0f39b3126f070a1466ded5778:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2NkYjk4YWEzYzA1ZmFjMTgxZDE2YjZhODNlMTI2YzQ2MGQ2ZDFjMGYzOWIzMTI2ZjA3MGExNDY2ZGVkNTc3OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2NkYjk4YWEzYzA1ZmFjMTgxZDE2YjZhODNlMTI2YzQ2MGQ2ZDFjMGYzOWIzMTI2ZjA3MGExNDY2ZGVkNTc3OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTRjMDZjY2MzZjM0ZDdjZWQ2MmNjNTdjMDExZjVmNTBiMjIwYjQ2NzQyNTkyN2I2N2NlM2Q4Y2I2NjY5OTEwZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_d15a230c492c462ab623153fefc4466a", + "statement": "Pipes can become out of sync after configuration changes, dataset deletion/recreation, source truncation, backup restoration, new joins/pipe inputs, or deletion of datasets used by hops, requiring reprocessing to restore correct output.", + "evidence": [ + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L8-L24", + "version": "repo-lines-v1:sha256:687fcd682be89321b60a595df9986db7ca2ec1146bffd73b73ca41a9aa09ad73:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2ZTYxZDE4YzU5NzViYTYxMGJkYzNiM2M3MjE5Y2QzNDRkZWVkODU0ZmQ5MzNiOWRmMjgwMDVjZDA5MTRlMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQxMjQ5MmZjMWJkOGUyZWYwNGNhZjBkNDgxMDI2NzRlNDc0ODY4Mjc2YTI4YTM5MjFmNzM1OGQzMWQwZDMyYmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ5ZDk1OWZkMGVkNDIzMTVjZjE2Y2Q3MDkyMjc1YjVjMDVkZGMxY2I5ZWYwOWU1MmNmODg3NTQ3Y2NhMDNjMGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM5ODU3ZWJlMWY2Y2QzMWQzM2FjYzc3MzQ5NTNhYmNiYzdhMmJkZjhmNGRhY2UwMzE5MTRlNmFkZjQxMjY0MzYifQ" + } + ] + }, + { + "id": "claim_854ffa9e31b24ca9bd20bbf5983946f0", + "statement": "The default reprocessing_policy is continue: the pipe keeps processing without an automatic reset despite desynchronization factors, and the feature guide says affected datasets are tracked.", + "evidence": [ + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L29-L51", + "version": "repo-lines-v1:sha256:b16b848cb9adf03cb641001cb664aaf4aa0f08f04e17170c2fdfaa4c3c14e82e:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5MmE2YzI4OWEyMzAxMGE1MTkwNGRmNTViNTljOTdlNzRhMzI2M2QwZjdmOWYzMDhmZTI3NTIwZGM2OGRjZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3MTVmNzJjZDM4NDBiMjE5NGMwZWU0NGZhOWUzZDYyYzUwODcyZDQ3M2ZlMTQ0NTg3YWRlNjQ1MGQzNWI0NTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAxNWUxM2NjMWQzNTQxODQ5NTk5Njk4NzkyMWI5NjU0YWQzMjE4MDFhOWEwMDg5MWU4ZmUzM2EzYjZkNzMzN2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUifQ" + } + ] + }, + { + "id": "claim_1e4457139d864e5182ac021520b1d850", + "statement": "With reprocessing_policy=automatic, the pipe detects desynchronization and resets/reprocesses inputs, normally with a full rescan but in some situations with a partial rewind; this is pipe/service behavior rather than an autodeployer action.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/automatic-deployment.rst#L18-L18", + "version": "repo-lines-v1:sha256:7dab143cc27d1fb72db0f7c09cddc23959b160ab1c1acba598857b9b613a0bf7:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2RhYjE0M2NjMjdkMWZiNzJkYjBmN2MwOWNkZGMyMzk1OWIxNjBhYjFjMWFjYmE1OTg4NTdiOWI2MTNhMGJmNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2RhYjE0M2NjMjdkMWZiNzJkYjBmN2MwOWNkZGMyMzk1OWIxNjBhYjFjMWFjYmE1OTg4NTdiOWI2MTNhMGJmNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWU2ZWE3NjU0OWM1YjcxMzQ4YWY5YmUwZDM1ODA0OGIyZGFiOWQxMzkxNjI0NjIwYTM0OTE1NmMxNGU4Y2ZhMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWEyZTllNTc4NTA5ZjdlMTgxMDMwYmMwNDhlOWIxZjFiODY0ZmFkNDFkMmNlMTc4NDJhOTNjM2RiNjMzNDJmYiJ9" + }, + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L44-L51", + "version": "repo-lines-v1:sha256:49721936dbd9f05108f09516247ef781b0bd5696ee2ef2a777179e7839ff1d65:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODQ4YWM4NjZiYTI0YThhZGVmOTkyMDQ0MDlhYTEyYjk3ZDE4Mjg1MDQyNjdlNzFhNGZhZjBiMDlkNjQzZDlmNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjcxNWY3MmNkMzg0MGIyMTk0YzBlZTQ0ZmE5ZTNkNjJjNTA4NzJkNDczZmUxNDQ1ODdhZGU2NDUwZDM1YjQ1NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjEsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSJ9" + }, + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L8-L24", + "version": "repo-lines-v1:sha256:687fcd682be89321b60a595df9986db7ca2ec1146bffd73b73ca41a9aa09ad73:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2ZTYxZDE4YzU5NzViYTYxMGJkYzNiM2M3MjE5Y2QzNDRkZWVkODU0ZmQ5MzNiOWRmMjgwMDVjZDA5MTRlMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQxMjQ5MmZjMWJkOGUyZWYwNGNhZjBkNDgxMDI2NzRlNDc0ODY4Mjc2YTI4YTM5MjFmNzM1OGQzMWQwZDMyYmYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ5ZDk1OWZkMGVkNDIzMTVjZjE2Y2Q3MDkyMjc1YjVjMDVkZGMxY2I5ZWYwOWU1MmNmODg3NTQ3Y2NhMDNjMGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM5ODU3ZWJlMWY2Y2QzMWQzM2FjYzc3MzQ5NTNhYmNiYzdhMmJkZjhmNGRhY2UwMzE5MTRlNmFkZjQxMjY0MzYifQ" + } + ] + }, + { + "id": "claim_c76c97bac89a4673bb24d25124b7e91a", + "statement": "Reprocessing policy can be set per pipe or as the service-wide default global_defaults.reprocessing_policy, whose documented default is continue.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L205-L214", + "version": "repo-lines-v1:sha256:7cf277abc90a23038d7b5f9d16f7f38b2bafb172e0353d21633709bd7de89042:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1ZDU5ZDQ3NGU2ZTAzOTQ3NmFjN2ZiODA1M2Y4MmQwYjNkZDI5Njc5OWQ5MWJmZDQwMTVhMjNhYWZkYjdjZTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3MTVmNzJjZDM4NDBiMjE5NGMwZWU0NGZhOWUzZDYyYzUwODcyZDQ3M2ZlMTQ0NTg3YWRlNjQ1MGQzNWI0NTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFkYzBkZTMwNmY2NTY1OWFjNWQ3YWIyZWJmNDRiODQ1ZmEyMDIxMTMxM2FlMzNjNzI0M2E4YzkyZTJhYzdhNzMifQ" + }, + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L44-L51", + "version": "repo-lines-v1:sha256:49721936dbd9f05108f09516247ef781b0bd5696ee2ef2a777179e7839ff1d65:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODQ4YWM4NjZiYTI0YThhZGVmOTkyMDQ0MDlhYTEyYjk3ZDE4Mjg1MDQyNjdlNzFhNGZhZjBiMDlkNjQzZDlmNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjcxNWY3MmNkMzg0MGIyMTk0YzBlZTQ0ZmE5ZTNkNjJjNTA4NzJkNDczZmUxNDQ1ODdhZGU2NDUwZDM1YjQ1NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjEsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSJ9" + } + ] + }, + { + "id": "claim_f1e33813fd5a41069a87d8025fe3d4ab", + "statement": "The pump API separates starting a normal run, starting a rescan unless already running, and reset-rescan, which makes the next rescan restart at the source beginning instead of resuming an interrupted rescan.", + "evidence": [ + { + "resource": "repo://hub/swagger_public.yaml#L519-L555", + "version": "repo-lines-v1:sha256:8255e0a94c33fabc4c00a5823c1f82d4db794f762cc291b74b59d2d6b6c8a66d:eyJzZWxlY3RlZExpbmVDb3VudCI6MzcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjN2Y2NWM0MDNiZGM1MzRiZmQ4NGU5YTNmYjEyNzhiYTFlOTUxYjQwZTUwOGZjOGM0NmU0OWQ3OTc4MDhhNGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM1MmQxZjM5MzYyZWIyZGU2YjJjZjM4YmM5NDIwNjVlYmY5NzdiNTY2MGNkZWU1NmQyYzNkNzBlMThlZjRlYzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYyYjBmNzM2YjkyNzY1MzkzNmQ2YThkMjMyOThiY2E3ZTllMzAyOWE0ZTBhNjllZTE3MmZiOGE0MmZjZTE3ZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc3ZTNhYmY1ZGVkNzBhZGM1MzRkZGE1MTNjNDY4MmI4YmYzZmZhMTE2NTNkNGVjMGY2ZmFmYjcyNWQ3YzNkNmIifQ" + }, + { + "resource": "repo://hub/swagger_public.yaml#L607-L611", + "version": "repo-lines-v1:sha256:ff499046dfe5b11221599b3d5d151d7a446f9cce10cc54ee11c09d159a4381d6:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGNkYmZiODA5NTE0NThhZDhmNmNlMzNmNGYzNzY3YWUzNDAwNGYwOWY1NmJmYmEwYWVlOWVlNzRiNjMyNGU0YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGE4YWQ5NjU4MWUwNDU4MDUwYWEzYzc4NWE3N2E3NTQ0M2ZhOGY5NDkxZGRlYWM5N2EzMGQ2ZjhlYTZiMmI5MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTQyNzE2NDJkNjA1YTQ2NmUzMjUwMDcwZDVjZWY2Y2UxYTBlZTZkOTFmYzMzY2FiMzFjZDg0ZDU2NWRjYjBmOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTNkNDE4OTgxOTU1ODI1M2EwMDkyNDNlZGNiZGIyODRmZWFjYTY0OTE2Njg2OGJhMjkwNjE2YzlkYTJmMjA2NSJ9" + } + ] + }, + { + "id": "claim_66b0575d60764303a61952f8a9a175ff", + "statement": "This repository's PR workflow installs documentation tools/dependencies and runs make html; the Makefile uses Sphinx with SPHINXOPTS defaulting to -W and generates contract documents for the HTML target, not node-backed Sesam client tests.", + "evidence": [ + { + "resource": "repo://.github/workflows/pull_request.yml#L1-L24", + "version": "repo-lines-v1:sha256:ab2d94a14754095e30394af009c769acad0193ea609c92644e1643ab8d158696:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVkZTM0NDY5ZTI4OTkzNDNiZTBhYzNkOWEyMWM3ODI0MTY3OGVjMzU1Y2M2NWUxNWE1YjJiNTE3ZGYwMjRiYzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEwMjgwNmI3MTI1NjI2NDA4NTU0YWFlMzE2MTkwYjYwMDk2YmE4NWJkNmMwYzJkN2EyMDRmYzlmNmYzZTYxNDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://Makefile#L10-L26", + "version": "repo-lines-v1:sha256:d5b2b2d704e37ab68b30143b7fc2ccdbcac80e58733d4c48f04fa3e49941cb1d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE1ODY4YTM3NWYxODBkYTFkM2Q0OGI1YjE3MzFmMzY3MmM5MDIzMDRkZjhjZDMxMWY4Nzg0OThhNTIzOTE2MmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI2OGZiOTMzNmE3N2E2YzBlM2NmM2Q0NjBjZWMyYWNkOGNkMzMxNWNlZDE1Yzc4ODQ4MDI5YzAxOWY3MGNiYWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdjMTRkZWU0MmZkZjU5NzgwOWFiMWU3MGRlM2IzYzI5NDg0MzEwZDdjYmMwNzU0ODdkYTRmNjBmMjMxYWQ0M2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImExMWEyMjgwYWQ5OGVjNzNjNjYzMGYwZWI0NjIzN2NmMmRjMjE4OWRiMmE1YjYxMGE0YmY4NDkxMzgyMDUxODcifQ" + }, + { + "resource": "repo://Makefile#L62-L101", + "version": "repo-lines-v1:sha256:c398193f412c09dc91d89bdcb05a981d96ca60a61b39618abf4045996f140918:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4OTM4OWVmMmRjYjE5YjZjMjRhMjU4NTU4YmZlMGMwM2E4MjY3N2M0ODU0OWU3N2U3YWNmM2M3Mjg3ODI1NWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1MzlkOTIyM2U4MGYyNDkwNDhmZDk2YjQ2MTExMWQ2MTVlMDVjMGZmNmE5MzZhOGUxMjYxZTk4MTRhZjZmMjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc1ODYxOGM5NmZhZWNlNzBhMzkyOGVjMTYxOWZmNDk0NmVhNDJjZGViZWZjOGE5OGI0NTc1NmJiZTcxNjhmNDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIxNDEwM2Q4NTEyYjA5NGZiZDY0ZTk1NmIwN2NiZDg2YmNkOWRjZjliYTI0M2JjYzgyMjFiMjE1OThkOWFhMTYifQ" + } + ] + }, + { + "id": "claim_c91dae4c787c405582931fa10eaca57f", + "statement": "The README's documentation preview workflow uses make html and _build/html/index.html, with SPHINXOPTS= make html_no_saas as an alternative preview command.", + "evidence": [ + { + "resource": "repo://README.md#L1-L35", + "version": "repo-lines-v1:sha256:ae44a4ec5abe7bba90c99290987dce31ebb624e26dd6054616c728fa550544e3:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhNmRmM2U0MmQ0MGU2OTM5MTQ4ZGZiZDNjY2E2Y2M2YjA5Yjk2N2Q4NGJkZDk5M2EzNzRkZDUxYzU2ZWI3MWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkN2E1MTVjNzRmOTkwYmEwN2FkNjcxMWFkOTY2YTU4NzIwNDYxYzAyNDZkNjAzMjdjYmUwM2ZmYjU0YTIzOGEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_97f3cf0e2f3e42c9a6ad48815d8de7d1", + "statement": "The repository's master-push workflow builds and publishes a documentation container and deploys the docs Container App; neither that workflow nor the PR build workflow invokes the Sesam client to validate integration fixtures or drain pipe queues.", + "evidence": [ + { + "resource": "repo://.github/workflows/merge.yml#L1-L66", + "version": "repo-lines-v1:sha256:962057d689690ebd65f24686ccc8984844fa1548a615094446ee787cbc8414db:eyJzZWxlY3RlZExpbmVDb3VudCI6NjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkyNWM4MWI2MzJkNWI1YTYwMjJjNTliNGI1MzE2ODAyNTViMDUwYmYyNWIzMjE1Nzg3MzI0NDVjNzMzMzhkNjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFiZmU2ZTMzNDIzNzcwMDA0ODA1ODNjNjMyMWJiNzNiZTM5MmIxZDZmZmNmOTA2NDAzOTQ0ZDljMDNhNDIyZjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://.github/workflows/pull_request.yml#L1-L24", + "version": "repo-lines-v1:sha256:ab2d94a14754095e30394af009c769acad0193ea609c92644e1643ab8d158696:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVkZTM0NDY5ZTI4OTkzNDNiZTBhYzNkOWEyMWM3ODI0MTY3OGVjMzU1Y2M2NWUxNWE1YjJiNTE3ZGYwMjRiYzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEwMjgwNmI3MTI1NjI2NDA4NTU0YWFlMzE2MTkwYjYwMDk2YmE4NWJkNmMwYzJkN2EyMDRmYzlmNmYzZTYxNDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/workflows/bidirectional-synchronization.json b/openwiki/.claims/workflows/bidirectional-synchronization.json new file mode 100644 index 00000000000..123c2fcfd00 --- /dev/null +++ b/openwiki/.claims/workflows/bidirectional-synchronization.json @@ -0,0 +1,800 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:d90bf37578440d2c412c6c303b1e92af5c174199fcf7c97e7d8f34561990e2d4", + "claims": [ + { + "id": "claim_e29fec39f5a94c62bc32298b5e82f747", + "statement": "Bidirectional synchronization uses global golden records both as the result of collecting contributing systems and as master data propagated back to those systems, creating a feedback loop that requires duplicate management, source-integrity checks, and completeness ordering.", + "evidence": [ + { + "resource": "repo://hub/bidirectional-synchronization.rst#L9-L50", + "version": "repo-lines-v1:sha256:5530ed94d147f9f76a2eb5babfef1ff805756fd51f934ae1a478b8347acf5692:eyJzZWxlY3RlZExpbmVDb3VudCI6NDIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2NDc5YmRiY2QxZTBhZTUzMjk3MmQ2ODA3M2I3YWFhYjE1MTg3NjEyMzJjMGQ4OTc2YjgxNzFhNTkwMDI2ZmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJmOWZmNGZhZDNlNzY2YTZkNjc2Y2QwMDAwYzMxYTc1MTdkMTg2YjU1MGRhNDljZmY5MDEyYTk4ZTU1YjQyZmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZiMmJkODg0NzRkZjc5NTg3MTkzYTA0ZTg2YzMwMmExNThhZDc0Yjg0ODA2Y2QyZWJkZWQ4YmNmMTVlMjc4ZDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM5N2IwOGM5NDM0MTVmMzVkYzIxNzBiYjg4YWU3ZjA1OGQ3ZjIzYjZmYTAzMjRlY2JhZTFkNzI3NTE0MGIyZDAifQ" + } + ] + }, + { + "id": "claim_673ad6041a5147f09682068e3443fa8e", + "statement": "The connector boundary is SYSTEM-DATATYPE-collect for output and SYSTEM-DATATYPE-transform for desired-state input; desired state preserves collect property names, types, and structure, removing property namespaces but retaining the namespace in _id.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L10-L15", + "version": "repo-lines-v1:sha256:9955ce2cff1e950e7c7d791f39f9edd3dfaf2091cf2e3aa4752c2bdaff47381a:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTEzM2Q5ZWY3NzNjN2JmMGQwZGUzOWJkYWEyOTc0NWNkZTk3NTI3YTAzNzIxYTFlNzdmZDg0MjI0MmQxYzQxZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDM2NTQ2N2UzODAzYWIwNzFmMjdiNjdmOWJhODEyOTA1YjA2ZGM1MjgxZTUxODMyN2ZhNWU4MmI0NjlhZTMzNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGNkMzk3MjMwZjNlZTkwYjVjMjNmNTc1MWM4NThlYmU5NGJiNjJhZWNjNGQ1ZTMyNzM5ODI0YjFiNzQ4MTBjYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGFkZDBlNjkyZTM5YWYxNmIxZTgxYjFkMDI2MThhZjM3MGJjNjRmYzFmMGNhOWU3MzU1YTVlM2UzYzI4MTk4YSJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L66-L76", + "version": "repo-lines-v1:sha256:188ccebb9c0646cf80470e42b11f56d1c2f2a13151856688dfc7e139b4b4196f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhNDgyZDRhMTY2NGM0MGRiYjBkMGYxNDA5ODlmYzhkMDgzNmZiZWU5ZDJmYzU3NGY0NGUyNjM3Yzk2ZjkzY2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRkOGY1OTJkNTYwODkwMmY2OWJmYzgzOWUyOTBmNzRlMTVlOWZiMDIzNTc1OWYwNzg3M2Y5NmU0N2U4Mjk5MDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRlY2I0N2QyMzcxNmJhYzEyOTIyNmI4OWFmOGU4NjQ4ZDMzYThiODYxZGZmYTljYTdhY2M5Yjg4MzViMWYzNjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhhZGQwZTY5MmUzOWFmMTZiMWU4MWIxZDAyNjE4YWYzNzBiYzY0ZmMxZjBjYTllNzM1NWE1ZTNlM2MyODE5OGEifQ" + } + ] + }, + { + "id": "claim_3ffb8b75ea3b4ea38d4992d514ba6ae4", + "statement": "Connector-collected data should stay close to the original API, connector-added API properties use the sesam_ prefix, and optional $last-modified records when the entity was modified in the system rather than serving as the dataset completeness timestamp.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L13-L35", + "version": "repo-lines-v1:sha256:b70c1ff3af96c736a6f0891384cc9b28d2fbdacec51ee0f7fb752f6024f1d9ed:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2ZDU5ZGY4NDg0YmRjM2RjNGEyYzNmYWRhYTk5MzMxYzAyMzJmNzc4N2Q5YzI2NjYxZmRjNTM2ODI5ODdiNjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQwNWE3ODQ3NjlkOWRhYjY5MTE0YjIxODk4NjljMmNmMTNiY2ZkOTEwYTRjMTc0NWMxYmQzNjdjMWNiZWFiMTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc4ZGE3YzAwZWJlMzA4MDViN2VhMzQ1NWRjNTY3YWM2NjZiOTA3ZTM2OWQyOWM5YjZlYTdlYmM5MDBhMDczN2UifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L53-L58", + "version": "repo-lines-v1:sha256:81cb0c695a5496a19ece3cb8cf3bfb91afd4023fe77a918173cac58e0dbb88d5:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzhjNjFiNTE0NTgwYjE0OTA3NmI2YThiODI0Y2I3MDQwMzdkOWU4YzBlMzY1OTdjNmY0OTRkYmViY2ExNDM0MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGM4MGU3ZDI4YTJmMGI5OTQ1MDljNzQ3YTRlMTcyN2UzYWM3ZDlhNWFmYTZhNTZmZjA2ODNhZGU5NjQxNzdlMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2Y3ZGJhNGQ2ZmFiNjU4ZmI2YzBjMmJmYTQ3MDJhNzJmOTRiZjI4MTA5MWQ3NmIwNDVmZjYxMGU3ZDQwZWY2ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDViMTgxZjllMDVjMzhjZWE4NmJlNDI2NDNhMzUzMjNjNmU5ZjdhY2Q5OGE2NjRmYjM1NWFmOGMwZmFiNTQ0MyJ9" + } + ] + }, + { + "id": "claim_b233769af5b0451bb3400ab9cdcc5503", + "statement": "Namespace splitting emits one desired-state entity per target-system member using that member's enriched namespaced _id; if no target member exists, it emits one candidate preserving the source _id as the future insert's origin.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L74-L76", + "version": "repo-lines-v1:sha256:348eb72c18e2425d4288c5f50b4098b09b2dd3ac056a1f087855764b74979198:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDQzM2M5NWI1Zjg0NzY2NGJjNTBjMjNkOWQwNTk5NzA2M2U5OWU4OWU4MmVhY2YxOTczYjA2YjgzOWVhN2FlZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGQ4ZjU5MmQ1NjA4OTAyZjY5YmZjODM5ZTI5MGY3NGUxNWU5ZmIwMjM1NzU5ZjA3ODczZjk2ZTQ3ZTgyOTkwOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTI3ZDM1OTViMzlhMmYxNmEzNjMzMTQ4MmJhNzhjZDIwZWM4YTE2ZGFmZGMzYWE0NzQ3Mjg0OGVjZjM2YmU2MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGFkZDBlNjkyZTM5YWYxNmIxZTgxYjFkMDI2MThhZjM3MGJjNjRmYzFmMGNhOWU3MzU1YTVlM2UzYzI4MTk4YSJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/namespace-split-pattern.rst#L26-L66", + "version": "repo-lines-v1:sha256:794922b370c91354f6d6b2d1a618919ba943671ee976742f99abc76fb9d0aa98:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkwY2UwYWRhYjdiYjM2OWNhOTAwNTMyYzk5MjVkNjhlYWFlN2U3NTVjNzNjZmExZjA5ZDA4ODVlMDM0NTE2ZjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZhZWU0MjFhNjk5NzRiOGIxMWZjMGIyYWNhNzg1MzM5NDI0MDZmNmQ1ODM0NDdmZjliMmEwNTk0NzU2MWEyOTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJmN2E4OTgxYjY2Y2E5YjM0YjRkMDc4Y2QzYjliZTkyMjQ0M2MyYTY3NmJjMTIyNjIzNTdjNTMzYjE3ZThhZWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRiOTZkNzc2MTg2MmY2ODA3ZGI4NDFlNjBlMTcwMzBiYjg4YTlmMTY2MWVmYWU0ZWM3OTVmMWUxNWE2ZDU4ZmEifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/namespace-split-pattern.rst#L6-L10", + "version": "repo-lines-v1:sha256:53f3cea7d06903bdfa045cf389a3a4cf2526062908107278ca2afb5300108772:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjg1OTBmODNmY2RjNmMzMzFiOTQwOTA0MDNiZDQ1OWViZmJkMjEwZTBjMTM3NDAxODQzZmJlNGY3MTg0NjQxZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTc3MTJmNGM5OTlmOTI3NDBkYTZmOTkxNjQ5ZGNlOGEwYjYyNjllN2IxZWM2MDQ0ZjJjYWY0MWNiMDgyNmI5MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjgyM2ZhNmRkMGJjYzYyNGI1ODA4ZmI0MDU2OWQ4MjY1MGQ5NTNiMjcwZWRkYzI4NjhkNjk1NGMyNWNiYzliNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjhiOTM0MTZkZDM1ZDRmODQwZDEyOThjNmFhNjI3NmIwM2Y2NzExZjQ5OGE3ZTJhNWJjYzIwN2ViYTVlM2RlMCJ9" + } + ] + }, + { + "id": "claim_2e2d48dc6ac44dc6b2bd8455c2916943", + "statement": "Pre-existing internal or cross-system duplicates must be identified and merged in the global flow using a suitable merge criterion; namespace splitting alone does not discover that sameness.", + "evidence": [ + { + "resource": "repo://hub/bidirectional-synchronization.rst#L58-L87", + "version": "repo-lines-v1:sha256:067879b8f36f1d06ef2656814d9c6ca18600da24a55533395d610a7c7e49ad38:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmMzhiZTY1OGY3MWViNjU3MDc3NzBmZTNlZTEwODEyZmRiZDI4ZDU1NjZlM2ZkYjY2ZTgyMWM1OTMwOWUyNjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkNDRjODE2ZjE4YTgzMTI1MDQwNzA5YjU5MWJmYmMzOGViMjFlODM5MjlkYjE0MWNmN2E0NjRhNzQ3ZGI0OWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImEwZmQ2Njc4MDk3NmU1NzQ5NjM2ZWZjZWUwZDJlOTRhZjBmY2ExNWU0NDAxMTY4NzQ0MjFmN2FjZmE3OWVlMmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY3NmQ1OWU0YjgzOWU2ZDA0MzVkMTQ4YTUzMDMyYWExZDAwYzUxMzY5MGVjMDgzYTI1YjBjNmM4MmFmYmZjOWYifQ" + } + ] + }, + { + "id": "claim_95b414579c8d43b2aa6a514d11e61085", + "statement": "The connector contract requires $ids to include _id and all other ids previously emitted for the object; it is required for inserts and optional for updates and deletes.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L89-L92", + "version": "repo-lines-v1:sha256:5430168ea115e7a15f4d1ac0b2e80f6681265ad707c6b5c5ab5b837ea6e0ef63:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2FkYWZhMTAyMGYzMGMzYzRlMGJlMTczY2IwYzBkMThjYTczNjA3MzViN2UxYWE3YWE5MzIyYjE3NmRkZDU0OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODBlMGMyYWM2M2QxOGU1MTJlODU2MmEwMTgyMjA3MzI4OWU4ZjNmYzM4ZDZmN2VkMzM3ZWY2YTI0MjU1OWQzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWQwYTFjNGE5MDU1ZmI3NDUxOTljMmEwMTFiMTExMWU4MjE5NzY1MTE5ZWFlNzdlMDQ3ZjE5OTY3ZTdiYTUwMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjBmOThlODljYmQ1YTZmNzQ0ZDQ2ZTcyYTcxZTA2Mjg4ODNkYmM4NWEwMWY5YTBmYjQzNDkzOWU1YjA5NWU3YiJ9" + } + ] + }, + { + "id": "claim_25f75de2ccc24a3fa6b4de3324be5d95", + "statement": "The duplicate hops block checks the share sink for a previous successful insert using historical $ids, disables track-dependencies for the lookup, and marks an already-inserted candidate with $discard rather than permitting another insert after identity changes.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/duplicate-hops-block-pattern.rst#L21-L36", + "version": "repo-lines-v1:sha256:752ef00ca8c1f522f5958deefe6753d60edeb804f1f2480f2187dba921c60aed:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4OTI0OWQyZjE2ZWUyOTI0ZThjYzBiMjViZThiMjVjYjk0OWIxYzI5ZjA3ODYzOWQyOTc0NmEyZjVlOGY4OGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY1OTllN2U0MjUxMmY1MGJhZTNmZTQyZWNlZGVkZWUzMGUwZWNlN2RlNWY2NWRjYjRmNTU1ODAxNDQ1NjNiODAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImEyZDAzOWQwZTM3N2E0ZDIwMGI0YjcxZjk1ZThjNWFiZGQzNjQ2ZWI4NzNjMjcwMjg4ZDg0ZWU4MDViNWQ5NzEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYzOTZkNGFhOGNjNTdmMTQ0ODlhZDgzNTE0MWIxNjgxNmZjZWQzYzBhZTcwNzMwMjVjNzM0ZTU4Mjc1NDg1MjUifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/duplicate-hops-block-pattern.rst#L6-L10", + "version": "repo-lines-v1:sha256:5a86c42d7053bdad7e6af576c20342776a51180c02db8a0edf8f4d2c587e4909:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGE0YTFjYWUyMjI1MmY4MjlmNzQxZWZmMjM4OGRiZTQ5ZTliMzdiMWU0YTJlMGNhYjRiY2Y3MGZlNGY4MmExMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2JiMWY4YzM5MzlhNThhZTNkYjlhYzE5OTYzZGI5MGZmMDM2ZGQxMTdkNzM0ZDkxNjg1ZDgzY2I5ZTllMWRhYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTU2ZjA2Y2ViZjAzMTMzMjk4NTNiYzkwOTc0YjE3MmQ3OWM0ZGMxM2Q5NmE1OWFmYWRmZjY0ODZkYmQwY2ZkZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjhiOTM0MTZkZDM1ZDRmODQwZDEyOThjNmFhNjI3NmIwM2Y2NzExZjQ5OGE3ZTJhNWJjYzIwN2ViYTVlM2RlMCJ9" + } + ] + }, + { + "id": "claim_94764032914749eab4fa7783e8d82ce4", + "statement": "A hops lookup into its own sink requires batch_size 1 so prior writes are visible outside the unflushed batch, and set_initial_offset onload so the pipe does not wait for its own sink to become populated; setting the initial offset defines populated state.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L46-L62", + "version": "repo-lines-v1:sha256:a5489e7a0ab74f0060ee4139cdae0608f0ec4281985d1176be95c3cd69b6ce89:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVkMDEyZDU3OWEyZjMzYWFmZGVmOTE1MzczYjk4YjIwMzBmNGI1NGEyNzYyYjEwNjIxYTIzYTM4MjlhYzAzOTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYyZTExZTcxZGYyYTViNzg2OTBmYTRiNTQxMjkwNWQ0NDk4ZGMwMDJlY2NjMzk4YzNjMGQ5NTkyNDY2NDdkY2MiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU2NzBmZjUxM2MzN2Q0NjU0ZDk1OWVmMjk0YWM1NmE0NTBmMDZkMmU5MThkMGExOWZmMzBhZjgzNzc1Mzk4ZDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMzZTQ2ZGI5N2E1NzAwZjQzYzIzNGM4ZDYyZDAzNDM2MTQwMzE3NmFjOGNjYjcxYjc0MDhhMzIwZjQzZWFjMDAifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L110-L114", + "version": "repo-lines-v1:sha256:8d32ec827f5f7dee45c45cd4f3852bef552101f13596fa6b3bdb4442a3e629b5:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGJlNDE0NDRiZTBiNzM5ZDgxOGYyNWQ3Yzg3MGNjMWU3ZWE3MTU3N2RhOGViYTgzZTM0OGFhMmY1ZGFiODUyNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTU4ODgyZTcyMDE3ZTA1MzhjNmUyOThmNDhjNmU3MThkYjkyYmM4ZDBmNTVjNTMwZjFiNDRjNzNiODA5ODRkMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODNkNDc5MjQwYjBmOTc4MzQ1ODQ1OGY0NTJmZTU1ODYzNzVhY2FiOWM4MzE0ODZjOWY2NWU1YThkODJiODY2YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGM3OTJkNTdhZTJlZWNjZjFhN2ExN2ZkZWEwNDJhNzNhZjg0NjU1Zjg1ZmI0ZWRjZjU3MjEzOWYyYTg0YjJlZCJ9" + } + ] + }, + { + "id": "claim_c68e148bbb5842438142ed70211b318a", + "statement": "Change tracking compares a new entity with the previously produced version at the dataset sink and drops identical versions, so it does not by itself prevent an earlier mutation transform from executing again.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L13-L17", + "version": "repo-lines-v1:sha256:e7af29acf9e0e6c206eebb2f1c9844b20dd7e82a83ff27374662e3da177f61be:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDkyMjgzNGZjZTljYjY0NDlkMDM2MWQxYzQzOTBiZmRiNGEzZTk3NTU4ODJmZWY2YTUxNjhkMWQ0MmFiZGM0MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDY0NDQ2ZWM3NzkwZGU5NGFmOGU4ZTkxNzk1OTZjMjg5NTgzMzYyNmY1YjIwZjZlZjM4MDVhZjVlMTExYTg4YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNGYzNTlkZGI5ZDY0YTE2YTYyNDlkNTVhNWZkNTBhZTY2ZTI2ODE1YjcxMjFhM2I5YTM5NzNhMjA4ZjQzZWZiMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzNjM2E3Y2NjYzMwZmQ2YmNiZWMwMjA5NzFlZjdiYzAyMjNhMDBlYWJhODVjZjYyOWU4ZmQ0OWRlMzIzYzExMiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L171-L177", + "version": "repo-lines-v1:sha256:ea11905a50d047e3c342903c9710cf6de1d22027c77ec1c1e85c0cd897c3acf2:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmFmN2Q1YTdmYWE1MDZiNjk3NjA1OGVmNWY4MzJlMDIzNThiZjE0NGQ5ZGJlMjUxMTJmN2QxYmJiZjkwNWM5YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGZkZWZlZDhlYzQ3ZWI3Mzc5OGI3MzYyOTdhYTFkMWJlN2Q0ZjQ5ZmI0MDYyZTMyNGU5ZDVkNTY1NDJiZDczYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + }, + { + "resource": "repo://hub/features/change-tracking.rst#L8-L20", + "version": "repo-lines-v1:sha256:cf8338331565e1b961c1c7ce67746011e07a13004a2a75b5c65a03987b61a5a1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk1YzM2ZWNiNDk3ZWYwZDEyZTU5NTYxMzEzMTU5MGJlMGEzN2NmODZhMjBkNTM2ODc1MTUyYzM4NTljZTRmNTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkMWZhOGVjZTk4Nzg5Zjc4ODZhNmIwZThlZWFkMTk1NDZjMzliM2FkZjE3ZDIyYzUxNTA5YmE4YWZlNmM2NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFmY2YzYjM3MzdhZDBmOGIxOTY5OWFiYzYwMzhiY2Y1YzlhMDI5MTJhZjViMGU1ZGUyYjFiNTlmNDhhOTUwZjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM1ZTI1MmVhYTA4MWY0MjdkMzNmYTFjMTFjYTk1YmE5OTk5MjA3MmViZDRmOGJiYzFiYWNhODYyZTViNTU3NWEifQ" + } + ] + }, + { + "id": "claim_ad2d1d66aa524cfa872900b42b328f6e", + "statement": "Dependency tracking can reprocess source entities when hopped-to data changes; the response-capturing mutation pattern warns against mixing dependency tracking into that non-transactional pipe, while duplicate-block and origin lookups explicitly disable it.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst#L6-L8", + "version": "repo-lines-v1:sha256:7029ab7f46142aac0227318451cd23b18e03f4d4e5417b96f068e1b3379f783a:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRiMWU4YmYwOGNmNTkzYjgxYTE1NmI5NGFhNzUwMjdkMjA3ZmI5MDcwMDA0ZGRhM2RiOGFmYTg5OTUzNWFjYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGY0MzNhOWE3ZTJhNjI5NGY4NzM2MGRiY2EzNDM4ZjYyY2U1YjFmOTY0NTNmNDUyZWIyNGE2YjRkMzE5MTVjZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTUwYzhlYzdlMDY1YWNmMjQ3MTBlOTJkZmJhYWVlYjljYjkyNzE1NjYzZDQ5MGU5MzM5YTMzNDRkNWUxZjU3YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTcxNGM0NTg4MjJkNjg4ZDYwMmE5MTdiMjU4ZmI3YjA0N2FhYmNjYzA5MGJkZWMwNGMyMWFjOTljMDE4M2MzYyJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/duplicate-hops-block-pattern.rst#L24-L32", + "version": "repo-lines-v1:sha256:2c59937089d2048e24524dcbee54f8d582b70d872a7407fb764ebba2e2dd60d1:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODY3YWVjMDM5YmRjMTFlY2RmNjE3OWFlYWU1NjI1ZjM4ZjI5NjE3Yzg4ZGU0ZTZkMDliYmM2ZmQwOWIyMjcyOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQ3OWNlMjE5ZjRiNWZhYjlkMGIwYzVhODNhZWIwOTBkZGRmMGQ2Y2EwNzQwOWNhYzhhMDg4MTUxOTUxYzI4NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTYxOGMzZmU1MGQ3ODQ5ZjEzZDJjODQ2OTA2MmY2ZDI5OWRmMTkyZDhhNDFhN2I2MjY1YzFjOGFiZGM0Njc0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWVjZmVhN2UxNjRmZDM3MzhhZmJlYTRhYmEzN2FkYWY3NmJlZDAxNjU1MWUzOGU5MWNhZDhlNjY5MWY4ZTk3YSJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/establish-origin-pattern.rst#L26-L31", + "version": "repo-lines-v1:sha256:03a43f3e28ba423a0c4dc9ef3a3da19c2760f125b6ae329290bb11a84adbce31:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDFhY2Q5OTA2OGMwNTlhZTI4Y2UzYmI4ODZjYTI0ODJlOWQ5MzRmNjA1YWJkZmQwN2Q4MDRlM2ZhYTI3MzFlYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzk4MDA1Njg0ZmNmMzA4YWQxNGQ3ZTgyMzQxNzk2NTYzMzFhZWRlZDVhZmQwOWI0ODgzNjdiY2Y4NWZiMjA1MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmI1Y2Y2ZmY2M2U2MmFmMGZlNzg2N2FkNWI1NGE2ZjNiMDFiNTYxNzI1NzAwYzZjYWQ2ZmIzNDJlZGU3YzdjNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWVhOWRhNGUzYmJjM2U5MTk5ZDEwZTlkMmNhZTg2OWI4YTdmMTkyMWY2OGQ1MDM2NjVmYTExZjgxMDNmMTY4MiJ9" + }, + { + "resource": "repo://hub/features/dependency-tracking.rst#L8-L14", + "version": "repo-lines-v1:sha256:752f9ae994e38b757195dcec312457813f6ed823de4486cff9a14aae1b61267b:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUzN2VjNzZlZmRiZDZlNTU3ZjQ4MjFkNmEyMWM4Y2E3YjBjYTdkNjdiNmNjNzIxYTBjMjI0YjU1ZmM2MDMxZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDYwZjVhODVlZmEyYmE5NDM1OTViYjFiYmQwMTZhMDVlMzk4MTljOWZmNGNjMjFhZWQwNTM3NTdiNTc4MDUyZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzI0MGVjZWQ1MDEwYTQyZjEwZDcyZjFhMDU5YTA3ODliN2NhZDVlN2E1NTA1MTFkYzYzM2FkYWQ5OGU3OTQ0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWUxMGM2MDA1NjAyNjMyOTgzY2QxMTJiYTVjZWUxZWIwODkwNjYxYzczNDk0NWNhZjllMzVjM2QyMTk3MjY3YiJ9" + } + ] + }, + { + "id": "claim_f83b1e9400d24cfb8601b7e7b53ca930", + "statement": "When downstream logic needs an external write response, the capture-response pattern performs the mutation in a transform and stores the response in a dataset sink; an external sink does not capture that response, and the external write plus local recording is explicitly non-transactional.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst#L6-L10", + "version": "repo-lines-v1:sha256:69182b7ffd2e488cd4631a1c63f938f2234de997844440220ee17be74934e02e:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRiMWU4YmYwOGNmNTkzYjgxYTE1NmI5NGFhNzUwMjdkMjA3ZmI5MDcwMDA0ZGRhM2RiOGFmYTg5OTUzNWFjYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZThmZWI3MWQwY2Y2NDVlYmNhYWY5OTMwMDM2Yjk2MjNiMDFiYzVjY2M4NDhkMzNlMDZhYjMxOGM3MWIxYTZjNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTUwYzhlYzdlMDY1YWNmMjQ3MTBlOTJkZmJhYWVlYjljYjkyNzE1NjYzZDQ5MGU5MzM5YTMzNDRkNWUxZjU3YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjMzMzg0MzRiNmY4NjM3Mjg4MzNkZTg3MTUzNjhhN2I5ZGQ1ZGVjYmM4MzVkOWI5MzgzYWM3MDdmMTQ0ZTZlYiJ9" + } + ] + }, + { + "id": "claim_1616713ca2174ddc863f2c1172f27f1a", + "statement": "Insert batching can cause successful external inserts to be retried when a batch fails before outcomes reach the sink; the insert pattern prescribes batch_size 1 to reduce this duplicate exposure, not to create a transaction spanning the target and Sesam.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst#L8-L8", + "version": "repo-lines-v1:sha256:8f433a9a7e2a6294f87360dbca3438f62ce5b1f96453f452eb24a6b4d31915cd:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGY0MzNhOWE3ZTJhNjI5NGY4NzM2MGRiY2EzNDM4ZjYyY2U1YjFmOTY0NTNmNDUyZWIyNGE2YjRkMzE5MTVjZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGY0MzNhOWE3ZTJhNjI5NGY4NzM2MGRiY2EzNDM4ZjYyY2U1YjFmOTY0NTNmNDUyZWIyNGE2YjRkMzE5MTVjZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzgzMzBiYWY3YjI5NWI1MDcxMDA1N2FhZWViOGI0MDRiZmQ4YjlkMzJmOWIxOGZlZDIyYTBkN2QzNDI3OWFkZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTcxNGM0NTg4MjJkNjg4ZDYwMmE5MTdiMjU4ZmI3YjA0N2FhYmNjYzA5MGJkZWMwNGMyMWFjOTljMDE4M2MzYyJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L19-L22", + "version": "repo-lines-v1:sha256:beb9a8b84a5a91c9fe1d3d0052274e14ab271e3eb88baf717b5040c9dadad4c6:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzUzMDYyMTBjNzBiYjZmMjc1ODcyZTU1ZjEwMjUwOGIzOGI4MGE3MDNhMTU0MGRmMDhiODEzM2Y5MWY3NWY4MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDMxODQ3ZTkwMWY1ZWNhMWQ4NDFmYjk5NDAzODA3ZDk1ZmVjM2NlODIyYjVjYzdiYjQ2YmJmYzIzMzVkZjVlMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNWM0NTlmZjc1YzdjNGEzNTllYTc0ZjRiMDI3OWI0MTM5ZDQ1ZTgyMjc1ZDNhMzU2YWMzYTJjMTNmYWQyOTVjNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODg4ZTAyMGFiZDE1MjZmMDhhNWZlZjA3MDZkODQzMjgwNjk2MDAwZTUwZTUzMmU5MTk2Nzg5Mzc3MDdlZTU5NCJ9" + } + ] + }, + { + "id": "claim_eb7438fd26df4df8abbff9e9a2f50fb4", + "statement": "Establishing origin requires the target insert response to include its generated primary key; recollection joins the system primary key to the share sink's $generated_id and retrieves $origin so the newly created target identity can be connected to its originating entity.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L28-L30", + "version": "repo-lines-v1:sha256:44027409f83238649d4601bb19edadfb92b4d66de4044a293ee156d7f183f9f6:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTk4MDk5Y2MwNmE5MDkxYmYyZTY5NjkyODE0NmNiMmZiNjY0YTBhZWZiMjU0NzdlZWI0MmMxODllMzFhNmRkNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWJlZjllMjQ4NTgwYWVkMDRjYWM5OTcwMTQzNmQwMjg5NGIzMWRhNDI1ZTY4ZTRiZjAxYzc4ZDNjOTA0MDAwMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWQwYTFjNGE5MDU1ZmI3NDUxOTljMmEwMTFiMTExMWU4MjE5NzY1MTE5ZWFlNzdlMDQ3ZjE5OTY3ZTdiYTUwMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDVkMDNiMTdhMDE4YTM1NTg1ODMwZjVkZmJkZThjZTQ0MjhlMWU3ZWIyZWNmYmJlOWYwYmNmZmM2OTdjMDkyOCJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/establish-origin-pattern.rst#L6-L12", + "version": "repo-lines-v1:sha256:96b4487d39c080ffef5d67c687215ee36eed00b928c4fec5fc1a19edc336f88e:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzIwOTY1N2Y1ZmMzMDY1ODRhZGQ0NzgyOTliZTU3NmY4ZDlmYjUwY2Q0N2Y3NDQ5MjM1ZTM3N2YzYzU2OTY1OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjc3ZTE1NDYxODFkYTQ1YTIxZGRhNDc4YjMxYmU0NDBkMjQ5ZjQwNDdjZWM3OTZkODMwOGY2YjAwOGFjYzZmNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTMyYmIyMzkwZjk3NjdkNWZlNTA1YTVjM2NjYzZlOGExYWE5MGNiMjJiNDA2NDgwMzY0OTc4YjU2ZjI4ZDg4OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjhiOTM0MTZkZDM1ZDRmODQwZDEyOThjNmFhNjI3NmIwM2Y2NzExZjQ5OGE3ZTJhNWJjYzIwN2ViYTVlM2RlMCJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L39-L42", + "version": "repo-lines-v1:sha256:e5e411eff5b5b9471c4360070b75191cbd40e626012f584d5c4aa9ee88ce5a8f:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmRkNzNhYTk0MzIwZjEzMDFlZTVkODhjZGZlYzkyOGNjZjM0N2M0OTQ3YWM5N2YwMzMzOTBjNmMzNGE5ODIwOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQ2ODQ0OThmYmY3YTYzMjY1ODhhODkzMzU3ZmYwZDRhODA3NDU5MmM2MDEyNDliMWQyNmE4NzUwMzg0NDQ2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTViMDE1ZWM5OTgxZTgyMThhY2VhMGE1YWVlMzE5M2YwYTgwMDZkYjRhZWNmMTIzZGU1ZGI3OGI5NzBjMDQwZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmIyMzExMGM0YzY1YzRjYTQ4ODM2NjViMjQzYmU5NmU2MmZlNmM2NGRjYzYyYmYxNGUzMjBhNTMwOGJhYjIyYiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L54-L57", + "version": "repo-lines-v1:sha256:b80199a380313d279797c15c9893590a932e8aaafca6a998942524d912af36bb:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDE3OGU4NDgyZmYzMjQ3NzBmNThlOTc1MDZjZGM0NmJkZDI1MDIzN2RkOGYxYjA1YzIwYzA4ZDUzNDI5YTJjMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGJlMGVjNzMzYTliZjFhYzBjYmUwMjMxNTE2MDI4ODI2ZWIzMWQzYzRlY2UwMDE5Mzk2MDBmOTkwZDQ0MGYyNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWRjM2VhZmU3OWViOWI0MjRjZjgxZmY5ZjVkNTQ5MTYyODg3NWFlNWJlZDc4ODllYjYzYjU5Zjc0NGJkYjExMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWNjM2MzMDk5MDYwNzM4NmQ3Yjc2NjU1ZDJlNjg2MjMwYmI3N2ZlNGEzMDNiZmU3NTA5NjY2MWM1MTBjMDFmZiJ9" + } + ] + }, + { + "id": "claim_8fad3260ee9d4ca98913c45b2ce30622", + "statement": "$origin is opaque and managed by model mapping; share passes it through to its sink, and contract prose says a missing $origin on insert is an error even though the field is optional for entities originating in that target system.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L105-L108", + "version": "repo-lines-v1:sha256:948780e87f82e0a6e8093deef46afdb8d98751b5d0e101a142017452c56091a2:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTk4MDk5Y2MwNmE5MDkxYmYyZTY5NjkyODE0NmNiMmZiNjY0YTBhZWZiMjU0NzdlZWI0MmMxODllMzFhNmRkNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODYyMDNhZDhkNzIxNWI1YTJmMWY3YTk0ZGUzNzZjZjYzYjg0OTM1MmMyMzkwY2EyZTc5NzVkMWQxMjE5NjUyNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWUwMTI1OTU3ODRjZjk3ZGVmOTY0MGQxYWUwMjk5NTU2ZDBjMmMyNGZiZmE2MzBlZTJjZTgxOWZiNTM2YmM1ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTJlMmY0YWM0YWM0ZjU0OTEwYjFkNzg5NDZiNDJkOTY4ZmI3NGQyMDZiYWNhMDhhMWVjZDRjNGVlN2U4YzQ1MCJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L28-L30", + "version": "repo-lines-v1:sha256:44027409f83238649d4601bb19edadfb92b4d66de4044a293ee156d7f183f9f6:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTk4MDk5Y2MwNmE5MDkxYmYyZTY5NjkyODE0NmNiMmZiNjY0YTBhZWZiMjU0NzdlZWI0MmMxODllMzFhNmRkNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWJlZjllMjQ4NTgwYWVkMDRjYWM5OTcwMTQzNmQwMjg5NGIzMWRhNDI1ZTY4ZTRiZjAxYzc4ZDNjOTA0MDAwMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWQwYTFjNGE5MDU1ZmI3NDUxOTljMmEwMTFiMTExMWU4MjE5NzY1MTE5ZWFlNzdlMDQ3ZjE5OTY3ZTdiYTUwMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDVkMDNiMTdhMDE4YTM1NTg1ODMwZjVkZmJkZThjZTQ0MjhlMWU3ZWIyZWNmYmJlOWYwYmNmZmM2OTdjMDkyOCJ9" + } + ] + }, + { + "id": "claim_c923ba95a3534b8d8a97e97e8e252521", + "statement": "The older insert example illustrates an alternative reconciliation layout by storing generated _id and original_ids in the insert sink, obtaining sesam-id during enrich, and including it in connect equality_sets.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L115-L137", + "version": "repo-lines-v1:sha256:333cf915fdc24b35e44691581c206c99c2b5436e66b9077c9955ae56f80a087f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxMzk5ODY4MjViNmY3MzVhOTRiYzAwYzQ0ZjI3ZjRmMTUyMTZkYmI3MjRlNmFlNDg1OTgwMDg3N2U0OGEyMDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY0ZTRiODA1YjU5NTgxZTJlNjhkNTJiNzM2ODhkMTc4ZDM1NjcxZTY3N2Q0YWNkZTQ2YWJkMWU3NGQyZWY1MjkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYzYzFkZjljNDAwYzhjZWRiZDQ2NjE3NTBlMzg5NzE3NTYxZTI4OTQxZWI3ZTc5YWQ0OWJiNTQzMmIwNDAyYTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM2M2Q1MzVjZTM4MDYzZDZiNGM1MWQ4YzM4NmE3ZjliM2U1ODBhMTRhMTBjMDdiMTk4ZGZhZjE5YzkzYTNiZmUifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L94-L100", + "version": "repo-lines-v1:sha256:90f9ec2415fe69f8194906cb3e57ff185719ecf0336caa09e60b0c3b0d15391c:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmUzYTdiZGJiOWNjMTNmYTQyYzk4ZGJmODhhMWIwNjhkM2JjNTJmM2U5ZjE4NzFmZGQ0NWI4ODc0YTgxYmFjOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTY1MjQwYmRlODgyMGQ0NWUzMWFhM2YyODViYjY3ZTQ5YzBjNWFiY2RhNDZlMzNjNjg1NTUyMzBlMzA2YWE2ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTZhMDU3Y2QzOTcxNzZmYzUwNGRmN2MyNGY3NjkwMjA0YzA1ZjFmZjQxMTI0MGI5ZGQ2NzA4MDM3ZmIzYTRlNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjcyODIzNDk2YzJiNzVhYzcwZWI0MTA4MGYwZDlkZjM5ODNlYjQ2MzRiMTVlN2M3MGZjYmRmYzgzM2EwMTgxYyJ9" + } + ] + }, + { + "id": "claim_51eb227f1e534353821304a485d32d16", + "statement": "The capture-response example classifies 200, 201, and 204 as successful insert responses, adds $error error-insert for other statuses, extracts $generated_id from the response, and includes a trip! check for an incomplete or missing generated primary key.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst#L54-L75", + "version": "repo-lines-v1:sha256:4d83fcf4ff6833c5562b5560aacd9a1e23c61db3911cc33d2d8978bf5329582a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI3Yzk4NmRkNDUxMjM1MmM3NzBlZDcxZmI4NjUzOTM3YWFhZmQ5MTkwN2E1OTgwM2IyZDgwYWE0OWQzZWI4ODkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2OTAzZTBkYTA5YTgyYzFiNmZkOWYwNDE0Yjg2NzNlZTE1ZDY4MDM3YmNiNDk1OTA1N2VkYzQ2ZjIzMjMwZjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjEwYmZjNzk0ZWVjMmJlODRkYTQ2MDkzMmMxMzc4YTg2NDgwNjVjN2I1OWZmMWJhZWIwYWIwY2UzODcwYTYwNmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ2ZGM4NGQ3MjM0ZmVkMGM2YzAwODU5MDM5ZDM0OThjODQzNjVmNTc2OWUxMzc1NjBlYzgzZGEyZDJjZGE5NzAifQ" + } + ] + }, + { + "id": "claim_0e3cc747ea104da8806eb3d053afaa8c", + "statement": "For updates and deletes the connector contract requires $based_on as Dict containing collected values for the writable raw properties, plus $based_on_properties as List specifying compared property names or dotted paths; both are disallowed for inserts.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L93-L100", + "version": "repo-lines-v1:sha256:a536dbf3cb4bc14d93368cf5ff94b5281098f3e7de36ce0cb67802ca418c1c28:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjlhNzEzMDRjYTlkNzFkZjZlNDEwNmFjODg3OTI0MDgzNTczMmE1Nzg4ODc5NGU0MWU3OWRmNmMyODNlNTUzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjEzZDQ5N2IwMjMyNDhmNDkwZTJiYzhlYWYwMjNjY2UxNjJhMDljNzhkYjA5ZWM3NTlmNDk3YWEwNTdkNDliZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmQ5OWEzNTc1ODM1ODA3ZTg0M2Y3ZTFjYzVjNWNjZDkxZGUwY2Q1NTAyYTdlYTk4YmEwYTFiYmJmZmZmNjE1NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzU2YzNiMmE5NTE1NWE5NDNmNjkzMjVlZTQxMDBiNzdkY2QwNTQxMTMzYWVkNzk3NGU2NmViYzFkMzExYTMzMiJ9" + } + ] + }, + { + "id": "claim_6a605e5f4d2144058ffabe9fcb8d1445", + "statement": "Although the contract's simple insert example has no system primary key, transform-share-rest also supports is_natural_key for keys not generated server-side and primary_key_insert for insert key fields differing from other operations.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L110-L124", + "version": "repo-lines-v1:sha256:c0e8678d27dcff6bc10126864adc47cdc87e5ba57a42d8c8ea114fc276112ead:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYyOWVjMWY5OTZmZTgzNDUxZGJlNTljMDNhOTVkYTUwNzlkZDdmMzc0OTQxM2NjYmRjNTg1YTkwZDdkN2Q0MGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNjYWM3M2YxNGJkMGRlODQ1N2NiYzllMDIwMGFhMjE2NGM5YzMyZGM1NzcxOWIyYWM2NDg0ZTU1NWRlZDg3NzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjllZDZlMWE0YWQ2Yjk2N2FiNDk1YTQ0ODk5ZTBiNmE3MTJiOGVlY2ZhODdlOWUwYzQ2ZWE3ZDI2MDYwODBlZDYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVjZWU3NjQ3M2JlNDJkODBiYzY1OTQ5OTc2MTBiMTMzZDMwZGUxMzMyZGEwYTJlMzAwZjYxMjcyYjAxZjYzYTcifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L257-L272", + "version": "repo-lines-v1:sha256:7cf7ffd34f3f222f10d2b2b0b6b9e5d8a55563e68f912c8297564042f5ae3f09:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI3Y2VhZmFmNDI5NTMxYTZlZWM3YjI5MThkMmJiM2E2ZTFjMDk0ZDllNDM2ZjBiZjZmZWMwY2I0ZDBmZTc0YzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2ZmJjYWI1ZTFkNDA2ZjdlNWQ0NmY4ZTEyZjQxNTdhNzM2ZWU5N2Q5Zjk2OGI0NzMxZGFkMDQxNGI4ZThlYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk5NzFhM2M3ZjFkYTFmNmYyNjlkZDJhZmIwMWU0MTQwMTkyZTg0NTlkMjA2ODE2NmVlNDc1Mzg2ZWM0YmFkOWYifQ" + } + ] + }, + { + "id": "claim_2fddaab9e4b74916b46dbafc40e85baf", + "statement": "The optimistic locking pattern looks up the current target entity and compares it with the last imported version, discarding a differing update until recollection; its example removes underscore-prefixed fields, serializes with json-transit, and compares hash128 murmur3 hashes.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/optimistic-locking-pattern.rst#L44-L91", + "version": "repo-lines-v1:sha256:1844a6890fca969425deae77958d7ebdc5d84020783dc9b904a6e948e9108c15:eyJzZWxlY3RlZExpbmVDb3VudCI6NDgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwY2ExMmIxZmQyMmRhNWM5NTI2YmRiNjMxMThmZmIwZGMxODA5NGI3ZWVmZjcyNWZmOTljNGY2OGExZDBjYjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZkOTQ5ODM1OTc3YzhlMmRhNWIyYjY5YWRlNzc0MmY0ZTMxYzM0NzQ0NTcxMmEzZGU1YWU4OWUyMmM0Mzk4NmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMyMTVkMzA3ZTQ4ODM2ZmZiMDU1YTAyNzU5YzdhYThjYzMzY2FkNmFhMTMzZGMyMzQwNmFmMmRiZjYzZDcwNTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYwMmUzZjZmMjEyOTgwZWM3OTQ4NjE4MGExZGJkZWU3Y2VlNmMxMWQxOTY0NzMyYjU3OGQ3MDQ2Nzg5ODJjN2EifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/optimistic-locking-pattern.rst#L6-L10", + "version": "repo-lines-v1:sha256:43397f85205babc585ebf6e64e2d829e7909bc8067f15ada0f3f8b8a19de229a:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDRkYmE5NmE2OGVkMDAxNmEyZmVkY2Q5M2E3ZjZhZmFjMjIzMzRlZWYwODAzMzRhZWUwMWE1MWY2Yjc3NzY0MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjQyZWM0NGYxMTExZTE4NDc4YjI5MDdkN2FlNzY1ODYzY2ExNGM1ZTE2MmQwNzNmODAzZTE0NDJlZTE5NGUwYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTU4M2ZlMjY3OWY5Nzk3ZmNlNjFhYWNlMTAxMGQ2OTA3ZDUxZDdmM2VhYmVlNTZmYmUyMzU1OTRiNGUzYzc2MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWJiYmU5N2ZmZTJhMWFiYjIyYjhiNWE0ODBiZDIyMWY5ODJjYWY4MTk5YmQ1ZDU1NGJlYjQ3NDk5NTkzMzQ3NiJ9" + } + ] + }, + { + "id": "claim_b7d8e8810eb44198b1f2a30e50806dc2", + "statement": "Sesam's documented external optimistic check minimizes the window for unseen edits rather than guaranteeing atomic compare-and-write: the lookup and subsequent update are separate operations, so target-side transactional or conditional-write support would be needed for an atomic guarantee.", + "evidence": [ + { + "resource": "repo://hub/bidirectional-synchronization.rst#L92-L98", + "version": "repo-lines-v1:sha256:79be05e36070bd44e807076d483391fb1c2edb1d09a6cbb487a250883d6e2f5e:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGJkN2RkMmUwMjlhMzEzMjI3YjAyZDE5ZjAyNmQ5YzY5ODVmZTNlMmM0NjE2MzFkZDU4ZjcwYzA0OTlkOGUyMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzU4MDFjYWJhMTIyYmY3ZTg2NjQ0ZmY4MTQyN2NmZGU1Njc5ZjI5M2YwNjU1ZDI0ZDdhMTZlN2ZlOGIwZGQwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjM1NjNiYjcwMzc3YzQxNWRhNjYwZTg1NTQ4NmRmNDliYWY3MDE5NGNiZTdhNGU4NGIwNGE1YmNhMWI2NzU5MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjk5YzQ2OGUwNWE5OWU3ZmI3ZmQ4NTQ5ZWZiYmZkMTI1NjJjZmUwMjIwNDBiY2Y4Nzc5ZGI3MWY0MzFmY2QxYSJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/optimistic-locking-pattern.rst#L17-L40", + "version": "repo-lines-v1:sha256:c11634ad4ba15780aa01e445853f9b9bd7aa32d2fe99a0e021cf922a7bb2cbda:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZDY1ZjAzODY3NWQ5NmEzNWZhNjYwY2JjMGIxYWIzYmU0NjVmODk4ZjZjYjlmYmI3YmI5MGNhODliNWMzMTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI5MjA0NWI4YzZmNWY1NzZhYWFiZGEwYzRjMTg0ODk1NmViMDAyYzIwZWE2NjQ2OTI0ODBkMTQ1ZGQxMmM0MGYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZhYjkwYjI1OGIwNGIyYTZkZWVmZTY2NWM4MjE3OTBmNjE4MmExZWRjN2ViMDE3MjRlYjY0MTRkNTJmODYzZmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMyMTVkMzA3ZTQ4ODM2ZmZiMDU1YTAyNzU5YzdhYThjYzMzY2FkNmFhMTMzZGMyMzQwNmFmMmRiZjYzZDcwNTUifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/optimistic-locking-pattern.rst#L76-L86", + "version": "repo-lines-v1:sha256:4e6138ac51f0c8362ac24dbaee147107b81d9014ae30b0949aa66eac1668d510:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdmNTc0ZDRhOGZkNjA5Y2I4MTkxYjNiNzg0ZTg3ZGIxZjVkZWFmZGE5NDEwOWMzMzkwZWE0ZjdlYWZmZTc4NTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjljMjFhNTI5MmZlY2U0NTgzZWI4MmY5NDAxYWQ1OTI0ZDM3MTI1YTY3NjhjZGZhZjVmMjFiNTIwYjA3OWVjZTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBlNTY1ZWIxNGZiODY0MDE1MGM0N2ZlYTIzMjI1M2NjYTdmZTYxNmEzZWVhM2I3MWNiZDY5ZmNkYzYzM2NiZDYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZmMDcwNGY3NTE3Y2U5YmRjZWRiNmIzZTViOWU4NjRkYTFlZGMzNjQ5N2RmY2E0ZDI5NDIyZDA0MWQzOWE5MWEifQ" + } + ] + }, + { + "id": "claim_93143dcadfab4fafae4e81e392fc8b2d", + "statement": "Updates may compare the current target state with the desired payload to avoid unnecessary writes, independently of comparing the target against the imported baseline to protect unseen changes.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L93-L95", + "version": "repo-lines-v1:sha256:f0f98e89cbd5a6f744d46e72a71e0628883dbc85a01f9a0fb434939e5b095e7b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjlhNzEzMDRjYTlkNzFkZjZlNDEwNmFjODg3OTI0MDgzNTczMmE1Nzg4ODc5NGU0MWU3OWRmNmMyODNlNTUzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWJjNWY1ZjQ5MzhhNzc4NjAzZWZlMWM3MDM5NDFmMTIyNTZkZmNmYjAwZTFiNmRhODNmZDMzNGUzYTQ5MzM5YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmQ5OWEzNTc1ODM1ODA3ZTg0M2Y3ZTFjYzVjNWNjZDkxZGUwY2Q1NTAyYTdlYTk4YmEwYTFiYmJmZmZmNjE1NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTQwYWQ3MmE5Y2VjYzFmMmJmOTI2YjkxNTM4ZmNhOGRmMzZkY2Y2NDA1ZGJmODk5Y2YyZmE4YWE0OTIzZTIxNCJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/update-pattern.rst#L1-L4", + "version": "repo-lines-v1:sha256:6544e22009ce5581ae93882282b81700d5875ff528b5db632f50a0e386722248:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2RlNTBjYWJlZDQyOGVhZThlZDNkOGRmMmM5N2JkNDRkNTkwNTJlZTEzODkwZmU0OTg0Zjk1MTVhZmYxZjhkOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmQwMDlkNmQ1ZGNhMjQ4MjVmNmM1NmRlMDEyOGVhNzE0ZmZmYTZhYjE1YWM1NTI3MTFiZjcyNjM4NTQzZmYyMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_be4986f2e171464ab150478a47de8418", + "statement": "Dataset sink enable_optimistic_locking protects Sesam dataset writes by comparing _updated against prior entity versions and rejecting all entities if any value fails to match; it is not external REST optimistic locking.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/optimistic-locking-pattern.rst#L6-L10", + "version": "repo-lines-v1:sha256:43397f85205babc585ebf6e64e2d829e7909bc8067f15ada0f3f8b8a19de229a:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDRkYmE5NmE2OGVkMDAxNmEyZmVkY2Q5M2E3ZjZhZmFjMjIzMzRlZWYwODAzMzRhZWUwMWE1MWY2Yjc3NzY0MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjQyZWM0NGYxMTExZTE4NDc4YjI5MDdkN2FlNzY1ODYzY2ExNGM1ZTE2MmQwNzNmODAzZTE0NDJlZTE5NGUwYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTU4M2ZlMjY3OWY5Nzk3ZmNlNjFhYWNlMTAxMGQ2OTA3ZDUxZDdmM2VhYmVlNTZmYmUyMzU1OTRiNGUzYzc2MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWJiYmU5N2ZmZTJhMWFiYjIyYjhiNWE0ODBiZDIyMWY5ODJjYWY4MTk5YmQ1ZDU1NGJlYjQ3NDk5NTkzMzQ3NiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L96-L109", + "version": "repo-lines-v1:sha256:ef1fcc3eecfecd346518b9da8682ef745d4b01e284c2a019d89393ce78cd8506:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE2NzUzYWE2MjMxNWNlYmEzOGE4Yzc0MTA5NjkwOTU5ZTMwNmY2N2JmOWE3MDQxMzA0NzZlMDk4YmJhZmIzOTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjExOGE1ZmRlMTcyY2FmODY4MjRkMGY2OTkwOWFhYmJmZDc2NmNkZDhmMmVmYzkzNTQxOTE0NmNhMTgyYzljNzYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY4M2FiMmNiZmIzNWU2N2VjMWVkZTU3MmUxYWY4NTlkNDE1ZGZlZTU5ZTUxYmI3YjM1NmUxM2RmODk4NzgwYTAifQ" + } + ] + }, + { + "id": "claim_04f98767d9d84967b148652354111da4", + "statement": "Merge source emits _deleted tombstones with $replaced true for obsolete identities after merging, whereas an entity actually deleted in a source dataset is emitted standalone as _deleted true; $replaced represents identity replacement and must not become a real target delete.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L101-L104", + "version": "repo-lines-v1:sha256:e00831bc215db9d967b99f1a4af145e59b3404fff40feb06d83b4fb516884d89:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWI0ZTdjMDJjOTBiNGI5ZmQwNjE5MDM3N2IyZGQ1MDVjMjU1ZjFmMTkzNTE4YTE5MGI2ZGM2ODVmNmUxNzI0NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZWMzYTA1YTA2OTQ5NTc3N2I2NGU0ZWUyMDhkMmI0Yzk5NGI2MDVlZjg3NzEwZDgzNjEzMjE3ZjY2ODFmOGYzYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTYyNzdjMDkzODg3YmE2NWNhODMxYWQyOTJkNDE5YmQzY2M3OGE5ODBjMjFjY2E0ZGU0NjJkOTlhYjJmNWYxYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2M3ODUxZjI4Y2U0M2UyN2Y5ODMzOGIzZmZkNGNkYTBhYTJiNGMwYjIyOGI2ZWNkYmYzOTk0NjhhMjg4NzljNSJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/delete-pattern.rst#L6-L6", + "version": "repo-lines-v1:sha256:4959ab218db8e2fffa4e67be3f71f55c8c0f117024e403ef330d24221795a5b3:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDk1OWFiMjE4ZGI4ZTJmZmZhNGU2N2JlM2Y3MWY1NWM4YzBmMTE3MDI0ZTQwM2VmMzMwZDI0MjIxNzk1YTViMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDk1OWFiMjE4ZGI4ZTJmZmZhNGU2N2JlM2Y3MWY1NWM4YzBmMTE3MDI0ZTQwM2VmMzMwZDI0MjIxNzk1YTViMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjM1NDAyNjI0YmE5N2VlOGNlNzUxNDIwMTM5MTAyZGNmNzk5MDNlMDljNzg4MTEyMjdlMjE0MDk3ZDA4ODFhMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L12-L20", + "version": "repo-lines-v1:sha256:038325c4ad691b5c16ec732eeed21c124a26547abf092e3a162c478f7c50ef7f:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODUwMWUwMWJhNzYzNjg3MjdmNGExNWJhYzA1OGY5YzFhNTY3YWYzYzA1ZWY4MGNhNGEwYTJiNzU2OTc2NDY2NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmQ2MTNmYWE0MmIwNzBhNzZlMGY2ZDhmMzUyYTM3MzJhYzA5NGRkYWIxMmI5YzAxYmU5NTExZGJmMTRhNjRjYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDA2MWZjOWI4NGE1M2U2MjE2YjM3ZTU1ZGYwM2FlNjk5MDIyMDA3ZmFjMjE5ZGQ5OTQ5MzE3MDU3ODEzNjczMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTU4MzkxNjQxMzgxMjIyN2M2NTAzYjUxYjFjYzA4OTJhNjIyOGUxZTVmYmMyZWMwYmNjZTZmMzhiZWY2NDJiYyJ9" + } + ] + }, + { + "id": "claim_6e6259f2b04043de8899c9704b42faf2", + "statement": "Deleted entities normally pass through transforms, so insert paths must explicitly discard them; the delete pattern uses a separate path rejecting non-deleted entities and replacements and preserves _deleted true when logging a transform-performed delete to a dataset.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/delete-pattern.rst#L6-L6", + "version": "repo-lines-v1:sha256:4959ab218db8e2fffa4e67be3f71f55c8c0f117024e403ef330d24221795a5b3:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDk1OWFiMjE4ZGI4ZTJmZmZhNGU2N2JlM2Y3MWY1NWM4YzBmMTE3MDI0ZTQwM2VmMzMwZDI0MjIxNzk1YTViMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDk1OWFiMjE4ZGI4ZTJmZmZhNGU2N2JlM2Y3MWY1NWM4YzBmMTE3MDI0ZTQwM2VmMzMwZDI0MjIxNzk1YTViMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjM1NDAyNjI0YmE5N2VlOGNlNzUxNDIwMTM5MTAyZGNmNzk5MDNlMDljNzg4MTEyMjdlMjE0MDk3ZDA4ODFhMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L34-L37", + "version": "repo-lines-v1:sha256:ffed3c2aee6aab7db1e940d1ea141e67a337ab72a048e38a57bad061b32a9f82:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTY3MzcyMTI3OTEwZjU0MjcwMjBjYjE5ZDliMTE1YWJlMmQwOTczMTYyMTgwMmRiZDA1MjQwZjVmNWM0YzVkNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjhlZTFlYjE3NTdlYTU5NGFmYWQxNzBkMzUwNjMyNTEwZmUxMWVlYmM4ZDk5YzQ1MmM3NzMyYTdkZjBjM2U0NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTI4NjJlMWJlMGQzYTMyMDFhN2Y4YTUzZTQ0NWRhN2FiYWJhNTE4ZmUxMWU4N2EwNDg5Yjc0ZDExYjkwYTVjOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGU2OTUxNDFlM2UwN2VkZWZkMDkxYzVmNzhlY2NhN2QwNWFiZmQxNTJmOGE2ZmRjYzM0ZTQyNzg4Yzc4YjMyOSJ9" + } + ] + }, + { + "id": "claim_cc116ce1fe1248a59d29910573e8f837", + "statement": "Verify-deletes protects against unreliable source scans by looking up purportedly deleted entities individually; the example accepts 200 and 404 and rewrites _deleted false on a 200, while circuit breakers are documented as insufficient for all scenarios.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/verify-deletes-pattern.rst#L41-L66", + "version": "repo-lines-v1:sha256:1a799260ec695b2c1a36294888614089e3a77408c386c0a29aac60f6e768e2e4:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmZjc2YzNjMDQ3NzgzOTViOWQ4ZjIwNDE1NGI4NWM1MzU0M2EyYWUxOTM4NjExNzBkMzg4YzIxMjM0YmQ5OTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI4OGRkNWE4ZmMwNGYyMTNiNDcxNDZhYzMyYTg5N2ZmYWQ3Y2M2ZmE2MzI3MThlYWJjNDk2NzQzNDg1NDg1MzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhkMDhiNGQ3NThlMDY5YzUyMDY5NDM2OTBiMzEwMWU4ZDI3NjdkNThiODQ2YmVkZmVjMDhmNGEyZDNmMTY0YjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYzOTZkNGFhOGNjNTdmMTQ0ODlhZDgzNTE0MWIxNjgxNmZjZWQzYzBhZTcwNzMwMjVjNzM0ZTU4Mjc1NDg1MjUifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/verify-deletes-pattern.rst#L6-L10", + "version": "repo-lines-v1:sha256:5b89340adb4a977ddf167e6e7a236ef58482600edd2451ffdc6e3e2dab6ac4aa:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2E5ZjM5NjQ0ZDFjNDE3ZjhjOTA1NzVkNzVkOTI3ZTE0YTg5M2JhNWI4YWIzM2M4NjA4YWEyMGU4Y2VhMGVmZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWQxYTJhMGNiNmY2M2FkMzVkNjVmMTVlMzY1OWY3MzQzMTFiNDZkZjg1YTNhYTM0NGIwMTQxNDNmNTAyNGMzMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODdkYWVkMDdlNjkxODc0YTFhYjMyNGEyMmY3NmIzNTQ3MjBhNWRmZGJiN2E1NmMyMDQ4MjkwZmFlYzE0OWJjMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjhiOTM0MTZkZDM1ZDRmODQwZDEyOThjNmFhNjI3NmIwM2Y2NzExZjQ5OGE3ZTJhNWJjYzIwN2ViYTVlM2RlMCJ9" + } + ] + }, + { + "id": "claim_ad6561fab65a48d3bb67ffcc833de503", + "statement": "Collect-template delete verification uses operation_lookup_delete with rest_system, rewrites _deleted false when the entity exists, and is documented as taking precedence over and not being usable together with operation_lookup.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/verify-deletes-pattern.rst#L73-L73", + "version": "repo-lines-v1:sha256:86eabe3f775e2385d2642b06ad35fbc3b1d809cae8008bef77e254f355bf19a5:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODZlYWJlM2Y3NzVlMjM4NWQyNjQyYjA2YWQzNWZiYzNiMWQ4MDljYWU4MDA4YmVmNzdlMjU0ZjM1NWJmMTlhNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODZlYWJlM2Y3NzVlMjM4NWQyNjQyYjA2YWQzNWZiYzNiMWQ4MDljYWU4MDA4YmVmNzdlMjU0ZjM1NWJmMTlhNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmQ1Y2U2ZDViOTU3YzQ2Y2VkMGUzZmNjZWNkYjE5ZmZkOTAzNTRjMTI4MmE3MTBkMjY4NGZiMTJkYTc5MzQwMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L129-L133", + "version": "repo-lines-v1:sha256:ecb5dbf90a48b610805664fb7c3c847b714d1fa222eb9b8afac50e5fa98e7006:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmY5MmI4ZWE3ZDhkODNjZTFmNTlkODM2YjhhYTViYjJhYTkxODYwNjhmZmU4MTI4OTEyNzJlZDJkYTQxY2Y4NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2Y3ZGJhNGQ2ZmFiNjU4ZmI2YzBjMmJmYTQ3MDJhNzJmOTRiZjI4MTA5MWQ3NmIwNDVmZjYxMGU3ZDQwZWY2ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDNlODNjYmZhZGM1NDhlMDM3OTNkZjBhMzk0NmYzNDc4MTU5YjQyZWVkZWJmYjc4ZDAyMTJjZTdmMTdkMjVmYyJ9" + } + ] + }, + { + "id": "claim_dec49e13b604469fb1c5083ee6fb3ebf", + "statement": "The delete pattern leaves handling of entities disappearing from an outbound subset as an open question rather than specifying a policy that safely distinguishes subset exit from real deletion.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/delete-pattern.rst#L6-L6", + "version": "repo-lines-v1:sha256:4959ab218db8e2fffa4e67be3f71f55c8c0f117024e403ef330d24221795a5b3:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDk1OWFiMjE4ZGI4ZTJmZmZhNGU2N2JlM2Y3MWY1NWM4YzBmMTE3MDI0ZTQwM2VmMzMwZDI0MjIxNzk1YTViMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDk1OWFiMjE4ZGI4ZTJmZmZhNGU2N2JlM2Y3MWY1NWM4YzBmMTE3MDI0ZTQwM2VmMzMwZDI0MjIxNzk1YTViMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjM1NDAyNjI0YmE5N2VlOGNlNzUxNDIwMTM5MTAyZGNmNzk5MDNlMDljNzg4MTEyMjdlMjE0MDk3ZDA4ODFhMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_15c65ae52e5347b385dc341f11d3c24c", + "statement": "On successful runs completeness propagates the smallest source/related-dataset watermark to the sink; inbound pipes use current time with an optional HTTP endpoint header override, and include_completeness/exclude_completeness control contributors with exclusion taking precedence and a fresh watermark generated if all are excluded.", + "evidence": [ + { + "resource": "repo://hub/features/completeness-feature.rst#L28-L32", + "version": "repo-lines-v1:sha256:ae21930d7c59c01ba523e9880f6589b1131398c82ea3883a168f51ee3e5fea7a:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjI1NGYyYTliNWNhOTE3NTQ3MmJjZTc5MTU0NGFmNjVhYTU1NzAzZDI0Y2M2NzM1YWY3NWM3NGQzMThjYmMyMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTQ5ZjRmN2E0MDNkNmQ2NDU0NjgwNzExYmE0MjcxYWFhYjhiYzVmYjdlNzFjYjhjMGExNDkyYjNhZDk3MjFiYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzczNmQ5OThkZmZjODk5YWFiYzM3YTg1MzBkNzBiODBlZjgxYzQ0NGRmYjM3NTk1MDE3ZTJkMDg2MWY4NjA0YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjc1ZTZiODRjYzVkYzFhYjAzMzhkOWFmODhiMDNmYTA4N2VmOTM3ZTZlYTU0NjdiOTE1OGM3OTFmMDFiMGM1MiJ9" + }, + { + "resource": "repo://hub/features/completeness-feature.rst#L54-L79", + "version": "repo-lines-v1:sha256:e0ce291a6e7120406c43c30ecf724c74f12d88e9d706aab5fba6ea8a9b90863a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMxM2U1NjcxNGJlZGI0MDgzODQ0NGRmMDZjYmFhODBmNTU1ZTU3MGViNTc4ZGNhMWE5ZjZmMmU4NTJmZjE3MmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIzODFkNTE4MTY1N2ZiNzM5Y2I3OTRmNDBhMzk0ZmIzM2Q1YmU4MDgxNDBhOWY1YzQ1NjkyZWZlMDFkYTI4YTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQifQ" + } + ] + }, + { + "id": "claim_ec83b8a150a54001a2db8ce38e3cee65", + "statement": "Dataset source initial_completeness checks only that every listed dataset has a completeness value; it does not check how recent that value is or compare it with the entity timestamp.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L79-L84", + "version": "repo-lines-v1:sha256:bbde38ee32db56402c63015c8c52687289a7e8041f0a5d887ab6e65ef3cc0d8c:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTYwZjhlNzM0ZjM4ZmM3Nzc0MmM1MzYwNGJmOGUxZWMxYTg0NTAzNzM3MDNlNDIwNGY4NTA5ZDdiN2NiYzZjYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDRjYjljMzZjYmU0Y2YyODU3NTliMzMyY2JkNzhiN2Y2YWM5OTAxZmI3YzljOGE4N2FkOTU2MjI0ZjgwYTA2YyJ9" + }, + { + "resource": "repo://hub/features/completeness-feature.rst#L34-L34", + "version": "repo-lines-v1:sha256:5cdf102b7b3f8772baab257d7569aa00082c02df5e712c4cf9350160b787aadd:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWNkZjEwMmI3YjNmODc3MmJhYWIyNTdkNzU2OWFhMDAwODJjMDJkZjVlNzEyYzRjZjkzNTAxNjBiNzg3YWFkZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWNkZjEwMmI3YjNmODc3MmJhYWIyNTdkNzU2OWFhMDAwODJjMDJkZjVlNzEyYzRjZjkzNTAxNjBiNzg3YWFkZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjU4Yjk1ZDc2ZjUyYWRkNmJiNzZkNWYzZmE3NGMzYzc0NmY2MDg0YzBlNDNkMGIxMThlOTQxODMxYjAyZTc5YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWQ3Nzc4MjRmMzc0NzhmY2JhYjFiNzcwZTM3MmQyMDZmNTc3ZDQ3OTA3MmUyYjkxMmMwNDc3MWY4ZmQ4NDk3ZSJ9" + } + ] + }, + { + "id": "claim_98c7103660b24b91a4521451b68c883d", + "statement": "require_populated_input gates running on populated input state, not completeness timestamp: dataset sources check their input dataset, merge sources check datasets or initial_datasets, and the default false can be overridden through global_defaults.require_populated_input.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L46-L60", + "version": "repo-lines-v1:sha256:6a70484c5f3e8b8e11c620da768637e3aa50e54aff71191506e805c2e1970f56:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVkMDEyZDU3OWEyZjMzYWFmZGVmOTE1MzczYjk4YjIwMzBmNGI1NGEyNzYyYjEwNjIxYTIzYTM4MjlhYzAzOTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFiN2FhOGZiYzk4YjhiYTBmNzhhNTIwYWNlZjA4ODE4ODJkNGM2NGI3OThiMWFmM2M0N2IyZjI3ZmRmMDk0N2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU2NzBmZjUxM2MzN2Q0NjU0ZDk1OWVmMjk0YWM1NmE0NTBmMDZkMmU5MThkMGExOWZmMzBhZjgzNzc1Mzk4ZDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU2YjQyYTM5ZDRkMTU2OGZhNDYzMTgxNDZjMjhlNzYwN2ZkM2NmNjkzNGM0ODE5NzMyNDI1MGJhMDY5ZTdhYTYifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L87-L92", + "version": "repo-lines-v1:sha256:0d06eac2294b68b2e1f9776917b7c862012fe6f10dde6d36bca5767009d57208:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2FkZjFhM2MxYzJhYzliZTU2YjE0OTIyMzE1YTY2MzQwNDcxOWIwZjgzZTJjNzFjNGVhZTg5NDIwNmY5NDc0YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODVjMWZjZjg0MjRmNDRjYTRhMjlkZTBhMGY4NmM3ZTk1MzM1ZTc0NTk0MmJhZjQ5ZDM1NjlmMjk1OWVkNTU2NSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L122-L143", + "version": "repo-lines-v1:sha256:8723ea0243378ccccb21669e3e388aace90418a14d2090f00eafefc892d5d09b:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyMjNlMTM0MmY0YzYxODQ3YzgzMWJmZDlmNTNmMjE2YTQ2NTRlOWNiZWUwYjZlMWQ0ZjBmNzAwMTQwNWQ3NjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2ZmJjYWI1ZTFkNDA2ZjdlNWQ0NmY4ZTEyZjQxNTdhNzM2ZWU5N2Q5Zjk2OGI0NzMxZGFkMDQxNGI4ZThlYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZjYzk2ODMxODgxMDhmMDM0YjcwMDk5NGJkZTY5OWJhYWVlMzc5ZmY3NDU5MzAwZjY5NTg0MTM1YTRiNGQzMDcifQ" + } + ] + }, + { + "id": "claim_f4206ad2026b41df9aeb4ac22d9668a8", + "statement": "Dataset source completeness true emits only entities with _ts at or before the source watermark, while an array selects the smallest watermark from specified upstream datasets to hold back incomplete source versions.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L53-L74", + "version": "repo-lines-v1:sha256:a1968a0bfcc9c973919d339ec615478bd35b676cfccd944064a20234d05c8053:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4YzYxYjUxNDU4MGIxNDkwNzZiNmE4YjgyNGNiNzA0MDM3ZDllOGMwZTM2NTk3YzZmNDk0ZGJlYmNhMTQzNDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJiZDkyODA5ZGJjMTE3MDk0MWFmMmVkZDdmMTBkODAyODYxYjc0ZmJhNmJiNGE3NGYyNDNhMzM2YzEzNDUzZTkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImIyZDk1ZjViZmRhMzEyYmIyOGQ3MWFlYWRhODk0ODNhMGYyYmNlMmY4YjQ1YWMxZjMwNDQ5MWE5Mjk3MThmMDIifQ" + }, + { + "resource": "repo://hub/features/completeness-feature.rst#L18-L22", + "version": "repo-lines-v1:sha256:ad20621d734cdbe6f2163a491a78e54e3190d9f0d6f2f6213b931ef026430357:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTA2ZmZlMjAzYjlmYjVjOTI1YmI5OTU2NjVlMjM3MDEyN2M5NDkyYTExYjMzYmRkODE1MTZlNzUyZDcwMjhjZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTk1OTNjNzg4MTcxNDM1YjdjZDI1ZGRlZDA3ZjU0NmYxMzZhZGMxMTBiZjZkMWRmNDk2NWYyNGE1MDkyMWFjZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWUwMDliNTM0ZjI4ZGRlZjRjNTJmYmNiYWU4NzFjMTFmYzA0Zjc5OGY4YjdjZGE5NDRmNzY5MDZhYmNlY2JmOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2ZiOTA2ZTY4YjMwNmU3NGUyMjVkN2I0YmE4OWJmNzA3ZTllZDVhYmVjNDk5OTk3Y2IwZjk3NWNlOTBiNTY4NCJ9" + } + ] + }, + { + "id": "claim_1a3fc208c2024e3cad9ccaa3155d4e90", + "statement": "Expression-based dataset completeness is evaluated before each pipe run and must return a datetime cutoff; a non-datetime result falls back to ~t1970-01-01T00:00:00Z, normally preventing processing.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L60-L71", + "version": "repo-lines-v1:sha256:29e4f7f227e1937f43bdf81a75057d19192542298bcf0471ab490688d10f1cab:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzMTBjMjEyNWJhYTYwOTEyODBhOGNmMmRjMjQ3NDY4N2VjMDEwODdhNmQ5M2EzYjhjZjg4MDY1NDgyMmI5NTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZiYTVhNmQ4NGJhZWU0Mjc2NzMzMGNhYzUxNzliODBjMWI5OWI3MzY2NTUwOTBhMmVmMDdhMjgyM2Q3ZTY2OGQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBmZDhhOWYwYTBiNjg4ZTYzZGZmMmU5N2Y5YWJmYTY0NzEwMjQxNmJkNjU0NzcwMGFlMjQ0ZTg3Yzk5NTZjMGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmNzA5NmNmMzFhYzMxMzVjNTZkODFlZmYxODhkNDRmMDI1MTIzODhkZjdmMDI4NDRiODRmNTBiZjdlOTM4NDMifQ" + } + ] + }, + { + "id": "claim_9a85f943799d4842bf2c5c8cf5ea992f", + "statement": "The DTL completeness function reads DATASET_ID's propagated watermark via VIA_DATASET_ID, so the value can differ between downstream paths and is null if a dataset is missing or the via dataset has no record of the requested watermark.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-misc.rst#L169-L199", + "version": "repo-lines-v1:sha256:16ee09895fa9dc37c5209165702452d2c1907edf7bd611839126a5915f341b11:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ1M2FmOTcxOTdiNGQ0MDMwZTQ0YjNjNjhiODVlNWRkMjllNDg3NDZkYTBmOTA0MTNkNDAyMDIxNzI3YjEzZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4MGEyYTg2NmIwZDk2NjQ2YTkwYTVjOTFmMThiYzIzNWJjMmQ2YmNjZmRmYWZjMTY3MTdjYjRlMThjZDliYTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNlMzE1ZDI0MzczMmFmNjEwOTc1NTgwNTFmZmM3YTAyOWVlZTQxOTEwMDRhZjRkN2M5MGRkZGY4NDdhMWM5YTIifQ" + } + ] + }, + { + "id": "claim_be05e15e04f840e0914eb8df75ea61ed", + "statement": "The bidirectional completeness example compares A-company-collect as known via global-location and A-company-transform-split, releases to now only when both are positive and the global path is at least as advanced as the split path, and otherwise uses a minimum/fallback cutoff.", + "evidence": [ + { + "resource": "repo://hub/bidirectional-synchronization.rst#L130-L167", + "version": "repo-lines-v1:sha256:67f30a8a298840010b05e616bd3aac1b7e58d53e2cc8b59f0400f364e6c19a6c:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNmYWQ3YWNkNWZiYWY0MmNlNzJmZDgxODQ1MGMwYmRkMWFlYjc2YTlkNDFkNmZjZTI4Y2NkMzNlZTJiZjIzN2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZhYjkwYjI1OGIwNGIyYTZkZWVmZTY2NWM4MjE3OTBmNjE4MmExZWRjN2ViMDE3MjRlYjY0MTRkNTJmODYzZmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIifQ" + } + ] + }, + { + "id": "claim_a253fd8a21134d03b1dab3ae92f20a6f", + "statement": "Completeness filtering during a full rescan can hide recent entities and cause dataset deletion tracking to delete unseen ids; deletion_tracking is true by default and can be set false when those inferred deletions are unwanted.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L140-L147", + "version": "repo-lines-v1:sha256:5541d7abd2fde800053d8b9bbb143d5cee60afcfee54c9e15fd50be11ae5d93a:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjg5MTc4ODhmYjgyZGVlOTgwYmYyYWEyMzAxOTE1ZDk3MDQ1YmE3NTExYWNlYzNiYTFkMjRkY2E4OTU2MWZmOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQwYjM2MmQ4MWNkMDhjMTYzZjM1Mzc0NTQ4NjI3Y2FjNGVmYWRkODA3M2QyZDA4YTc3ZGRhNjc3OTNiNWFhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDhkM2I4ZGE2YzE1ZTdjZDA1YTJiNmEyYTcyY2YzZWVkYjExNDFlNzhmNWE1YmRmODhkMjI0NGI3MDY0NGRlMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzViMmI1ZWNjNGY3MDUwNzc5NWViNTc1N2Y0YWZjOGQzMDZkZWVhYjcwNTM1ZThjYjAwNWEyYTE5OWQ0M2Y2ZiJ9" + }, + { + "resource": "repo://hub/features/completeness-feature.rst#L37-L39", + "version": "repo-lines-v1:sha256:931bfd27345f79e724c95d2b2da6fc0f600b98311088681ed2b9dd64bc976143:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTAwNDAxMjJiMjNhMzk0YjI2ZGE3YTdjODBkYTZhNTE4ZmE3Yzk0MjI5ZDJmOTk0Y2E2NWRjYjg5NGY1OWIwZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGMxMjM0ODk4NTM2YjU3YTk3OWQ2NzI4OThkNmQyN2Q0NTE1NDE1ODRmOTJhNDFjMWVhNWM1NDQ1YjU1YTQ1NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWI4YTdjZDMyY2U3MjY3ZjczOTBmNWY5NTM0MjBlYTQ2MjhlMDYwNTcwYWVjNzk0NmJlY2RkMTRjNmFlOTU0OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + } + ] + }, + { + "id": "claim_9e33af3581004c8093f11866c4a6852b", + "statement": "Connectors should hide API model and method asymmetry at the collect/desired-state boundary; parent or cross-datatype insert requirements can require additional share or preshare flows, moving insert responsibility and having recollection look for $generated_id in the flow that actually performed the insert.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/handling-asymmetry-pattern.rst#L4-L30", + "version": "repo-lines-v1:sha256:040ae79c96ff74a74757db43bf6fcd9c0807adba8c70084f7f0f56c557fdfb23:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkwMTZmOGE1M2E2YzMzMWI0ZTg1MWY2YmEwYTgwMWFlMzU1ZThkNTFjYTk3MjYxZDdlMjcyNmViMjhjMzY1NmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4OWFjYWY5OTNjYjkwNThiZTcyYzRkYjY2Y2U5YzY1Y2UxYmJmNzMwZDM4NjkyZDRhNWVjNjFlMjAxOTY1OTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImMyYjE3ZGE4YjAwM2Q1NWIzNzJmYWE3MjZjNjZhNTJmNDM0NDBjOGYxZWI2YTliYzI0N2NkYmFkMWRhNTg5NjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZiMmZiOGE1MmJmYTI0MjgzYjc3Y2ZhOTFjMzI2NzgxMDM1MWZlMzlkY2I4NzJiMmZiMDUzOTdhZTRjMjA5NzYifQ" + } + ] + }, + { + "id": "claim_8c530189ef9f441ca33dbd63d37d89a5", + "statement": "Connector hops used for symmetry or required relationships may target other datasets inside the connector but not outside it, and require caution because they can introduce loops and dependencies.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/handling-asymmetry-pattern.rst#L32-L35", + "version": "repo-lines-v1:sha256:8eb247bda19f91dabacd279e00e9c1960fe4635e9e938415b15cbb95959b4def:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTA0YjMzYjMxNjEyM2NhY2Q2YmE0NjE4MWNmMmU2YjhmNTE1OWQ5OGVmNzdiNDc0OGZjMGViYWMxNGNhYTk1NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2RkNmUxM2E5MDFkZWJkYzMxMzg3YzE4YzNlODdkYjY5ZGQ0NWI3ZTIzZGZhNjQyMzNiZGIyZjBmNDBkYTExYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODFmYjgzYWU0ODBkOGEzNTk0ZDA3NGI1NjU4ZmE3ZTdlMzU2MTdlOTM4MmFiMjk5NjU3NzdkN2NjYTJlNTVmNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjIsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzVhMTFkYTQ0YzgwMjQ4NmJjNmY2NTY0MGFhNDhhNzMwZjBmNjg0YzVjMDdhNDJiYTNjZDE3MzVlYjNmYjA3MCJ9" + } + ] + }, + { + "id": "claim_42f122db64b1425582c8ff5bf5b0c271", + "statement": "transform-share-rest is the documented CRUD and optimistic-check entrypoint with payload, lookup, and mutation rewrite extension points that should be preferred over additional transforms when shaping requests, responses, and key formats.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/share-template-extension-points-pattern.rst#L4-L19", + "version": "repo-lines-v1:sha256:a3fb086320c9f7d3f5e04309e11e65f1862040d6d0dda32e6b0f0094ac17a61e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhOTIxZDBmMGQ4ZDkxMWQwNzM1Zjg0ZTM2MDMyYjY4MjdiZjAzNzg1YTcwYzRkZDY3MWFiMTZlMWE0MjMxMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJmNTY3ZDZjOGM3ZjVhNjM3ZjRhMjAyYzNlN2Q5NTU2ZDYwYjdmYzg2YWY4YTFjNTkyOWYyMmMxN2Y3YTM4ZTkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjcwM2YzNjBkZDFiYmQ4NGE3MmNkNjlmNzJkZjVjMDQ1YTFlMGQ5ZTYzNWQ4MzExNjYyZDc1ZTE4OWU3NDJmZGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L206-L215", + "version": "repo-lines-v1:sha256:6408a1d7ba4590cca790bee10266555590a8b6ce2b6d46cbc38c6b85ed24d7fc:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmYWFhMTQwMWU0ZWI2ODBmNWRkZTdhYzBhNGUyN2FmMmQwNGZkMmJjNjRmYzRmZGQ3YjQzZDg0NGVmOTNjZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ2YzcyNzNhNDE4MzVlZGYxMWQ0NWU5OTFmMWMzZWNkMzFlOGZkMDY5YTZkMWUxYTk4ODIxMDM4ODI1MzkwYzkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhmNWZkZWZkYTBiODQ2NjQ0YjAxNjIzYjdkODRkYWRhMjJkNWU3NmE3ODc3MmYyZWY3NWU2MzkzNDAyNzQ5NzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVjYzNjMzA5OTA2MDczODZkN2I3NjY1NWQyZTY4NjIzMGJiNzdmZTRhMzAzYmZlNzUwOTY2NjFjNTEwYzAxZmYifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L365-L381", + "version": "repo-lines-v1:sha256:2afa1d98062e9c1c6737c5f9c26e06e81fff36ccc7bf0fdba83cbf162cd7982c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhOGJiM2I5NTgyNGNkYzE2YjZiY2JhY2MyMWFmODBlNTg0YWQ4ODY2YjM1MmI5M2JkYzk0NmViNTM2NjBmMWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY0MjI1YzQ5YjUwMmJmMzBkNGZhNGExMmI0NTJiNDU5ZjY1NmViMjcyNTc3ODFiMGE1ZDZkZThkNDI5MjhmZDgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQifQ" + } + ] + }, + { + "id": "claim_dd309683f5f54f63ab92a2878671b49c", + "statement": "client_side_patching true builds a complete update payload from the lookup result patched with the desired payload for APIs without patch support; it is client-side payload construction rather than an atomic target patch.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/optimistic-locking-pattern.rst#L6-L10", + "version": "repo-lines-v1:sha256:43397f85205babc585ebf6e64e2d829e7909bc8067f15ada0f3f8b8a19de229a:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDRkYmE5NmE2OGVkMDAxNmEyZmVkY2Q5M2E3ZjZhZmFjMjIzMzRlZWYwODAzMzRhZWUwMWE1MWY2Yjc3NzY0MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjQyZWM0NGYxMTExZTE4NDc4YjI5MDdkN2FlNzY1ODYzY2ExNGM1ZTE2MmQwNzNmODAzZTE0NDJlZTE5NGUwYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTU4M2ZlMjY3OWY5Nzk3ZmNlNjFhYWNlMTAxMGQ2OTA3ZDUxZDdmM2VhYmVlNTZmYmUyMzU1OTRiNGUzYzc2MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWJiYmU5N2ZmZTJhMWFiYjIyYjhiNWE0ODBiZDIyMWY5ODJjYWY4MTk5YmQ1ZDU1NGJlYjQ3NDk5NTkzMzQ3NiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L385-L388", + "version": "repo-lines-v1:sha256:4b89196e3a375e0b7fd0675455f58c8d306ea0f8a2ec84239f92aface89c555c:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmJlMmQ5YTg3MzIyOTQyNWM2YjAxNDliNjVlMGI3NGY4ODZkYTcwOGJkZTU2ODE1ZjgxNzZiNDU3MzEwZWRhYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2Y3ZGJhNGQ2ZmFiNjU4ZmI2YzBjMmJmYTQ3MDJhNzJmOTRiZjI4MTA5MWQ3NmIwNDVmZjYxMGU3ZDQwZWY2ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjhiMzg3OWE0NDM4MmI2YjliNWViZmVmMGJkNGI4OTBmN2UxYWM1MzVjODQ3MmU1OTMwOTFkMTQzYjg1NjQ0NSJ9" + } + ] + }, + { + "id": "claim_5bdc71d64c06475e8d749fff3594429f", + "statement": "The share-template reference separately documents legacy rules for lookup and baseline rewriting, a payload_property default of payload, and special $payload customization, so these documented identifiers are not interchangeable by assumption.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L281-L284", + "version": "repo-lines-v1:sha256:f97f050598e3a5a79f3347047f84ee570674fe0c25247498fecadfc74943bbab:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzg1NzhhNTk5ZDNlMjI2Y2JhYmE3OTI4MmZjZWM0YmMxMDZkMDY4MGI5ZjgwZjZhZDEyODYyYzdlY2RhNDZiNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGIzODViZmM2YzhjNzg3ZmExOTk0NGQ5OTQxZTNmMjY0NzI2M2QzYTVjMDhkZGRkNzFmNzU5Zjg5MjY4YWJmZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDUwNDJlNzFjN2NiZGJkYzc1YjY4NjJlNzI0NDgyOGMwYTIwOWJiODgxZWNjZGJkMjhkYTcwNGNjMmQyYTFjOSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L359-L369", + "version": "repo-lines-v1:sha256:9308089735f66bb62cad55dd0f4e2b8c468fef49321ad7df30a51145404540a0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI1OTQ4ZTJlZGY2ZThmMjYwOTBlZjNiN2FjNzBhMDRjYmI2NWU5MzgxNWQ2NzNhMDEzZjVhMWU4MzY3MWMxZTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUwZjA4OTE5MGM1YzU0MTFhYmU5NjdlYzhmZTY1OTJhYzBmOTIyZjg2MzViZWJmYjhiMTBjYzg0YjlhMDA0MWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY3M2U0NWM1NzUyYTg2ZWVkNDUzZDljYTU0NGNjM2RiZGQyOTE4NTc3NjAwZTM4YmI1NWRmMGY0MGY2YzllNjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L391-L406", + "version": "repo-lines-v1:sha256:5967cf1bddca2ae9610655dd0b0fcdcd8c2e7dd104a2595aa61a07d4294b3036:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjMWRjZDU5ZmQ0NjI0ZTQzODcyZTA3OGJhYWNhZTExNjQ1NjhlNGY2ZTc1Njc1NjFiNzBjZjk4NzQ3YzM2ODAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjllNTgyZTBhMTE0NjM3MTM2YzhiOWQ5ZTI5MjQwODM0YzI5NDI5NzEzNTEzNjJjZjYzNmM4NDYwMDBhZWJkYWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_cdde05010b0a4bada766432464763258", + "statement": "Preview executes transforms without writing the normal sink and can produce untraceable duplicate inserts if mutations are unprotected; side_effects true protects preview, is the REST transform default, and should only be set false for genuinely safe operations.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L29-L32", + "version": "repo-lines-v1:sha256:6d1b20d5695d283db4769b30fe64dc8ae57eedf1a11bc666d7fe5255277fd13c:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjFiZGU0ZjY0N2NkNDhjMzBhZWExMDUxYzE1MWJjYjRkY2RiYTM2M2I1NDFkYjlhMjVlZWZkYTlhMTYzMGU1NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWZmMjE0NDFkMjhiZGI1OTIwMDlhOWM4OGI3ZTdmNzI5NDljM2QyMjU0YjQ4NTQwOTUzYTFhMjY2OGEzMzRhYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjhhYWM4ZjQ0NTdmZTZmNGFjNGMwOWRhMzJhYWY4NjAwYWIwMDI0OGVkMzY3ZjYyNjBiMDg3ZGE1ZjZkZGU4YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGM3ODJlOWExYmZmODE4ZDA5NTY2MTI3OGZmNjBlYTFjMjUxOTU0YjQ4OWUxMmFkODkwOWI0Nzg0OTA3OGMwMCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst#L73-L76", + "version": "repo-lines-v1:sha256:7c046aeebe103c5e9076ec79ca4c8b53ef0260555b125d80a9594c39a9b6b65a:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDhlMjI5M2E5NDI0Mzc5YTdlZmU0NzJlZTMzYmY4NmI5ZDQ1M2ZlNTg1MmRlMjc1ZjhmNWQ2ZGQyMWQyY2UxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQwYjM2MmQ4MWNkMDhjMTYzZjM1Mzc0NTQ4NjI3Y2FjNGVmYWRkODA3M2QyZDA4YTc3ZGRhNjc3OTNiNWFhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjEzMGUyNzg5YzAzZWY0MmY1MzUwNDcxYjg1OWIzNGJjYjkwMGMxYzc4ZjMzNWZhMGQwOTZjNzk1NzhmOTk4OCJ9" + } + ] + }, + { + "id": "claim_2b14880bd70f4d158c596ee1ef8787a7", + "statement": "$unsafe_skip_optimistic_locking true lets transform-share-rest update even when the comparison reports modified-in-system; it is a repair-oriented unsafe override rather than a normal integrity safeguard.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L211-L215", + "version": "repo-lines-v1:sha256:e8134c7ad3433c8c99440883e90311b2c2c0cef527e2455459340e4fa6dd8342:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjczNjMyMWU1MzY3ZmViYzJkZGI0MDMxYzFjMDJkN2FlYzAzYjhmNjZlNDQ4ODI2ZTljMmM3MTk4MmFmMWZhMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDZjNzI3M2E0MTgzNWVkZjExZDQ1ZTk5MWYxYzNlY2QzMWU4ZmQwNjlhNmQxZTFhOTg4MjEwMzg4MjUzOTBjOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmYwOTM1OGViMTVjODU2MWIzZjJmMTU2Y2YxOWU5YjczNDRjZTAzNDU3MmU5OTM4NjgxYjY5Yzg2MjhiNDMyOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWNjM2MzMDk5MDYwNzM4NmQ3Yjc2NjU1ZDJlNjg2MjMwYmI3N2ZlNGEzMDNiZmU3NTA5NjY2MWM1MTBjMDFmZiJ9" + } + ] + }, + { + "id": "claim_79bb7d910f004608aa1cf6fedc5cc9b9", + "statement": "Reset/full run reprocesses all source entities and performs deletion tracking, while disable_set_last_seen true prevents resetting the pipe or changing its last-seen parameter to protect against accidental replay.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L140-L144", + "version": "repo-lines-v1:sha256:561822624792ba99798eb2dde2af2a6ce1028ab8d0a8a3ce24908aba30a4b6e9:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjMxMWQ1Njg4NWJmYzBiMzVmNTk5ZjIwYTQ4Yzc4NDM4MWE1Zjg3ZGE5MDNiZTcxM2QzNzMwNzZlNDY4NWIyNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNGNhMjk1NDUyZDQzOTAxZDAxYjM4N2EwZDllOTEzNGUzMjY3Y2JkZDE2NDk1ZjE3YjNiYzQ4YzAxYjhkOWRiYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmMwNzk2NTI5NWJiM2I1MDU1YTc2YjBhYTg5OGQ2NGQ5NGRjODczM2E0OTYxYzcyOWIwODM0OTM2NGE4N2VhMCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L415-L417", + "version": "repo-lines-v1:sha256:9c408320fb233cfd76e90522022b4dbe5cc4139bd5a5f06d0657569c154380f5:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzYxMGE3NDJmMThjZDYwNzQwY2NjYWYwMzlmZDY5ODkyYjY2ODcxZWI5MmIwZjhlZTA0ZmYwN2ZiZjM3YTVhMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTU5NDA4NDJjNmNlOWU0MGY2MjM0YzU4YmJhZDY4NTk1OWUzNDAzMGU3ZWNjNGMxMjJlMDRhMGQxMzZhNDE3ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTNhY2ZhNWMwMWI0OTc5YWNkMDgwNTlmMWFiODkyZjNhNTY2OGM0M2RiMmY4ODQ0YjU5M2VlM2RiMTVkNTRkMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWMzNjI0Y2E0OWUyMDYwMGU2MWE1YjU5MTEzYjYzODAxNTA2MzAwMTA3YzEzZjBmNWZlMmVmYThhMWVkZDBiYyJ9" + } + ] + }, + { + "id": "claim_d366e91b7a7141a8840690a5e03a7bd1", + "statement": "Automatic reprocessing defaults to continue without automatic reset; automatic policy can reset/full-rescan or sometimes rewind a pipe when it falls out of sync, including after configuration changes or restoration from backup.", + "evidence": [ + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L29-L50", + "version": "repo-lines-v1:sha256:8cb5824a9643a6f63e859b94ecedef96c2d0534418145bdf6fc48ea4e9044c4e:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5MmE2YzI4OWEyMzAxMGE1MTkwNGRmNTViNTljOTdlNzRhMzI2M2QwZjdmOWYzMDhmZTI3NTIwZGM2OGRjZDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5YzdmNjM2Y2NjZWE0YTI4YTFlY2UxZmM4MjllYmU4YWU3YmUxZTA4ZmI2NGIyM2UxZTZiNzI1YmFjZDVkN2EiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAxNWUxM2NjMWQzNTQxODQ5NTk5Njk4NzkyMWI5NjU0YWQzMjE4MDFhOWEwMDg5MWU4ZmUzM2EzYjZkNzMzN2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoyLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcxMjA2NDMyMmU3Yzk1MGU5OTI1OGUxMmQxNTljYzRhODVmOWRmYmE3M2ZmMzNkODZlOGRjOTRjODYyZWRjMTMifQ" + }, + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L8-L20", + "version": "repo-lines-v1:sha256:e9df6cd6c5afc463df3755ddb4ef15e5a3add789be66ee189b51b16a112dd994:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2ZTYxZDE4YzU5NzViYTYxMGJkYzNiM2M3MjE5Y2QzNDRkZWVkODU0ZmQ5MzNiOWRmMjgwMDVjZDA5MTRlMTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNmMDIzNDk5OGJlZGJkYzU0YThjNDY0YmEzMTg4OTNjOTMzMzA0YjlmYjM5NWY5ODM1Y2I1MWY1NDg5M2YyM2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ5ZDk1OWZkMGVkNDIzMTVjZjE2Y2Q3MDkyMjc1YjVjMDVkZGMxY2I5ZWYwOWU1MmNmODg3NTQ3Y2NhMDNjMGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjExNzRmMDMwYTNmYTY5ZWU3ZDU1YWZlZWUwOWNlZTIwNGIwNjg0Y2Q5ZTNmZTdhNmY3Y2MwNTNlZTNhNWZjM2UifQ" + } + ] + }, + { + "id": "claim_869abf8fd1134cf98ae2683f7bbacac2", + "statement": "Cloud durable-data documentation describes daily backups and potential loss of the last 24 hours during recovery; restoring older Sesam state can replay already successful non-idempotent target writes, illustrated by a noon invoice being resent after recovery to a 10:00 backup.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L24-L27", + "version": "repo-lines-v1:sha256:e5a86e56a0ac3ff1bbc8b663991cc0e7041f9707f873b5128b8a664428890dc6:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTI5OGM0NzFmNTk1NDNkMTY1NDQ1ZTgwMTFkOTgwMDhhOTAwNGExODg3YzBhYjRlODdkODYzNzJkMjQ1NjU0ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjc4OGUwMGMyMjgyMTA4Y2EyMjAzMThlMmY4YjlmYTZlMzg1MTI4ZTkwMTQxOTllYzA3ZDMwMTM4MGZmNThhZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDJhNGQyYjcxNWNlNDJiMjA5OWRiZmI2NmRkZjg3Y2M0MDc3NGU5OGQ4OTc0ZTQ1NDhjYmQ1NTY0MDFhMjk1ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjNkNDY4MmE3MWYzODhkZjE2ZGQyZGRjZWYzNzg5ODdlMWIzYjEyNDBlODFiZjUyZDAzY2U4NjAyNmI0ZGU5MSJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L15-L15", + "version": "repo-lines-v1:sha256:43d190e219b8b22dd4389d65f8b83e8cca68dd5a159eac2332166645638dc599:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDNkMTkwZTIxOWI4YjIyZGQ0Mzg5ZDY1ZjhiODNlOGNjYTY4ZGQ1YTE1OWVhYzIzMzIxNjY2NDU2MzhkYzU5OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDNkMTkwZTIxOWI4YjIyZGQ0Mzg5ZDY1ZjhiODNlOGNjYTY4ZGQ1YTE1OWVhYzIzMzIxNjY2NDU2MzhkYzU5OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzg4YWExYzFmNmJiN2RiMGI2NjEwM2MxOTNhMDI4NTdlZGNlNmIyNTFmOTVlZDg2NGIzMmEyZThkODczNmQwZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDM3ODUxMzZkMjUwZGM1MmU5MjE2MDdkOWM3MDI3M2FmMmYxNmRhYTUxNzk1Nzg2N2M5MjUzYjE0NWE2M2RlMyJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L31-L33", + "version": "repo-lines-v1:sha256:6a6e88c991a3da643bff88abb05d697d615d60c2bcef7521755879c5f6add049:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTUyZGNiZDg0NDM1YTJkZGRhOGI1NWFmY2E3YzhjOWI3ZjhjMjgxNTQ3MzMwNDk4ZDU2NmQ3ODI5M2RlZmVkMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDIzNjg2MWJlN2M1YjJjMjNhZTJmZjk2MTBlMmM0ZmNhYWVmMTk3YWU5NTZiOTZmYTE2MTM4MjMwNDAyZTUwOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGNkMzUxODA5ODljMGQ1MGNjNzgyMTMwYTQxZmM2YzY2NzI0MzdkZWRiM2I1NDQ1OTZjZjlmOTI5YmQwN2Q0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODEwZTNkZDQzM2M0Mzc2MTJkNTZiOWNkY2U5N2ZhZTI0NTJmZjZmNDY4ODA2NjExZDI4OTRlYzJmYTk4OGQ2ZCJ9" + } + ] + }, + { + "id": "claim_727c585ae68b41839e4e00bb4ecd3cd5", + "statement": "metadata.durable true stores pipe data and state on high-durability storage to reduce data-loss risk; durability is recommended for pushed inbound pipes, non-idempotent endpoints, and both paired endpoint and share pipes, but does not establish an external exactly-once transaction.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst#L8-L8", + "version": "repo-lines-v1:sha256:8f433a9a7e2a6294f87360dbca3438f62ce5b1f96453f452eb24a6b4d31915cd:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGY0MzNhOWE3ZTJhNjI5NGY4NzM2MGRiY2EzNDM4ZjYyY2U1YjFmOTY0NTNmNDUyZWIyNGE2YjRkMzE5MTVjZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGY0MzNhOWE3ZTJhNjI5NGY4NzM2MGRiY2EzNDM4ZjYyY2U1YjFmOTY0NTNmNDUyZWIyNGE2YjRkMzE5MTVjZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzgzMzBiYWY3YjI5NWI1MDcxMDA1N2FhZWViOGI0MDRiZmQ4YjlkMzJmOWIxOGZlZDIyYTBkN2QzNDI3OWFkZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTcxNGM0NTg4MjJkNjg4ZDYwMmE5MTdiMjU4ZmI3YjA0N2FhYmNjYzA5MGJkZWMwNGMyMWFjOTljMDE4M2MzYyJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L18-L24", + "version": "repo-lines-v1:sha256:687d60831c2f7b852c43ee107f43ccbff77f14597ed892d64029e52a0bb204ee:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGIxZDdjZDlmNmUwNzc5N2QyMzAyMmQyNTIzODA3ZGM1MDg3ZjAwMjlmNWEwYWNlMmU3YmUzOWQ5ODUwMDQyYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDYzMDA4ZTg2ZjBkNDhiMjhiMWVhMmQxODJiMzIxMTBmMjQ4OTk0ZGEzMWRmMmI3OWVkYWQ3OWMyNDU0YzNiYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmJmYzMxMTg0MWZmZDU1MWE2ZTA2MWJiYjA1ZjczNGNjOGE2MWVmYjI5MGMwZTg1NTljZGNlYTViNmY1MDg4MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWM0MDE4NGY4ZmFmNDExZTA2YWY4NGVhYWM5NDk4Zjk3ODYyM2U1M2EwNjMwNjMxNmI3N2EwMjc4OWYxMDA0OSJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L38-L38", + "version": "repo-lines-v1:sha256:c73e53c2b77461b92a7e817666de2e69109a07ea106901a83dd6f1cccad0b3ed:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzczZTUzYzJiNzc0NjFiOTJhN2U4MTc2NjZkZTJlNjkxMDlhMDdlYTEwNjkwMWE4M2RkNmYxY2NjYWQwYjNlZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzczZTUzYzJiNzc0NjFiOTJhN2U4MTc2NjZkZTJlNjkxMDlhMDdlYTEwNjkwMWE4M2RkNmYxY2NjYWQwYjNlZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzk4NTdlYmUxZjZjZDMxZDMzYWNjNzczNDk1M2FiY2JjN2EyYmRmOGY0ZGFjZTAzMTkxNGU2YWRmNDEyNjQzNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTQ3MjJiNmQzZGY0Nzk3NjAxNDIyNWIxZGEzYTI3YzVmMmU5N2U1NzhiMzg3NTBkNjRkMTZmMjBhNWU3MWExNCJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L80-L84", + "version": "repo-lines-v1:sha256:be707cb9f14400b8f53f83871032b352a618e1ea6114458da388d12b4640e9c9:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGZhZTNkNzJmNWZiZDIxY2M3OGI1Y2UwZDM0ODIyMmY1ZmI1N2IzMjAwNTIzOTVhMzEwOWFiYmJiM2RhZWU5NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmM4MzViYTMwYzViMTg1YjUwMjJlMDY0YjVjNzMwMzYwMGEwMDRjNzNmNDQzMTE1ZGE4NGJkMGE3MDRiNTRjZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2U4Y2QyOWQ3ZjVkZmI0MGUwMDYxMWFiZTMwODI5ZDEwZjA2ZGNkYmI3Mzg2OGE4OTVhNjNjNmE0MDZiZjVmZiJ9" + } + ] + }, + { + "id": "claim_f9596e56ec3143f2b94c12a64d87c3ff", + "statement": "Replay safety depends on the actual source or target operation's idempotent or non-idempotent behavior, so repeated-request semantics must be analyzed rather than assuming all target writes are safely repeatable.", + "evidence": [ + { + "resource": "repo://hub/idempotency.rst#L30-L34", + "version": "repo-lines-v1:sha256:ed5a866e0a1344096c99b58d3029edeae6eacef2bda4d6b4e8dba06f56c7e412:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjFhZmFjYWVlNDM4ZmU3MjQ4YmViYzcyMjdlZmUzZWVkNDFkYzcyYjM2NzY0ZmVmZjE5NGM4MmE4NDUwZWM0ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjEzNzU1YTk5YzcxOTA5MmYyNGRlYzgyNDhkYmQ0NmU5Zjc0YjdmMzI3ZWUzMDJjNTNiMmEzNGIyODU5NzA0OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYThiZTdjODI1ZGEyYTQ0ZmNlYmUxMjM1NjAwMDRkZTRjOGQ5YjQ1ZjhmNmYxYzcxYmViNWFjMmU4YTExOWY1OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/idempotency.rst#L9-L14", + "version": "repo-lines-v1:sha256:2d930b04f934e890169428f4a97259d34f5a8016ce833293c349dacd0c3329a2:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDZhN2RiZTM4ODQ2ZTI2ODNiZGRmY2MwMDFhZDNkZDhiOGU0NjQyZDIyNzY5OWI5YTVmNjdlN2MyZTI1NWM3MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWQ1OTMxNmNhMmUyZWZiM2FmYTNmNzM2NTMwMDc2NThlMjM5MTkxNTlmNTQzMTY1M2EwNmY2ODg5NTA1ODY2OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWMwYjZjZWRjOTI2NzVkZmZkNTkzZTc0ZThmMWI3MDU0NWQ4NDdiYmM2NzkyYTA1MjAzMDJhZjViZmNlYjRjYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzFhYzY2NmUxNjdmZDU2YTZiNjQ5YTA5ZDU2MTNjMjM5MjYxYmY0ZDQ5ZDI4ZjE0MjA5YzlkYjkxYTNkOWM0NiJ9" + } + ] + }, + { + "id": "claim_80e21276818d4aa689e91f78db3d674a", + "statement": "Connector contract examples conflict with their field requirements: the insert omits required $origin, the update uses square brackets for dict-valued $based_on and omits $based_on_properties, and the delete omits both required baseline fields.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L140-L170", + "version": "repo-lines-v1:sha256:5c0627af104341b85b7814b8dbc3a2519b8b7779c6c0d486ebe950853f08b86f:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgyZjNiMjU3Mzg4ZjQ5ZDFiZWZkY2MwZTJkZTczYmI5MzkyYzlhMWRmZmJiZTQ2NTE3Yzk5NmYyMjY5MTkzMmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY1ZjM5ZTE5MzYxMWMxNDZjYWNiZTg4NmMwNzA2ZDAxMTE1MmU0ZWZiMGNlMTgxOGVhZmFjMDM3NGJjMWNmZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI1ODEzNjhkMTJjYjJkNzUzODY2NDc5ZmI1OGNjNTAwZTNiODFiNWIxMzUzYjg3ZWFhZTVkZmRkNDAzOGEwZWIifQ" + }, + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L93-L125", + "version": "repo-lines-v1:sha256:2d2314e8ba0c4bb2cdd2d363a88d7b9860d03a24c7b280884cdbbd4711ee7c55:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY5YTcxMzA0Y2E5ZDcxZGY2ZTQxMDZhYzg4NzkyNDA4MzU3MzJhNTc4ODg3OTRlNDFlNzlkZjZjMjgzZTU1MzkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJkOTlhMzU3NTgzNTgwN2U4NDNmN2UxY2M1YzVjY2Q5MWRlMGNkNTUwMmE3ZWE5OGJhMGExYmJiZmZmZjYxNTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMwMTY1MmMzMzE1MjJlNDY0M2JjNGYxNGI1MDVjZDU0MDU5YTM3OWY2Mjg4MmFhMzQwMzMwZjBjMWQ0YTAzNDcifQ" + } + ] + }, + { + "id": "claim_07fc7945aebe492dabb13f631365d110", + "statement": "Connector contract illustration text inconsistently uses foo-person:123 and foo:person:124 for split identities and calls the deletion field _delete in replacement prose while the example uses _deleted.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L127-L138", + "version": "repo-lines-v1:sha256:d4edf0790b6db7715e8e6cd4bbf9eb7c74d2a4d961b53199e29fa7db5f60a323:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ0OWMwODZlOGMyNzUwNTEwNDE5YzJlNWY2Y2FmOTA0OGFhNDFjYzFmN2E5NmYyYWRkNGM3MjEzMzYwNzljOTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZiMjExMzFkZWE5ODM0NDhiYjdmZDE3ZGZlOTE1ODRhMDQxNGQ5NGVhZTdkZTVjOTNkYjBhZGE3NjNlZmUzMTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk4MWZhNTBhNzgzOWVjZGYyZWYzNTI3NjMyZTZlZjY5Yjg3ZGZiYzA2YmEyMzUwYzEyOTEzMTY1OTE3NzkwMTIifQ" + }, + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L74-L74", + "version": "repo-lines-v1:sha256:0433c95b5f847664bc50c23d9d05997063e99e89e82eacf1973b06b839ea7aed:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDQzM2M5NWI1Zjg0NzY2NGJjNTBjMjNkOWQwNTk5NzA2M2U5OWU4OWU4MmVhY2YxOTczYjA2YjgzOWVhN2FlZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDQzM2M5NWI1Zjg0NzY2NGJjNTBjMjNkOWQwNTk5NzA2M2U5OWU4OWU4MmVhY2YxOTczYjA2YjgzOWVhN2FlZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTI3ZDM1OTViMzlhMmYxNmEzNjMzMTQ4MmJhNzhjZDIwZWM4YTE2ZGFmZGMzYWE0NzQ3Mjg0OGVjZjM2YmU2MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGQyNTJkNGQ0NmE5ZTMzODBjODYzNWEwNTYwZDM1ODhhNmJhNzYwM2RiYzAzOTUzMjAwY2UxOTk1MWZlYjExNiJ9" + } + ] + }, + { + "id": "claim_93ec6d3988aa437ea4830c7d8b7c360b", + "statement": "The capture-response example is internally inconsistent: it lacks a comma after the $payload addition and sets $operation to inserts while trigger_on expects insert, so it is not a runnable configuration to copy unchanged.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst#L22-L50", + "version": "repo-lines-v1:sha256:c607a032208164126aa359bf2b113bcfb7f46528c9267d78f8353b47da3582be:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzZWI3YzM4ZmE2OWZmMDQxNWJjODI2ODViYmE4NGIzYTBhZDE5OWJiMDAyMDExMzc0NGE2M2E2ZTMxNzYyYjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY1MDIyNDZhZWEwZGMyZDAwYTgwMTA3NDE2NzhkYTUyMmUyMzU5ZWNmNjcxMmU3YmYyNjhjY2ZjNGFiNzc4YzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgzOTNjZDc3ZWZlZDIxNWRiNTMxNTBmZmYwNjBjMzU3Zjg2ZjQ0ZTQ2OTA2NDFjN2E4OTliYzk3ZjBkNWRkYzMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjEwYmZjNzk0ZWVjMmJlODRkYTQ2MDkzMmMxMzc4YTg2NDgwNjVjN2I1OWZmMWJhZWIwYWIwY2UzODcwYTYwNmMifQ" + } + ] + }, + { + "id": "claim_f3fa90bb75174a08bc8359d97f19b43b", + "statement": "The older insert example contradicts its already-processed-discard intent by using is-empty on sink hops and joining si.$original_id while storing original_ids; the dedicated duplicate-block example instead checks for non-empty successful prior results.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/duplicate-hops-block-pattern.rst#L21-L36", + "version": "repo-lines-v1:sha256:752ef00ca8c1f522f5958deefe6753d60edeb804f1f2480f2187dba921c60aed:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4OTI0OWQyZjE2ZWUyOTI0ZThjYzBiMjViZThiMjVjYjk0OWIxYzI5ZjA3ODYzOWQyOTc0NmEyZjVlOGY4OGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY1OTllN2U0MjUxMmY1MGJhZTNmZTQyZWNlZGVkZWUzMGUwZWNlN2RlNWY2NWRjYjRmNTU1ODAxNDQ1NjNiODAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImEyZDAzOWQwZTM3N2E0ZDIwMGI0YjcxZjk1ZThjNWFiZGQzNjQ2ZWI4NzNjMjcwMjg4ZDg0ZWU4MDViNWQ5NzEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYzOTZkNGFhOGNjNTdmMTQ0ODlhZDgzNTE0MWIxNjgxNmZjZWQzYzBhZTcwNzMwMjVjNzM0ZTU4Mjc1NDg1MjUifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L65-L78", + "version": "repo-lines-v1:sha256:bc4be0adef18af006e77c98f3cb4f604be178f8f03dd27952ac91320d014b0f0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI2MjU2MTc0OWQ0OTQyNzU3MmVjODU5MzQyOTIzMjIzMzM4MTJkNzU1NmUzZWYyN2RjY2M1Nzk3ZDgzOTUwNjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU4MjJlYjk0NmU0MGM1ODEyNGVkN2IxZjFlZmU1ODk4NTcxZGEwZTNlYjJiMzU1OGQxNWEyN2MxMTc0ZDc3OTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMyMTVkMzA3ZTQ4ODM2ZmZiMDU1YTAyNzU5YzdhYThjYzMzY2FkNmFhMTMzZGMyMzQwNmFmMmRiZjYzZDcwNTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUxYmI1MjA1MDZlMWYxMjIxNTM0MTM3ZDIzMjU2YjU3ZTIwM2IwZjNiY2VlOWU3YzY3YTFhN2Y1MGRiZDRiMmIifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L94-L100", + "version": "repo-lines-v1:sha256:90f9ec2415fe69f8194906cb3e57ff185719ecf0336caa09e60b0c3b0d15391c:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmUzYTdiZGJiOWNjMTNmYTQyYzk4ZGJmODhhMWIwNjhkM2JjNTJmM2U5ZjE4NzFmZGQ0NWI4ODc0YTgxYmFjOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTY1MjQwYmRlODgyMGQ0NWUzMWFhM2YyODViYjY3ZTQ5YzBjNWFiY2RhNDZlMzNjNjg1NTUyMzBlMzA2YWE2ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTZhMDU3Y2QzOTcxNzZmYzUwNGRmN2MyNGY3NjkwMjA0YzA1ZjFmZjQxMTI0MGI5ZGQ2NzA4MDM3ZmIzYTRlNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjcyODIzNDk2YzJiNzVhYzcwZWI0MTA4MGYwZDlkZjM5ODNlYjQ2MzRiMTVlN2M3MGZjYmRmYzgzM2EwMTgxYyJ9" + } + ] + }, + { + "id": "claim_0caba2382cfc4f8593cd3e56fe0b5cd4", + "statement": "The optimistic locking configuration example lacks a comma between its success-path comment and payload addition, so its documented lookup/hash/discard algorithm should not be treated as a ready-to-paste valid JSON example.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/optimistic-locking-pattern.rst#L76-L86", + "version": "repo-lines-v1:sha256:4e6138ac51f0c8362ac24dbaee147107b81d9014ae30b0949aa66eac1668d510:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdmNTc0ZDRhOGZkNjA5Y2I4MTkxYjNiNzg0ZTg3ZGIxZjVkZWFmZGE5NDEwOWMzMzkwZWE0ZjdlYWZmZTc4NTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjljMjFhNTI5MmZlY2U0NTgzZWI4MmY5NDAxYWQ1OTI0ZDM3MTI1YTY3NjhjZGZhZjVmMjFiNTIwYjA3OWVjZTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBlNTY1ZWIxNGZiODY0MDE1MGM0N2ZlYTIzMjI1M2NjYTdmZTYxNmEzZWVhM2I3MWNiZDY5ZmNkYzYzM2NiZDYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZmMDcwNGY3NTE3Y2U5YmRjZWRiNmIzZTViOWU4NjRkYTFlZGMzNjQ5N2RmY2E0ZDI5NDIyZDA0MWQzOWE5MWEifQ" + } + ] + }, + { + "id": "claim_e83c8b8b6e3c46f6a4671dad36eeaaee", + "statement": "The transform-share-rest section's prototype names transform-collect-rest rather than the section's own share template.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L206-L235", + "version": "repo-lines-v1:sha256:903fa286a811a7806d4d6154def875a8a5436af2580d0a2fef1f629629866868:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmYWFhMTQwMWU0ZWI2ODBmNWRkZTdhYzBhNGUyN2FmMmQwNGZkMmJjNjRmYzRmZGQ3YjQzZDg0NGVmOTNjZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhkMWEyNGNmYjg1MDYwN2Q2NGVmOTVjMmY0ZGM4YTAxODJlNzkxMjY5ZjViZjI0ZWQ2YTc2MDNjNTVjN2RmYjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhmNWZkZWZkYTBiODQ2NjQ0YjAxNjIzYjdkODRkYWRhMjJkNWU3NmE3ODc3MmYyZWY3NWU2MzkzNDAyNzQ5NzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImExOTQ5NWNhNDFjNTlkYzFmMmJhNWZlOWI1ZTgzOThhNWVhZDU1ZWY5NDAxM2M0ODQxZDliZWIxN2M5ZGMxMTMifQ" + } + ] + }, + { + "id": "claim_d88ab3c2f3174ed29c4acd4a8509303a", + "statement": "The namespace-split narrative describes keeping the first member identity under default merge settings, whereas the merge-source reference documents composite as the default identity strategy and first as explicit; actual merge configuration must resolve this discrepancy.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/namespace-split-pattern.rst#L6-L8", + "version": "repo-lines-v1:sha256:8f4f261c401a2a30c73f5316ba411f8a30cf1eb3d9d06a10a88fb06b29d2143b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjg1OTBmODNmY2RjNmMzMzFiOTQwOTA0MDNiZDQ1OWViZmJkMjEwZTBjMTM3NDAxODQzZmJlNGY3MTg0NjQxZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTBkM2ZjNmM0ZjdiZTZmNWEzZTYwOGI3ZWU2NjdmYjY1Mzg2OWE3ZmVlMzNkMzE5NjA3ZDNjNzZmNmJkNjkzYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjgyM2ZhNmRkMGJjYzYyNGI1ODA4ZmI0MDU2OWQ4MjY1MGQ5NTNiMjcwZWRkYzI4NjhkNjk1NGMyNWNiYzliNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2M3NjVlMjVmODc1ZGQ3MmNjNzE0MDE4ZTUwZDZhYTRmOGJhZDdlMWI0MzEwOTMxYmI1YTVmMTNhZDA5Nzk2ZSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L160-L187", + "version": "repo-lines-v1:sha256:982b22595ebb27c855372fca289cddc4520ff4610828933e9ce9ca87bc61737e:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE4YTJlYTc3YmU0MTM3OTcxZGMzNzQ1ZWY1ZWQ1Y2E4MTljZDBhYzk0M2Y2YWVhN2Q3MTJiYzBjZjc3NTI4N2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgyODQ2YzIzZTVjYmIxZDRkNDFhZDEyNjRhMzM5YTFhZTUzOTE4Njk5ZWI1MzY4Y2MwMGIwNzQ2NGE3MzlkZGUifQ" + } + ] + }, + { + "id": "claim_ea8f6cafb09841f7b0c7212167df2e64", + "statement": "The documented local configuration-test workflow drains pipe queues with external output disabled or unable to send, compares endpoint results using expected JSON and per-pipe test JSON files, supports selecting source/before-transform/after-transform/sink stages, and runs with sesam -vv test.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L63-L67", + "version": "repo-lines-v1:sha256:7358af66a028f4d2e9b0ba5be3c1f72485419ed8ed61c60c37f941dca90263e3:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGQzN2I0NzFlNzA5ZTA0ZTVmZjAwYjczZjkzM2Y2NjVlYzIyNjJlZTVmYzQxNzQ2MGIwZTNjNThjNmRkZWQ2YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGU0YWRkNDA1MTlmMDhiNzlhOGRmNzRiMmU4N2Q0ZWNiZDM5YTg2YmQ4OGFjMDdkYzAwZjcwMGRkMmMxMmExNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGExM2VmNjg1YWU3NzljODhkMmFlOTE0MWY3OWExM2JiNDFjYmUyYTEwODkxYjg1Y2Y4ZTBmODRkMWY3NWQyYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjhhMzRiNTRhZmU4ODA3ZTAzODhlNTI2OWM2OGVmZmI2OTZhYjMyNjExNDFkMTNjMTJkZWU5MDJiNmI1Mzc2MSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L21", + "version": "repo-lines-v1:sha256:d728920650b733582762cd2916dd09f6f0f0af185fdda8c3774bd133cdd1ef38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + }, + { + "id": "claim_3908ac01dc7d48a59ed54b8cb1395eee", + "statement": "Configuration CI must serialize tests because the Sesam client overwrites the test node configuration, and the CI node should be unable to write to normal target systems and lack the connection variables or secrets needed to do so.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L18-L22", + "version": "repo-lines-v1:sha256:7d9862d12597d3b47d3f4f8be7a5588dca48397562006b53718438e1af30fc21:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWE0ZGIxMTExY2VmNDUzMzYwYzYzNTQzY2FhNmZlMzI5ZWEzMDFiNWQ0M2FjZDA3ZTA3OGI0NzVmZmM0ZjU5NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTZlYTE5ZGVhZDdjNDY3MTEzMmNjZDc0Mzk2ZmZmMWI4ODc1NDhhOTJjN2U3NDNhZGRmOWYyYTRjYzcyZDQwYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWQyYjRjYzIwZmM4YzJiMzI5YzkwN2YyNTBiZTE0MDhlZmJiMzY0NzE4ZWE4MDU5NDhlN2ZlNzdkZWUzOTVmYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDA5MTQ2MDJlOGM0YmZkMjRlNWU4NGJiN2MzY2YwODViMjFjNmExNDQ1OTgyMDEyMjIzNGZmOGUxYTMxOTVmNyJ9" + } + ] + }, + { + "id": "claim_fc0ad91e9dd44105ac5de9f58623744d", + "statement": "The local-test reference's internal-properties section explicitly says entities with _deleted false are removed from test output; this wording must not be silently inverted when assessing whether comparison output covers live and deleted outcomes.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L141-L144", + "version": "repo-lines-v1:sha256:89506b668ea86ed7cfc1df98d73995ad754d532bab9f4bd6e2227ef9aabfd51b:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTM3NTIyMzE5NGYyYzlkY2RlODIxMjQwOGE1NTBmZDM0YmZiZTdhNmI4YzQzMmM5NTAyNGE3Y2VhZjYzNjBiYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzlmZGY0YmI5OGVjMWQ5ODYxYjRiMTViMWU5NDc0NTVlZDI3NmU0MmFjNzI4NTU2MDliMzAzNDZiOWZlZDgwOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDQzZjdiMWU1YmQ4MzYxYjY3ZGFmMWM0ZmI5NTY1YzJkMWE3YmQ1NTc1MDFjNjQ5NGIxZmZlMmNkODAxYmUwMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjY3YTUyNzAxZGQ2YWMzMTEyZGNlMTI5N2ZlZDdlNDRlNjUzYTk3MTFjYzEzOTRiMmJmYWFkNzlmYjAwOTMzMyJ9" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/workflows/build-an-integration.json b/openwiki/.claims/workflows/build-an-integration.json new file mode 100644 index 00000000000..a2242c74e76 --- /dev/null +++ b/openwiki/.claims/workflows/build-an-integration.json @@ -0,0 +1,998 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:23e425be5c6714fa2f4c2b3fa3ff3a8fc19ce13618974f5377ae7f5309398e52", + "claims": [ + { + "id": "claim_a99c5e7faba240f78ea458adf6d99069", + "statement": "The authored Sesam integration workflow is Collect, Enrich, Connect, Transform, Share; the first-synchronization guides group Collect and Share as boundary synchronization and Enrich, Connect, and Transform as internal data management.", + "evidence": [ + { + "resource": "repo://hub/guide-create-first-synchronization-data-management.rst#L6-L14", + "version": "repo-lines-v1:sha256:69768bfec1316d6bd2826ae1112fbcbc5b7f5a7b545329710241ea43f22c39f8:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZThmN2U3MTYxOTQzNTk5YmEyNDk3YzE4NDhhN2M4NmUxMmZhZGY0MTBkMTk5ZTlhYmQxODk5NGIzODc0MWIwZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjQ2NWI4N2NjMTBlMDJiZjA4M2FlM2U0ZWViYmQ0NGU2ZmY5NTcwZDc0YmE0YTUxY2NjYTQzMjhkMTA1ODU2MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2RjZWIzZDRkODlhYzZkODVmYmYxOTY0ODQzZmMwYjZiODcyYTkzOTRhMzY0YWZkYjFlZGFlYzkyYTk0ZGM3NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTcxNzk2MzFkMWFkYWVmYjM4YzVjOGYyZmIxMzY3YjE5MDg5ZGU1MjhjODJkNGMzZDc4ZTIzMDM5N2RmOWI0NiJ9" + }, + { + "resource": "repo://hub/guide-create-first-synchronization-data-synchronization.rst#L6-L13", + "version": "repo-lines-v1:sha256:866e5bad1ecf870345a31a4b60a03bda42a47fba62b65e341e63629df7147180:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZThmN2U3MTYxOTQzNTk5YmEyNDk3YzE4NDhhN2M4NmUxMmZhZGY0MTBkMTk5ZTlhYmQxODk5NGIzODc0MWIwZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1YmM0MzcwNTA5NTE0OTI1NWE0Mzg1ZjBhM2ZiZTY2M2ZmMGRhYWFjMmQwNzRlMGFiZmM2Njg2MWI4ZDMwZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjkyYzI2YmY0OWQ4M2JiMTkyOGJmNzExNzk1MWNhOWQxYjJiMTM1MjFjMGVhNGM0ODI1MzBkMzA3YTg5NzRlMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODI3ODE0ZmJjOTYzMDVmNzg2YTg1NGRjNzJiODU3MDg5NzVmMDU4ZjFmNWJiOWIxMWVlZGI1NjEwMTIyMzUxMiJ9" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L7-L7", + "version": "repo-lines-v1:sha256:2f3ce96ea325424c69ff4015f3ebcd53cf9b60d8d09e0ad851ce9373161db34d:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmYzY2U5NmVhMzI1NDI0YzY5ZmY0MDE1ZjNlYmNkNTNjZjliNjBkOGQwOWUwYWQ4NTFjZTkzNzMxNjFkYjM0ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmYzY2U5NmVhMzI1NDI0YzY5ZmY0MDE1ZjNlYmNkNTNjZjliNjBkOGQwOWUwYWQ4NTFjZTkzNzMxNjFkYjM0ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2YxYzdmMTdkNzVkZWNmODNmNGU3YzdiMTI0OTVhNWUxMTdhNTJhOWY5ODgzZTI5YWY1NDlhZGQ0ZmQyYmUxYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDM4NDRiN2Y5Mjc1OTM1NDk2NTg1MzAzNDkyZTNlOWIzZjA4ZjM4OTQzZmRlMTQ1YzU5NjY2NDI3N2I1ZTFiNyJ9" + } + ] + }, + { + "id": "claim_cf1f894aa969470cbb2ea841a9e9b85f", + "statement": "Inbound, outbound, global, and phase-suffixed pipes are workflow roles and naming conventions rather than distinct pipe implementation types; a pipe's behavior is configured through its source, ordered transforms, sink, and pump.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L251-L269", + "version": "repo-lines-v1:sha256:1f9a83c507c2898ae1625b190e8a49a81da47d8bee9272e5cf54b83cf289db5f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZiNWM1MmUzZTk0ZDZjMDhkN2YxODE2ZTgyZDcxNjdkNWNiMTczZjBmMzkyN2M1OTVlODEwNzA0MmVjZWJjZTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYyNGUxYmI3ZmVmZDZhNjkxZjdmZDFiNWIwN2QzNWYwMGUzMjA3OTBiOGEzZTkyNDdkYTA3MmRjYjcwYzBiNTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhYTEwN2I0MzVlM2E0NWQwOWNmZDBiZmZjN2ZlMzBiODk5MjFhZmM4NjQzZmVkNTFkNTMwMWYzZDFkZmEwMjgifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L6-L13", + "version": "repo-lines-v1:sha256:cf8516d3db33abc55b15f6b9c2785b938503b337049e3de9536d4358c1428f4e:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2MxYTVkYzg4ODYzNWNlMzMwNjcyOTRiYTJjYzY2MzE1YWM3YzcwMzZlMjk2ODgxNGQ1ZGIzY2YwYWY2MzczMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmI5NDNlZGJjYTA1MzA5YjI3MTI2Mzc3NzBmZDA1ZGFjNGQ5MTAzZTY4NTM5ZjE3ODNlOGJlOTY2OGFmZjhlNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2ZjNTllMGY1M2NkMWYzMmUxZjFhYzQ4ZDg2ZTFkMzdmMmVjM2RmODBiY2MzOWExNmM2YmJjZTFjNzJjNGFjNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmQ2OThmMTI2NGY0YmVhMjc5M2M4NWQ4NDNhYzdiMTgyYmY4YWQyYjFiYTNmYmUyNGY4NDgyYTYzMWRmYzZjYiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L85-L89", + "version": "repo-lines-v1:sha256:88afa41bbfc1f8b919648181a8ca604366bc000074f7d2735fa7defdda1495ed:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmEwYzllMDQwNGIyODgyMTRhMjQ2Y2MwZTU4ZTJiM2M5NjM4ZWRjZWM0Nzg4NjMzOWEyOTFjNzVmYTVlYTRkMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWE4M2I5ZjJhMmY4YTdmYzE3ZWFjOGM5OWFlZDg5MGFhMjE4ZTQ2Yzg2NmU3YmNjYjdlYWJmM2YwYzYyYThiNiJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L122-L155", + "version": "repo-lines-v1:sha256:c143ecf8501428589bac762253793cad668a648094051f32704ef9169e0d91a9:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5YzczZTBmOGEwNzQ1NDhhMTRkN2MyMWVjMWZkNmExMTlhODNiYmFhOWI0NjhiNWQyODcxZTYyNjIxZmVmNzAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYwN2U2NzNhMjUyZmRhOTkxODIxYTIzOWI3OGRhYTYyNzA3ZWViMzA4NTNkYmZhMmI5ZTc3Y2VhZDllN2FjNGYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY1YWJlNjJlYzNkYzE0YWVmMzg3MWE5OWVmYjY3M2I0MGIwMGZmZGQ1NDZmMThiODlhYzA2ZTFlNjI3YWJhMjkifQ" + } + ] + }, + { + "id": "claim_93937518815941228793c86de9c5f51f", + "statement": "Omitting a pipe sink defaults to a dataset sink named after the pipe's _id, which supplies retained outputs between the tutorial's collection, enrichment, global connection, preparation, and Share-check pipes.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L181-L184", + "version": "repo-lines-v1:sha256:4a186b2129ecbf4daea6dce2893d6e9c400314c083b890d70bf4102bb95542d6:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODU5NDgzMWIxMTk1ODM2MDI4OGY5NjhkZDQ0ODYwMzUzNzQ3Y2VjYjk1YjJmYjNlY2Q5MjcxYjkzNDE0ODNmZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzMxOWYyODA5YTI5NGFlMzQ2ZjYxYzI4ZGQyMDQyMDdkOGYyZjMyYTBkNzI4NjExMjU5MWVkMzAxNzYwZDU1YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L138-L191", + "version": "repo-lines-v1:sha256:68678c59524414a84b29d6a8102aa8f1cff158f016b31b5df5392ad16188cb8d:eyJzZWxlY3RlZExpbmVDb3VudCI6NTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEyMDAwYmQ0ZjkyN2EzZjJmMWYzNmMyOWUxYzYzMzE2ZmQzOTIzYTk4NTM1YmM1NDA0ZWVlNzg2NmM2MmYxZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYzYjI2NmY5Nzc3OGMxMTkxODIyOTEyY2E0MTI1MTk5N2E1ZjY3M2JmOTk1YWY4MDA3MWQxNDY5NzU3ZWMwY2QiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNkMTRiMTIyNDE2OTRiZWQ4YzhhMjI1YzhhNmM3ODM3Y2ZmYjZjY2RkYzFkZmM2Y2Y3NGMzOTBjN2YzOTAzOTUifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-connect.rst#L32-L82", + "version": "repo-lines-v1:sha256:97d982743f96759a54f3e9020d8c9ee7415ba5d87125db267ffe2795ed4f7ebb:eyJzZWxlY3RlZExpbmVDb3VudCI6NTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEyMDAwYmQ0ZjkyN2EzZjJmMWYzNmMyOWUxYzYzMzE2ZmQzOTIzYTk4NTM1YmM1NDA0ZWVlNzg2NmM2MmYxZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY0NGQ2ZWFmMzEyYWE1Nzg1YzZkNDc1OGYwZjI1ODA5YzBmNzE3NzY1NzFmMjFiNDJkZTEwNjhlMWQzZjdlM2UiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFhNDI1NTliNGRhMGU0NzQ0OTAxZmMxYmZiMjBjN2U0N2ZkNGZiMWQ4ZTFmOTM1N2VlMTQ3M2M4YjYzMDgyNjAifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-enrich.rst#L34-L123", + "version": "repo-lines-v1:sha256:3a91e122de810d2ea64c3247665d22016d7440b324a2fb1abf069f47e8f035d0:eyJzZWxlY3RlZExpbmVDb3VudCI6OTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEyMDAwYmQ0ZjkyN2EzZjJmMWYzNmMyOWUxYzYzMzE2ZmQzOTIzYTk4NTM1YmM1NDA0ZWVlNzg2NmM2MmYxZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE3Njc2NDkwY2FmOGQyOWVmNTFhMzExYzBkZDc2NjJmMTNmZmRlZDVjNWM5NWIyMzc0OGNjNjQ0YzBmMjMyZGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM0MmQ1YjJjMTY1NTAxZTQzODY1MTAzODJkMzMyNGY5ZDBjZDU5YzViMjhjOGQxOGU0ODEyM2VlOGVhY2M2YjUifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-share.rst#L41-L121", + "version": "repo-lines-v1:sha256:9f882e8ee3075de010917b5b634cf734754e3cdba08b1d12de52711aa0edc05c:eyJzZWxlY3RlZExpbmVDb3VudCI6ODEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEyMDAwYmQ0ZjkyN2EzZjJmMWYzNmMyOWUxYzYzMzE2ZmQzOTIzYTk4NTM1YmM1NDA0ZWVlNzg2NmM2MmYxZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQyZGU1NzVkNzU4NGM2ZWRhMmRjODRlMDcyYTE4MTY2YzJlZTI2ZTQ5NTY2YzViZTMxODcxY2E3Y2ViM2NhOGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjcifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-transform.rst#L34-L63", + "version": "repo-lines-v1:sha256:5864629b404b68a1aaecd0c1ce6deca34d3a58e7383db3bf3296cb401714bc93:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEyMDAwYmQ0ZjkyN2EzZjJmMWYzNmMyOWUxYzYzMzE2ZmQzOTIzYTk4NTM1YmM1NDA0ZWVlNzg2NmM2MmYxZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIxNGI0YmRjYTJiNDE1ODMxNmFhNzlmMmVlOWJjZmY1OTEzZTM5MTRhMTYxY2QyYmVhZTY4MDczYmU2NzVjMjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQzNDEzMGFhOWUxOGNkYjM5OWUxMTc5NDcxZWI1OWY3ZWIyZjU3ZGFmNGY0NDg5ZDgxNGVjOTRjNDk3ODE3YmUifQ" + } + ] + }, + { + "id": "claim_553687e1d87d490ba97bba9966758af4", + "statement": "The tutorial's Enhetsregisteret connection is a mock system:microservice using sesamcommunity/learn-sesam-crm:v1.1.2 on port 5000; its /enhetsregisteret endpoint supplies generated tutorial data rather than real registry access.", + "evidence": [ + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L170-L191", + "version": "repo-lines-v1:sha256:6e281df003e149dcbed9f4c32abc2f7478303d276c3de6cfca60bdac0fd14f70:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEyMDAwYmQ0ZjkyN2EzZjJmMWYzNmMyOWUxYzYzMzE2ZmQzOTIzYTk4NTM1YmM1NDA0ZWVlNzg2NmM2MmYxZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkwODkwYmFlZWZiYzFhMWVhNmRiMDJiMDJhOWE4YzdjYmIxMTcwMDU0ZWM0Zjk2OWMwZWY1MGNlOTIwZjVmYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNkMTRiMTIyNDE2OTRiZWQ4YzhhMjI1YzhhNmM3ODM3Y2ZmYjZjY2RkYzFkZmM2Y2Y3NGMzOTBjN2YzOTAzOTUifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L94-L118", + "version": "repo-lines-v1:sha256:2c8d75e40f2f6e6c3190e9cb0e08aef1043092e33486e400864baa04568ec3f8:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc3MDNkODY0ZDRmZmE2OGJkZjhhZWMzMWY1MGQzOTk4NzZjOWYwMjNmMGFiZWM1MjM4NGI0NWUwY2JjZjY2YjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ0MmQyYTRhZThkNzYxNmZlY2FmNmY4ODQxZWIwMjUzMzA5Mzk4NDk2ZWEwYmJhZDVkMmI0ZTVhNGI5ZDk1ZmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYwN2U2NzNhMjUyZmRhOTkxODIxYTIzOWI3OGRhYTYyNzA3ZWViMzA4NTNkYmZhMmI5ZTc3Y2VhZDllN2FjNGYifQ" + } + ] + }, + { + "id": "claim_7423542978a64cad8a209b5746fe7c45", + "statement": "The first-synchronization prerequisites contain legacy HubSpot API-key and test-account instructions, while the Collect configuration places the hubspot-api-key secret in a Bearer header and the authentication-pattern reference identifies HubSpot as an OAuth2 connector example; the old tutorial is therefore not a reliable current authentication recipe.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/authentication-schemes-pattern.rst#L6-L45", + "version": "repo-lines-v1:sha256:1cec1a97b43b965667602880aea709f059baa45bb38836b927e86fd14b32dd9c:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1MTBkZDg5YTQ5N2JiMjkzZTRhZTVlYjkwMTBmMmI5YTA1Njc2MDViNjhmY2UwYjVlOTRhNDFjMmMyZGM0YmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNiYjczYzk0NGUzMDI4ZTVhYTg4ZTliYjk5NjYxMzJlZmE1ZmNmNjEzMGRlZGNjNTk4ODRjMzc2NGFlY2MxOTkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzMGJhZWZjYzYzZWFmMDRmOWYzYjY4MGUyMGJjNWQxZjE4NTEyYWJhOWQ2YmFiNmZlMWM1ZDdkZTE5ZGMxMTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNjMDZmZjBjOTg3ZDU4YTY4OGQ5MzYyNDdmNThiNGRhMWQ5NTQzZjgwMTYyMzMwN2U2NzYwNGM2MjliNDhiNjYifQ" + }, + { + "resource": "repo://hub/guide-create-first-synchronization.rst#L26-L34", + "version": "repo-lines-v1:sha256:869bf10354928fb7a3816f23691f643ab35b9a9c179ff646fe03aaa91b9d451b:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzRjNTY0MmViYjNiODIwOGUxNWZkODg3ZjdlYTQ4NWNjOGE0NDE4MTNmZmRjOTUxNjIwZjUxZDY4NjNhNzcxNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTgyNjRkZTc4YTU2ZGFjOTBhOTI1ZmE4ZTZiZjYzOGEzMmEyYmY0YmQ1YmMyN2I2ZjAzY2Q4MmJiYzJjZGQ5NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzc2MzJmNWI4NTE3M2UyOGIzYTE4NjVjNjAzYmJlYWQ1YzIyZmM3YjZkNGU5YTRlODMyZmFkZDBjNTEyODA2MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzA4YzNiYWM2MWM0NTQyYmU3ZGFmYmNhMjU1YTkwMGFjNTQwNmQ3Njc2Mjc1YmRhNWRjZjhkMTA5NzU4NmI0MyJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L19-L23", + "version": "repo-lines-v1:sha256:14a6da30a651600ad14c17b3b361a6695f6e49a1cdd1f8627b4666f66d5488e3:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjdlNWFhZDczMGE2OWQ3ZjRkMWY0N2IyNDNjMmI3ODY1OGI3YTg1MTlkZThiNjY1ZmZmNzI0MGE5ZmRiMzhiNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjkxZDM0MTVlNjJkNjdhMGI5YzRiYzA0NDk3ZTEyYzJlN2RkNmVmY2M5M2ZhOTNhMDdiZjczMjAzYzFjMjliOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDJmYjg4MDFiZDFiODVmNzAxMzczMjZjMjMxNGMwMTViZjdjNDI0NWYxYzc5ZGU3ZjAyY2EzYzg2NDM3YTllNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmQwYTQ0Yjg0ZjE4ODIyYWM2NDBiMDM3ZWQ5MzZmZjg3YTQ1OThhYjVjYTU2YTA4ZTlmYjgyNzcyY2M0NjkwMSJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L57-L89", + "version": "repo-lines-v1:sha256:a706dc2ad916227833e7e3316b68e42e12abfaabd25f04282ce40a00657a83c8:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVjZmQzZWZkYWMyNzQ3MjY4ZGNhN2M0ZWE1YWU3MDA5MDllYmZlZGMzZTFkZTM3M2M2Njk4YTZjYWUwYWE2ZjQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZTgyZjljNzYyMjcxMTRlZGQyNDljMzRmOTc1NGE2ZDNjMTUwNDkyOTg0MDQwMTRmMDlhMmQ4MzQwMDBhM2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiOTcyZGM5Y2YyZGE1YjIyYzNjNzJmNGFjOGI3M2RmYTQxOGU3MTUyM2QzZTkzYzRhNmJhNmIwY2UxYWZjNmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRmYmQwMDkzMTRiYzI3MDg0MTY3MzRhMDJhZTVmZjM5YTFlNDhhMDUwYmU5MWY0M2IyZmFhOTIwMDJjNjJiZmMifQ" + } + ] + }, + { + "id": "claim_d8314ba4248b4d35b863ff5745ad3759", + "statement": "The tutorial intentionally updates existing HubSpot companies and does not implement inserts; its prerequisites recommend a separate developer/test account to avoid affecting existing account data.", + "evidence": [ + { + "resource": "repo://hub/guide-create-first-synchronization.rst#L30-L34", + "version": "repo-lines-v1:sha256:3a34ca3a9d86a896e20fa4f04a5b805427a0a320fbbdcdca391427e2fd996773:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmFkNjNlYmMxYTYyMTllMGEyNTNhMzg5ZWU5MzBhYWIzZTc3MTIwNzhhYjY4ZjM0ZWZkNmZjNjRmZTg3NWZkZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTgyNjRkZTc4YTU2ZGFjOTBhOTI1ZmE4ZTZiZjYzOGEzMmEyYmY0YmQ1YmMyN2I2ZjAzY2Q4MmJiYzJjZGQ5NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTVlMDU1OGNmNzMzYzRmNzBkNjA4YjRkYWFhMGNlMzgwNjVlMGQ1MzNhMzRmNGVlNzhkNjcwODlmYTJlYmE0ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzA4YzNiYWM2MWM0NTQyYmU3ZGFmYmNhMjU1YTkwMGFjNTQwNmQ3Njc2Mjc1YmRhNWRjZjhkMTA5NzU4NmI0MyJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-share.rst#L125-L163", + "version": "repo-lines-v1:sha256:0aa4c7a8e0c3c8aef062d36f411b329827542b107a78f092a4361dee7330b153:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4OGEwODJjZGE1MTRmN2RiZGYwYTk0NGQ5ZjY1NmZlOTEzZjA2Njc1N2ZiYWFhOGFiY2ExOGI2N2NhMDY0NjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRiM2UxOWYxNmI2MWNmOGYwZGExYTM2YjMwZWQ0OTU4ZGQ1NjY0OTg3YzcyMTcxZDhmMWIyMDI4YTY3MGM0N2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI5NDE4NTQzYzc3YWZmZmQwNTIzY2E2OTM3YzI2MjFlZDdkNDMzMDcxYTNhMGIzNWRiZDQ2Mzc0MGM4NTMwMDEifQ" + } + ] + }, + { + "id": "claim_cac8e78c37a74f2792b86ac60cf59b36", + "statement": "System components represent external databases or APIs and centralize reusable connection configuration while providing services such as connection pooling and rate limiting.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/systems.rst#L6-L14", + "version": "repo-lines-v1:sha256:ac533a33252c9182f7bfcb3d86a5dbbef257e9cf7f551136009f026c7fa8bbd5:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTY2ZWJhOWMxMDVhY2QyODZhZjAwZDY1MjEyNTkwOTcyMmRhMzU0NzAwMjMyOWMzYWU0YTY4ZWM2ODM1YTEyNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODc3ZWEwMjQ5MDVhMmIwYWM2ZTU2YWY2ZTBiZDJjZDE4M2QxZTc0ZmJhNzVlZTBhYTMxNmVkYzVkY2EzMWI4NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDVjMDA0NDNkOWFmYjljODg2Y2YyMzI1ZjhmODM4MWQwODY2Y2NlMzBkZmIwY2ViZDIyOTBkZWM2YzQ1ZmIwOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_81bdee359dbb4f908f9204907a0f32c7", + "statement": "The tutorial's shared HubSpot REST system defines collection GET, individual get_company GET, and JSON update PATCH operations; update addresses companies/{{ properties.id }} and authentication is referenced through $SECRET rather than embedded credentials.", + "evidence": [ + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L57-L90", + "version": "repo-lines-v1:sha256:520fc75502fb2c012bc40f209d9eb22f1dfbfe6cbdcdd66e788d1c5a0d875735:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVjZmQzZWZkYWMyNzQ3MjY4ZGNhN2M0ZWE1YWU3MDA5MDllYmZlZGMzZTFkZTM3M2M2Njk4YTZjYWUwYWE2ZjQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiOTcyZGM5Y2YyZGE1YjIyYzNjNzJmNGFjOGI3M2RmYTQxOGU3MTUyM2QzZTkzYzRhNmJhNmIwY2UxYWZjNmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjcifQ" + } + ] + }, + { + "id": "claim_b5f4e1f40bee4ef9aaadf8842df00262", + "statement": "REST source, transform, and sink operation definitions can override system definitions, but secrets in operation definitions are allowed only on the REST system, making it the reusable credential-bearing operation boundary.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-rest.rst#L178-L186", + "version": "repo-lines-v1:sha256:13fb43252bae94d650dcf475587cb50cda478e084ca1e8565b615f8b7a4a6e64:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzMyMWZmMGQwMThlZjBjNmRhN2YxMzUxMmVhOTdiODE2MTE5NzEzZjhmMzBlY2Y4Yzc2MTJmODZmNDJkNzAzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2RkZDRkZGZkNTkyYzYxNTAxOTJmYzU2MzM1MDA2MDM3YTM5NzhmOWQxZjM0MDJhZTUyZWYxOWY2ODk4N2NhYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst#L71-L79", + "version": "repo-lines-v1:sha256:4166af129fb688d46b7e0af237d0913a9353eb53dc411446a5c4afa3b6984489:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzMyMWZmMGQwMThlZjBjNmRhN2YxMzUxMmVhOTdiODE2MTE5NzEzZjhmMzBlY2Y4Yzc2MTJmODZmNDJkNzAzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2RkZDRkZGZkNTkyYzYxNTAxOTJmYzU2MzM1MDA2MDM3YTM5NzhmOWQxZjM0MDJhZTUyZWYxOWY2ODk4N2NhYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst#L136-L144", + "version": "repo-lines-v1:sha256:819aec7a28f7c78740538b3dac152bc6fd27b7ea36fc036d5335a907cd7f3eb8:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzMyMWZmMGQwMThlZjBjNmRhN2YxMzUxMmVhOTdiODE2MTE5NzEzZjhmMzBlY2Y4Yzc2MTJmODZmNDJkNzAzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWQ2ODNiMjdlZGU0MTRlMWI5MzE2NTMzNjEwYmJkNmJlZjRlOGRhMzgzZjcyZTY2YzU1NGRkMDAwYmQ0MWM0NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + } + ] + }, + { + "id": "claim_04f24e1c6c304e8f980c3f00f7ac2981", + "statement": "hubspot-company-collect selects company records from the REST response's results property and maps provider id to _id using id_expression; the tutorial configures no pagination traversal and its ten-record expectation is specific to the fixture.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst#L130-L152", + "version": "repo-lines-v1:sha256:48206173947b31bd2f601fd715086fb14dd58356e17f7653dadd045131267835:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc4NTc4YTU5OWQzZTIyNmNiYWJhNzkyODJmY2VjNGJjMTA2ZDA2ODBiOWY4MGY2YWQxMjg2MmM3ZWNkYTQ2YjciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJlNjE0Y2Y4N2RmNzY5MzY4OTNmMzhiZTExMjEwMDQ2OTk4MWVkZjIyM2IzMmRiYjVlZGI5M2EzZDUxMTRkMTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L130-L155", + "version": "repo-lines-v1:sha256:bb1b137bb4861b2d5134562f4df235444aee5bb21222c864995109a3952cdfe6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEwZTE1Y2U2ODRlMTkwNTczNTJhYTkzNGQzYjZlNjE0MWMwOGNiMDY4ZGMwYTU5ZmQwZmJlY2U5ZjdkMmE4ZTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg5ZTI1NGUyZTlmMzE1MTkzODkxNDMxMzczMzBjZWU4MjlmNWVjNGJlMTQ2NTQzMjZhMzRhZDNkODNiZTViNGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY1YWJlNjJlYzNkYzE0YWVmMzg3MWE5OWVmYjY3M2I0MGIwMGZmZGQ1NDZmMThiODlhYzA2ZTFlNjI3YWJhMjkifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L193-L193", + "version": "repo-lines-v1:sha256:c358dc1cfa23bc2b48fd7d4d523803c6baf0483ddf3ac84b16f006bd44541458:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzM1OGRjMWNmYTIzYmMyYjQ4ZmQ3ZDRkNTIzODAzYzZiYWYwNDgzZGRmM2FjODRiMTZmMDA2YmQ0NDU0MTQ1OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzM1OGRjMWNmYTIzYmMyYjQ4ZmQ3ZDRkNTIzODAzYzZiYWYwNDgzZGRmM2FjODRiMTZmMDA2YmQ0NDU0MTQ1OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzQ3MGQwMzBkODgwYWM1NmNkMTc3NDcyMmYxZmVlZWM3ZDczN2U5MGI1N2M2ZDVjN2FhOTQ3NGU1ZmM4MmM5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTM3YTMxZDgwZWRmNTg1Y2FmZTkxOTJmOWEzOTMwZDYxM2JlYTgyZTViNzM3ZDY5Nzk4ZjEyZjNiMGRmNjhkOSJ9" + } + ] + }, + { + "id": "claim_a673247c455a4e4c99d13a0b28173661", + "statement": "enhetsregisteret-company-collect reads JSON from /enhetsregisteret, copies provider fields, and adds _id from orgnr; both tutorial Collect pipes disable automatic namespaces and namespaced identifiers.", + "evidence": [ + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L138-L191", + "version": "repo-lines-v1:sha256:68678c59524414a84b29d6a8102aa8f1cff158f016b31b5df5392ad16188cb8d:eyJzZWxlY3RlZExpbmVDb3VudCI6NTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEyMDAwYmQ0ZjkyN2EzZjJmMWYzNmMyOWUxYzYzMzE2ZmQzOTIzYTk4NTM1YmM1NDA0ZWVlNzg2NmM2MmYxZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYzYjI2NmY5Nzc3OGMxMTkxODIyOTEyY2E0MTI1MTk5N2E1ZjY3M2JmOTk1YWY4MDA3MWQxNDY5NzU3ZWMwY2QiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNkMTRiMTIyNDE2OTRiZWQ4YzhhMjI1YzhhNmM3ODM3Y2ZmYjZjY2RkYzFkZmM2Y2Y3NGMzOTBjN2YzOTAzOTUifQ" + } + ] + }, + { + "id": "claim_346d8ea97a334fa29a15f7633e8d3ddb", + "statement": "A source entity's _id must uniquely identify its logical entity within a flow even when multiple versions of that entity occur.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L6-L12", + "version": "repo-lines-v1:sha256:757bdd56d4a14110d293f7d0fad47fcb06ecd8ae5f22c83656806e730bae5afa:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDQwOWE0MGY0NDk2ZDdkNmFlYjllNjkyYTFhNmVhMzIwMzAyMTYxMjg1MjdmYzM1OThhZjMxNGVjMjAyZmYxNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDg2NmVhY2RlOTE4MzAzODY1MDFhOWM1YTViZjYwMDg4ZmM5MTBhZTYyZjAyYWVjODViODhiOWE3YmFjNzBkNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGI5MmYxOTU1YjZjMmFkNDUzNmY1ZTRhNTU0MDk0M2M1OGI1YWM4Njg4MGQ0YTNmY2I0ZDE3N2NhMTc3OTBhNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTE5NTBlZGE4Y2MwZWYyMGU0MWJlMGM4ZDAzYTg2YmYzODc5NzJmYWQxMzllMzhlZjhiNzBlODQzMGFlMTcyYyJ9" + } + ] + }, + { + "id": "claim_7a7f68e2425b440e9e9a538779c95573", + "statement": "The two-step collection approach retains raw source data in an intermediary dataset before semantic enrichment, allowing consultation and downstream reruns without another source delivery, especially for sources that can only push.", + "evidence": [ + { + "resource": "repo://hub/sesam-dataflow.rst#L27-L44", + "version": "repo-lines-v1:sha256:4e5b5c87ff2ad46dca8dec8a5f37c2984b4e21369c39d78d3d3ed623219fb302:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFlODAzOWMzMGUyYThiNDlmOGMwODY3YmI2NDlkMzlkYmU5ZTliZmU1ZTIzYWE3YmFhNTRiMGE4ZWFkM2JkNGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImExNjU0N2QzMjhiNDQyZjAxNDhjMGJlM2E4MDliZTVlNmIzMmNlYmVhZGZlMzIyZGI1YTA2MjJhNjU1NDQ4OTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYxODBjMWVkZTllZTQxNThhNmNlODBkOWRjNThhNmNjMTlhZDdhZWQ5NzY5NmY4Nzk1OGMyNDg4YTY1Y2EyNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgxNmEyOTFlNWNjYTFlYWQ2ZGQ0OWVmMTExNjI4NWU2OTIwOWIyZTAzNTVkMmNlZmE4ZTE1Yzg5Nzg4NDAwMGUifQ" + } + ] + }, + { + "id": "claim_46f04998607841c0b1a11aee5f3ef347", + "statement": "Dataset change tracking compares content hashes and stores only new or changed entity versions; stored versions receive dataset-local incremental _updated counters rather than reusing provider modification timestamps.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/datasets.rst#L6-L10", + "version": "repo-lines-v1:sha256:5b5ff563c911da552ba50940e6872d6af3abffcd29873c0afb06af8434e561d6:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWVmZmM4OTA1ZTNmOTdlMDIyMmM3NTk3NjA1NDcwYjdiMWFjZjcxNzMzYTA5MzBmZDAxYWQyMzhjZWFmMDJkNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzIzNDdlMGJlYTcwM2MyOWY2NTAwZmFjODE0ZmI0N2NjNWQ5NTY5YmU5NDQ3NmNmZDQ4Y2Y2YmZlZjllOGY4MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2MwOWRlMzcxN2Q0MDllZDU5ZDAzYzM3YjdmMjZjYzI5Mzk4YjYyYTc0ODk3NjE1YmUyNjAwYjg5ZDAxYTJkMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDU4MDQwOGZkMGYxODllMGUwMTA0NjcxNTRlZjRjZTQyYjBjZjVjZjQ4ZDk3YzA4MjFlNjI1MzRkOGI2YjNjZSJ9" + }, + { + "resource": "repo://hub/features/change-tracking.rst#L10-L20", + "version": "repo-lines-v1:sha256:e686473e01dab0c873635f14c499429e95698d4d98ab94a0fd0f233958df6c64:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg3ZWRmMjg3M2QwYjRmYTY5MzkwYjUyZTU3MGUxOTJjYTRlYTgxYWFkZGQ5YTk5M2UwZjQ0YTIwYTVjYjRlZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkMWZhOGVjZTk4Nzg5Zjc4ODZhNmIwZThlZWFkMTk1NDZjMzliM2FkZjE3ZDIyYzUxNTA5YmE4YWZlNmM2NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImIzNTdlNmJjNjNiNGFiYzgxODhiOGU3MDRjZDViNWZlNjFlODI0NDhlMzViYTc5MjFhN2Q5ODBmOTNhNDk2N2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM1ZTI1MmVhYTA4MWY0MjdkMzNmYTFjMTFjYTk1YmE5OTk5MjA3MmViZDRmOGJiYzFiYWNhODYyZTViNTU3NWEifQ" + } + ] + }, + { + "id": "claim_1d613ea97bbc4f36bf88d55458347a10", + "statement": "Raw retention does not imply an unlimited history: dataset compaction controls retention and defaults to keeping two versions per entity.", + "evidence": [ + { + "resource": "repo://hub/features/compaction-feature.rst#L44-L54", + "version": "repo-lines-v1:sha256:aac56c512ab3ab206f1bbb7500a5f7664a451a6a3b993e49acb4457cdfc70646:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjZDIyZDViN2RhYzY1N2QwODZhYTNjMjUwNWU2NDcwYTg5ZTJmYzMzY2EwNzUwZTI4Y2Q2NTdlNGVjNjE2ZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEyNWEyZjVlZGRkZDQ1MDZiNDJlOTFmMTNiNzY0MDA2MGRmYzdkMjQzMTRjOTk3NjNkZWJjMzU3MzIxNGQ2NzUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYyMmYzYjhlODgwMmQzNGUwMTRlZDk2Y2E0NjQzODk3MzRiOGQyMWM4YTI3N2FhNWE2ODBmMGY0ZTUwMDE1MWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2ZmI0MWViNzg3MzYwNWFlMTRiMTBmMTgzNzUyZGQ2NTMxYTFjN2I1YzAyZDM4OGU3ZGQyZWZkNGIyMTFiMjcifQ" + }, + { + "resource": "repo://hub/features/compaction-feature.rst#L8-L10", + "version": "repo-lines-v1:sha256:613edaa2efc6ccfeb889f952823222a47139afd422c3eee2cacb64040e967a9b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTJiZjkyNTRmYmEyNmFmYmY3ZjljMGQwYzFkNjlmYzAzMjI4MzM2OWY1ZmIyNjdmNjhjYWYzNzhmY2M1ODBkYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTY3ZTU1N2U5ODEyNWUzMzRkY2I3MmM3Y2YyNDYwZjNjYjViNTcyNDFhYmY2OGM3MjE5MDI4YTlmMDUxYjY2MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWY3OTMzZjNiODdjYzlhYWZkOWEyMmQ0M2MzYzM3OThmMDEwNjA4OTk4NDYyODFmZmU4ZDYxMWZhY2UwY2U5NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzQwYzBiMjViMDFiMTc3M2VkMTg1NWEyZGFiMzRiNDcyNDcwZmNiNjYzODc3NzdkMGU0OTQ1OTc1YzJkOGE0MSJ9" + } + ] + }, + { + "id": "claim_9fae3e4557bc476e843dfb38f0f159d2", + "statement": "Sesam prefers pulling source data because it controls scheduling and can request data again; pushed data may not be requestable again after loss or when reprocessing is needed.", + "evidence": [ + { + "resource": "repo://hub/features/durable-data.rst#L15-L29", + "version": "repo-lines-v1:sha256:8e5aadbc4d9a7bd02a0455fe0651b95b31de8288f8f08942a51557d36faad1d7:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQzZDE5MGUyMTliOGIyMmRkNDM4OWQ2NWY4YjgzZThjY2E2OGRkNWExNTllYWMyMzMyMTY2NjQ1NjM4ZGM1OTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJiMzRhNTAyNzVkMDMzZGZiMzM2MmQxMzNiOTY2ZWFjZmRkYTU2MGFjODMwZjQ4YTViNGIyNWI2MjE3MThlYmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc4OGFhMWMxZjZiYjdkYjBiNjYxMDNjMTkzYTAyODU3ZWRjZTZiMjUxZjk1ZWQ4NjRiMzJhMmU4ZDg3MzZkMGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlkYjQ3MmY1YzE1MjRhNDNlMjI0NzI1OTZiYjVlYjk3ZWVkNGMzZDBiMjM0MWEzNDEyOTNkNDNlYzA4YWIzNTkifQ" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L18-L23", + "version": "repo-lines-v1:sha256:e489e071f00c2237a96bbe83f4fa2596156c79bc5e340c45eaa7657fccdef123:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTEyZmYyNzM4YjM2MzNhZTVhMTE3YzhmYTBlNWRkMzQzNmVlMTdhZTk3NzgwYzYzZjkyZjU0MTE4N2NhOWNlZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQ5ZmUxMWJiNmMxMzllODBlNWQ3NjZiZmY5MmViNDgxNzRhZmNiODljOWUzYWQ2ZWJjZTEwNGZjNjQyZDEyMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzdjMDkwNzIzM2E5NDUyMzk3NjljM2FkNjEyNzYyNzIzZDgwNzY5NDg4MTBhY2Y1ZDI0ODExYjRjYzUyZDUxOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjE4MGMxZWRlOWVlNDE1OGE2Y2U4MGQ5ZGM1OGE2Y2MxOWFkN2FlZDk3Njk2Zjg3OTU4YzI0ODhhNjVjYTI2ZCJ9" + } + ] + }, + { + "id": "claim_c93e7f52a8da40dd8a5c49e7de8f8bee", + "statement": "REST pagination supports body/header navigation and operation-level next_page_link plus termination strategies; page_size does not enable paging by itself and is required for not-full-page termination.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/pagination-pattern.rst#L18-L41", + "version": "repo-lines-v1:sha256:0a7ea5c53d1e2cc9dd567b8edcf9fb864a88dddd66e40ec8289ed13106193051:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJlNGRiM2VkZjk1ZGZhMTQxMTU5M2YwM2ZlMTU5OWJiNTUyNTcwYmZhMDc5ZjcyNDlkYWE0MjE4YzUwMWU0ZGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhMWQzYTNlZDY4NDQ1M2FlNjg2N2EwMjY3Y2Q0MTU4YmU3NDlmZjE1YWZmMmYxOTEzYWY5MDI5MDE5OTNjMTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI5M2I2MWQyOGYyYTE2OTM0YTg5NmQ0MTdlYWM3MDQ1NmE5ZjQ0OTYyZjE0ZThiNTJmOTAzOWIxMzY0ZjZlZWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgwZDljZWFjMmI4MGY0YTVhOTM1Zjk0ZGFmZGQzOTFhODUxNDNiMTIyN2NlODQwZDYwZDE4OTdiMTJkNjUxZmIifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst#L6-L9", + "version": "repo-lines-v1:sha256:862f64ba0dcf1658079f4ffa12dcde3ff854d77c6af303a29436d66ab994a686:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTYyMDEyMTY2YThjYzc1OGFjMTM5YzA2NTRiM2YwM2Q4MTljNjA2Y2RmODM5ZjhmOTkxZWQyZGViMjQxMTkzMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDBiZDdkMWZmZTc4MTA3Y2JkMmJhNWI1NzA5NDdiZmY4YzBmOGJiZTBkNjA0YTg1Nzc3ODhhNzIwZTljZWY0NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTk4ODRjNmU3YmMxNjQ3NGEwYzM2MmQyZDAyNzZjMjc0Y2Y5ZjlmOWE0OGI3OWZlOWYwZmU4Mjc5NTIwYmQ5NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGE2Y2U2MzE5MGIzNTE5OTU3OWEyNzRkZWU2OTdkNDcwMGYyZDcyZWFmNjEzNGNiNTg5MDE3MDUwMWE0MWUyMyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L300-L340", + "version": "repo-lines-v1:sha256:bd6697d3adbfa54438c362e1611e1990cd0763d61d16685448f69d901f96e912:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU1YTgxYWRkM2ZjMjI1YWMyN2JhYWU5OTcxOTAwYjg2NzEwMzZjNjZhMTA0M2IxYTIxM2UzZDY4Njc5MTg2NmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFlNWM5Y2Q2MjcwM2FhOWYwYjYwZmI4OThiNjg4ZmM3MmY4ZDYzNGYyYmM1NTBhMTNkZjUzMjNhYmJjNmE3MTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_ce3971ece7b24c3186802e423613ac82", + "statement": "Continuation tracks an opaque source since marker carried in _updated and saved as pump pipe_offset; with supports_since enabled, chronological tracking takes precedence, otherwise comparable markers use max tracking, and neither capability means no tracking.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L189-L196", + "version": "repo-lines-v1:sha256:14e32068988e0f15279f8330b1ed9aebcf4c88314d221b665c042929052e9091:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDU5NWM4MjA2YTBjZjUxYzJkNDcxNzllOTI1ZmI2ODczMDQ1OTA3ZDY5MzViZWUxMjRhMjI5NGYyY2E1ODFhYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDQ2YmZlOTg3MzllMTNkZjQ5NmI2YTFiMzc2NDhjMzQ3NTBjNWFmZTgyYjc2ZDQyYjI0N2JlYjgyNjc0OGVmNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzViMDJlNmRiMmY0YTNlZjAzYjViYTU0YzllNWRkNTNmZjU0ODZhMmNmOThhMjlhN2MzZjhlZTBmMDYxYWEzMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYWI3YWZkZjllMTlmMjlkOTNiYzhhY2Q5Y2NmMWQ4NGM5MjNkNmFhOGI0MGRiMWNlMjI1YWYwZWUxZjJjMGYyNSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L249-L256", + "version": "repo-lines-v1:sha256:3a1a8f087316117fdbee8324beeaddab4ca34e9bfee06ceac4cf709ca7c9c5ff:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2U0YjYzNzlmOGIzZmNlYmNkNThmMzU0NmI2ZTM3ZDgxMTBiOTdmOWVjNWM5N2NkNWQ2ZTc3OThkZGFiMzk3ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2UzNTBiNjQxOWQwZGQyMDk2ZDg4Y2QzZTU2MGM0NDQ4YzUwMzFlNjE2ZWFkYjk0MWEwMWQwMDg4ZjY2NTc0YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDM2NzJhNjA0ZmUxNWJkZDQ3NDc5MDIyZTg4NWUwYTkxYjU3Y2ZlMTc2YmQ3ODMwNGJjNzZhY2YxMmZkOTYzMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2QzMDdlZTY2OTJmMjgzMzFhNGQwNDVhZjY5ZTg5MzRiY2I4NDZhOTlmZWVhZjU4NDU2N2Y1OTk0YjI0NWJlNyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L60-L65", + "version": "repo-lines-v1:sha256:a2de7b6c3c045ecd1e9a7138ef6df9488ded34f74457580034ae2b98a312b20c:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjJhNDBkYjIxZWU2OWRmNWU2MjY0ZTVkZTEyMWZlZWMyZTFiODQwZTI1OWZjZjI3Y2M2ZWQ0ZmI4NGFjYTA4ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjBjNWY4YTQyOGEzZGM4NjRkNDdmZWVjMmM3YmQzMjg4NTBjMzg4YzQ0NTQ0YWY3Mjc4MjlhMWQ0MGYxYTQwMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzkyNGQzZTllYTIxMTI0ZjhmYzdiNDRkNDM3ODBkMTYxODNjNjI3NGZjNzJjYjU3MDVmMmFlOTM5YmMxN2U1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTBkZDdlN2YyMWQwYTExN2UyNjBjZDg5NjA1NzMzYWJkZjg1YTJiNThhY2ZiMTdhNmViNDRhZDhmM2EzMjZlNSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L83-L86", + "version": "repo-lines-v1:sha256:1606cc643995383f8da52a99529a6a5469bb7156bf502514bb93806849e02ec1:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTc3ZjliNmM1YzI3ZDY1NWRhYWVhNWMzMDZmOTNlYWJkOTZkOWEwM2VjMzU3MWUyMTk2Y2EzNmUxMWRjNmNlOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDMzNTM5YzUwNzUzMjhhZWJkNzY5YWM1ODQxYjRiNGE4NjBlM2RiYzFjYjA4YzQ4MWVhZTVkYzQ3OTM1ZWFiZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2JlYWJiMjFhYTBlOGRkNDU0ZjkyN2ZhMjE0MGZlNDM4YmU2OTI0ZDA4NDViZmFhOTNkZGUzMTg4YWU5NjQ2NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2ExNzAwYmYwM2JmZDc4MjRkZTNlYTg4MmNhYTI2YWQyMzkxODA3ZTFhYmFiZGM5NmI0ZjRlM2QzODE3MzdmOSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L96-L146", + "version": "repo-lines-v1:sha256:57c9034ace549522eb4c5bf1987eee83a4d9963c432128f95de8f33c7f133b1b:eyJzZWxlY3RlZExpbmVDb3VudCI6NTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmYjk1YTBiZGRmMzZiNWM2YzEyOWUzZDhiZTlhOWEzOWVhN2M5NDdlNGEwNWNlYzU2YTE5NjRhNTBhNDI4M2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg2Njc1N2RhYTQ4ZDQwOGVmYTYwZWMzMTE1MTJhZDJjYTgzZDM2YjFmMjA4N2FlOWUwYWM5MGJjNGNhMTQyMWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE1ZDI4MzllY2I4OTcxNjU1NjYxMTM0MGQ2MmQwMWNmNzFlMGJhNjIzZjU4ZGE5ZjA2MGNmMmZmMzYxMDYyN2QiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhYjc2NjA4ZWFhMDM3NWI3NGUyMzdlNDMxZjRkYjExYzRjNjg0MmQyNTQwY2IyNDY3ZDJmY2NkOTM0MDBmYWMifQ" + } + ] + }, + { + "id": "claim_ad089f1712c441859a4880bf174d10ae", + "statement": "Continuation across extraction cycles is distinct from REST paging within a scan: continuation relays a since marker to query/header/manual request parameters and uses updated_expression to obtain subsequent markers.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/continuation-pattern.rst#L4-L23", + "version": "repo-lines-v1:sha256:df36d341e6a322143aed7c22b435fa058898af738edcc9af499246e9e17efc17:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRlZGNjNTk2Mjg4ZWFlMDc3MzA5MmM3NjRlNmQ0YjkxYzg3N2QxYzJlNjRlOTdiM2ZkNTY5M2M5ODQyNDI2OWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ3NzI3NTU0Y2U1YzE4OTE5ZDdkNTFiNmU3YmY0NGI4MjI4OGE5ZmI4NjZmOThlY2FiN2VjM2IyNjRiZjQzZmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4NTNlMzczNjIzMWE1NDczMjRjNzdlODFmOGViNjgyNDVkODhlNTZlMTM3MWFmZTVjYjAyOTU1ZTRmZWIzYzUifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/pagination-pattern.rst#L4-L26", + "version": "repo-lines-v1:sha256:27da10d4e67ff73b81368ea449bddb24104a99d9c96e24bc6d47ec9d571e6788:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVkYzJjNzZjMTExNmQyMmZkNzg4MTU5ZGRmNWU2ZWFlMWM1NzRjNGYyMjdhNzJhMzJiNzY0YmRjZGI2MDRmMDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4OGViNThmYTgyYjc4MDEzZTFhOGVhNDVlYzg4NmQyZjI1MzMzZjc5YjYwZDY5Yzg2MGM3ZjNkN2MzYWE1YzciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIwZTk1OWEyYTYzMzAzZWNkM2VlNTgxNTEwZTAwYjA5ZTcyNGVmZjZhMzgyZjU5NzhiMDRkOWE0NGIzNjVhZWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU0MjI0Njk2OTY1YWZhY2JlMWE1NTlhMGY2ODMzN2E5OGZhZWUzOWRjY2Y4ZTlhNTU1Njc2MWE2M2IxZDIzMjcifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L148-L178", + "version": "repo-lines-v1:sha256:f9f888c1de16f95552f0c9ae9836963f3259e5d900a7b27ae65252bc9029ec94:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgwMmEyMmRmZjdjMTVkYjc2NGJkODQ1MmY1ZjYyYjIxYTJiNGE3YmRlNTIyOGExYzNiZDZkYjQ3MjlhYjI3NWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUyNTgxMjk0MjQ2MjdhNDJhY2IyMWE5NTI5MDVmMjUwZDE2Yzg3ZDM2YjM4MzE2ZWVjMDFiMzA3YmNjZDhiN2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE3NDZiZDY4MDllYjNjMWRmM2NjYzc3MTIzNzc3Y2VjZmM4ZTE5NmRmMzAxMjM5MTI1Y2RhZmZmMTAyODBjMTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhOGMwMTkxMTZlYTRiZTIyM2ZiNzRlYWQzZTU5YTgyNWYxOThhMjNkZTljNTEwZmRkODQzNTY1YzNjNTc0OGQifQ" + } + ] + }, + { + "id": "claim_ca595f09d55a44baa8ae40cc70724a6d", + "statement": "An http_endpoint source accepts JSON Push at /api/receivers//entities and records incoming pushes as change streams, so absence from a later push does not automatically mark prior entities deleted.", + "evidence": [ + { + "resource": "repo://hub/custom-data-source.rst#L206-L241", + "version": "repo-lines-v1:sha256:6e39e9eff18a6d6463deaf92ff151a8f6f99c76f19340c1beae09a8d2b601d18:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5N2VhYjVhZTYwNjM5YWJmZmNlMzhkMjgwMmJkMmJjYzhhMzNhYWUzYzQyNzk2Nzc0YTQ5ODhkNjBhYzBiYjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhZjk0ZjZmZWM1OWNjYThlNGE2NDY2OGZmYmY4OWM3MWY2M2M0MTIxYWViY2ZjYTM1N2ZhNWQxZmUxZDExNjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ0YjBjODVjMzkzZWM2MGQ4ZWFhYzdlYTg0Zjg4MjgyYjZhNGQ1NGJhY2YwODdhMzdmMTlkMWMzNjlhNDQ0MjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_947f0c0d02bf4cfb8530f1b3413e4819", + "statement": "Incremental collection cannot infer deletes merely from absent records and needs full reconciliation or explicit delete handling; REST if_source_empty set to fail prevents an empty source scan from deleting prior output.", + "evidence": [ + { + "resource": "repo://hub/custom-data-source.rst#L237-L241", + "version": "repo-lines-v1:sha256:59e9c1da4a78da36ed465bc2e5a93cac4d57697a8b5007130f829a42601795e5:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTMwYzZiZWUyZGEyMTA4YmUyMTRjZDhmYzU5Y2U0MGQ5NDM4MGM2NDhkM2Y5Mjg2MjA3MDZiMDhmOTBmODU1ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmFmOTRmNmZlYzU5Y2NhOGU0YTY0NjY4ZmZiZjg5YzcxZjYzYzQxMjFhZWJjZmNhMzU3ZmE1ZDFmZTFkMTE2MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTBiMTczMDEyMTBkNTdhMzA1MWUxOWFhYjYxNmM0MTlkOTAyMjg0OWJlZDA1NWY2NmI4Yjg5YjY2N2QwMmI3NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst#L182-L192", + "version": "repo-lines-v1:sha256:f06b074115f558cd0b8d795904a5aebaf7e7a401124bbc26d25621297431bd86:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliZWIzZDliMmYxY2IwOTJlNTJkMWZlNDBkMmFkMmQ1NWVhMjg3OTAzY2FiM2MxMGE1ZGMwZGE4N2FlYzk2NmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE5MTA1YzA1NzY5NDQzMDU2NjllODg1OWU4ZjRjZWJiNDM4NGE4OGZlNTRiN2Q0MWE0YzdmN2MzYjYyOGM2NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRjNWNjZWYzODg0MTI4MTBhM2VjZDE3MDg0YWYwMzJhNjU1NWY1ZTYyOTg0YjY0M2U2YTdiNDk2MjkzNGU0ZGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYwZmJjMjc4ODMwNmQzMzgyNTdjZjRjNzg4MDQ2ZGZjYTFhNWQ4ZWY2YjdkNzcxYjFkNzI4YTc5NmY3N2NjMWQifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L67-L69", + "version": "repo-lines-v1:sha256:a9b320b2818e6e5dbc84dff5818e591fed436ace75f4e4565a2f17e49347a8ed:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTMwYzZiZWUyZGEyMTA4YmUyMTRjZDhmYzU5Y2U0MGQ5NDM4MGM2NDhkM2Y5Mjg2MjA3MDZiMDhmOTBmODU1ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODYyZjc5YzNhMGQwYTE3ODU4MzliZDVmMmJjYTZhZjE3MTExOWEyZGMyZjM1MjA3YzQ0ZmQ2M2NhMWVhODIyYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTA3ZmI1OTFmZjhmMjZmZDA5NWUzOGE2YTBhZTcyZTIzYjhlY2I5MDA5NjMzOGFhMDAzYmE1MWEzOGNmN2VkNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmEzY2Y1MTkyMzU0ZjcxNjE1YWM1MTAzNGIzZTk3YzIwZWRhOTk2NDNmY2FmNWJiZTZkNDFhZDU5YmQxMjE2NyJ9" + } + ] + }, + { + "id": "claim_822a7de491ad49019d73b65aad2a537a", + "statement": "The verify-deletes pattern performs a source lookup for a suspected deleted entity and adjusts _deleted based on actual existence, limiting propagation of erroneous deletes from unreliable scans.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/verify-deletes-pattern.rst#L41-L66", + "version": "repo-lines-v1:sha256:1a799260ec695b2c1a36294888614089e3a77408c386c0a29aac60f6e768e2e4:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmZjc2YzNjMDQ3NzgzOTViOWQ4ZjIwNDE1NGI4NWM1MzU0M2EyYWUxOTM4NjExNzBkMzg4YzIxMjM0YmQ5OTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI4OGRkNWE4ZmMwNGYyMTNiNDcxNDZhYzMyYTg5N2ZmYWQ3Y2M2ZmE2MzI3MThlYWJjNDk2NzQzNDg1NDg1MzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhkMDhiNGQ3NThlMDY5YzUyMDY5NDM2OTBiMzEwMWU4ZDI3NjdkNThiODQ2YmVkZmVjMDhmNGEyZDNmMTY0YjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYzOTZkNGFhOGNjNTdmMTQ0ODlhZDgzNTE0MWIxNjgxNmZjZWQzYzBhZTcwNzMwMjVjNzM0ZTU4Mjc1NDg1MjUifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/verify-deletes-pattern.rst#L6-L10", + "version": "repo-lines-v1:sha256:5b89340adb4a977ddf167e6e7a236ef58482600edd2451ffdc6e3e2dab6ac4aa:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2E5ZjM5NjQ0ZDFjNDE3ZjhjOTA1NzVkNzVkOTI3ZTE0YTg5M2JhNWI4YWIzM2M4NjA4YWEyMGU4Y2VhMGVmZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWQxYTJhMGNiNmY2M2FkMzVkNjVmMTVlMzY1OWY3MzQzMTFiNDZkZjg1YTNhYTM0NGIwMTQxNDNmNTAyNGMzMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODdkYWVkMDdlNjkxODc0YTFhYjMyNGEyMmY3NmIzNTQ3MjBhNWRmZGJiN2E1NmMyMDQ4MjkwZmFlYzE0OWJjMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjhiOTM0MTZkZDM1ZDRmODQwZDEyOThjNmFhNjI3NmIwM2Y2NzExZjQ5OGE3ZTJhNWJjYzIwN2ViYTVlM2RlMCJ9" + } + ] + }, + { + "id": "claim_14576e81e028400bbb0af881fdde297e", + "statement": "Webhook collection requires registration and provider-specific signature validation; use_webhook_secrets creates a secret and grants group:Anonymous write_data permission on event pipes, so payload validation is a security boundary.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/receive-webhook-events-pattern.rst#L12-L22", + "version": "repo-lines-v1:sha256:5550651e814a675af13baf4fbad4f22f60e15e3f231f2d88c65991b780565472:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNTY4MjcyM2RkY2JmYjU1YjUxMmJhMTMyMzc2YWVhYmM0N2Q4MjlmMTljMTVmOGJlZTIzMWMyNzI5NzYyN2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgyZThiNWRlODQ0YmUyODk5YWQwYTRlYmZjMzNkOTRkOTEyNzljOThiMDY0YWI3MzYxYjNmMGM3Y2FiZGQ0N2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ2ODgzZTc5MjI5ODUxNzliZjQ0Yjc3M2E2YzhkOTQ3ZGZkOWU0NzliNGY4ZGY5YzY1NWRhZjYzYWMyOGZhYzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ2ZjM1NmQ4ZTlkNGRmNTc1MjM2YTE5YzhhYjhjYWQxZDgzZjk3NzY3ZThhN2E1MTYxZWU4MGYzNTBhZjFjNWQifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/receive-webhook-events-pattern.rst#L40-L43", + "version": "repo-lines-v1:sha256:20cbcb1d1fed8e7d9e21f36be30c6c6b442f9a2df3b4b4875af7d8603b1240a4:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmI0NzdjYzM4NGI5YzNiNzc5MTA1YWI4YjcwM2M0NzlkMGRhYjIxMDk2NmY3OWUxODYwOWQwODViMWYwZThjOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDAzZjI5ZTY2MzBlZTlkODg3MWMwZWIzYWM3MDdhMmQ2Yzc5ODZmZWVmZmJkZDlhMDJmODRlNjA5MmZjODg2MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWUzMDEzMmFhN2NhNWY0MmIyZTZjYjNkNWE0OTdlNDc0OTA5YzIyZmI4MTc4MjJkNjc5ZmZiYTZjOWU2NjkxZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTQ0YTlkYmEyZTY3ZWJiNzg1YTBlOTk2NjQ3Y2EyMWNlMzc2YTI1MTc3OGUxYjRkN2Y0YTI5ODJiNjQ5ZDdmZCJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/register-webhook-pattern.rst#L155-L155", + "version": "repo-lines-v1:sha256:4bbdb48a752dafeaceffb22001426c4a552d33b7a561c81012fc3ee459bcc368:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGJiZGI0OGE3NTJkYWZlYWNlZmZiMjIwMDE0MjZjNGE1NTJkMzNiN2E1NjFjODEwMTJmYzNlZTQ1OWJjYzM2OCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGJiZGI0OGE3NTJkYWZlYWNlZmZiMjIwMDE0MjZjNGE1NTJkMzNiN2E1NjFjODEwMTJmYzNlZTQ1OWJjYzM2OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDRjYTNiODFlZTZlNjlhMDA1NGU3NWNmMzhlODFmNGM4OTc1ZGExMjgwMjYzMjU1NjlhOGUxMDk0NmU1ZjMxYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2JhOWU2ZmU4NzFmYTcwMDc0NmVhMGYyYmQ4NThhNmMyZGU4MGRhYzViNDhlMDg2ZGU4MjU5MzAyYzM4ZDBjYSJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/register-webhook-pattern.rst#L5-L29", + "version": "repo-lines-v1:sha256:629198abcb2c21ec227658941a82376efd5c3f266b15446461cb77504e41e3af:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ3ODE1OTU0ZGY2OTU3Y2MwNjY2YWE2YTg5MTRiZGViZjJlZmYyZjFhNmU4NGRmNGM0NjJiODk2MjVmM2ZlOTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU0MGU2NjBmMjQ4OTk0ZmU4OTU2ZDUxMzQ3ZGU0NzAyNmMzODRmNzczOTVkZDExYjRlOTBhMzZhODA1NGNkYWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNlNzIxM2Q2MjI4YTM4ZWFjZGEyZmU5YzQ1YTkzMGI1ZGQ1MzU0NzVmNjRlYzY2OWQ5NWNlNDAxMzVhNjA1NmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjllZjJhZjgxYzk1M2FiZjBmOWZkMzU1YmJmZDU3YzY4NzgwMzJhOWY5ZWVjYjdlM2IwZWFmMjg4YmUzZDU2YmEifQ" + } + ] + }, + { + "id": "claim_69f19f3596d04f638acc91b709ffb2cc", + "statement": "For partial webhooks the recommended pipeline receives in -event and performs the full-entity lookup downstream in -event2 to avoid blocking the receiver; shared event streams can be routed into datatype-specific subsets and combined with full scans through a merge_datasets Collect source.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/receive-webhook-events-pattern.rst#L126-L132", + "version": "repo-lines-v1:sha256:88c93fba705b1a1f27b61f444980e403b1f5f7e3baa23aa3cb620c6d976b48df:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTlhZTk1Y2JmYjlmZjIzMzMxYWVmMDNhZGNiZjdiNzc4YThiMTU3NTVhZWFkNzUzYjU2ZjFjNDM4OGMyNjc4YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjc3ZmUwYTBjMDEzOWQyODkzNDQyZGZlMjE1NGJjODMyOGQ5ZGUzNDM3NWMwNDcwMjNhMzc3ZTUxMTEwOGYxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWVjZjkyNDJiZTFlM2FiNDAzMGY1ZTEwZTYwZWY4NTE0YjMwNjg5MjE1NjRjMGExZDNmZDZmMjc1NTQzZmFkZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmZhN2I2M2E0NGJkN2Y5YWUzZDMzYzg5Y2EzODgzZTYyYmViYzBiODMyNDc1MTNmMGE5MGMzYWEyZmUyMTFhNiJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/receive-webhook-events-pattern.rst#L168-L189", + "version": "repo-lines-v1:sha256:48356230853b482486588fcb96eaeaa8d1f1df368cc11deb47c22cedab449ea9:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVjOThjMWJkMTViMTQzYWMyZDI1NDFjMGFkMGQ4NjE2Zjc1YTk5NDYwMWYwMjgxZTE2MDM2MWFmZTRiY2IxOGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNmNmI4NGU4NGE2ODQyOWRkNDZmNjBhNzQ1Zjc1NzY0MzAwYzA0OWQyMTE1NjM1Mzc0NDI4OGEzOGNlOWQ3YWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoyLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjExMmJiOGMzM2NlZDIwZTM2ODQzZGEwZDFjM2UxOWNiNDE4MjFkMjMyYTQ2NzNkMDNiNDg5YTI4NWE3OWJmMDgifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/receive-webhook-events-pattern.rst#L50-L53", + "version": "repo-lines-v1:sha256:7c361241ffea47f6fa2ff5081d1ec19beca969634e018d93290f84e06e1e36ef:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzRmYTlmZjgyYTcxMDU4MDFjZjk0NWI2MWNiOTM2YmU1ZjFkM2JhMzk0OWQ4MDJkMjY4Yzg5Nzc0NGVjMjk0MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGMyMjRkZWZlY2U4YTlkMDUzYjNiZWY3NjdhMzU5MzRhZmEwYTViOWE2NTAzODk3ZDZjMmU5ZTY5Zjc0YzBlNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWEwODllNDRjMmQ0NmE2MGRiYjAzNGZkYTA2MmNhNWM3ZjRmZTRlZDY0N2MxMjIzYzJjOWNlYWUyNjI4Njc0YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDI5NTVmMjJmYTcyN2ZhOGVhY2NlYmM3YmUwNzVjMTA2Mjg0M2MzYzJkNjhlN2E0NmM4OWM2OWFjMGVmOWU0MyJ9" + } + ] + }, + { + "id": "claim_3d99242ed8be447fbf5ca04aa9c95936", + "statement": "A custom JSON pull source service exposes a JSON array of entities with _id, optional _deleted defaulting to false, and optional _updated for continuation; JSON Pull retrieves streams over HTTP GET using since and limit.", + "evidence": [ + { + "resource": "repo://hub/custom-data-source.rst#L7-L22", + "version": "repo-lines-v1:sha256:4b46af0832c7417d00ce4140f8e53da7c8162184c37e9a95ef823d7340aec67c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVkZGVkYjcwNTAwYTYxOWNhZWZhMWY3N2ViOTQ0NGJiMGFmNmY0MGM1YjhmMmRkODBkOGQ5M2M1MGIwOTBmYzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA3NDRlYTkyNmJmODRiMTk2NzE3NDA3MmMxM2E3ZjUyYWM2ZGE3OTQzOGQwZGEwN2UxNzdiODQ3Mjk4ZTg4ZTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjcwMmYwODVhZTQ0N2NmZDJhOWY2OWRmYzc0YWVmZWIwOWUzOGVjMWYyNWUwNjk3YjgyMmNhMDg1YmU4M2RiMzAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdjMDIxMDIxMTZkYTAxZDVhYTk2ZmJjYzZmYTQ0ZDMzZmNlZjZiYzg5NmJhODVjMDMyZDVhOWU2ZGVkYWI0MzQifQ" + }, + { + "resource": "repo://hub/json-pull.rst#L29-L62", + "version": "repo-lines-v1:sha256:86dd19b7ec8b4945835af29dfd3c7ae7469575589f8b1b42e88211b17dd9956c:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1NjBjMTg2YjliNTc5M2JiYmE0NWE3YWEzNmUxNDkxZWQ3ZmYzOWQ1Y2VhMGQzMWQ0OWQ4N2ZlMzk4NmZkZTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2MzU4ZGExN2I4ZTkwOWUzNzQ5ZWE4ZmIxZTU0NGYxZDkyMGQyYzZmN2UwMTEzYTRiNzAzMmI1MzRiMDdiYTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJlODIzNGEyNGY3ODUzMGMxNjhlNGJlZDBlNzE4NzIxMzlkYjk3NDU2YjUwZDgxZGMxYzk5OTcyNzNkN2ZhNmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY4NWNhODk1Yjc2ZWEyYjZiNTUzMTAwNGM3MjNhMDQ3NDBhZDIxYjViNmVmNjFmN2M4YjJkNGI3Mjk3ZWRkMTkifQ" + }, + { + "resource": "repo://hub/json-pull.rst#L8-L15", + "version": "repo-lines-v1:sha256:ab65408abf2b4530ca1a73deb3c7678497b2af1103afae69107e1fd3ec8b4b1a:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTRhZTJhMTRiYzQ3Y2VmYjU2MTgxMmU3ZjNkYTNlODE1YTU4MzdkMzY2ZTk3ODdhMmM4MWVkMzUzZjRkZWJhNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGYxMDc4MGM5MzAyNmU0NTg4MDA5ZDg1YWUzZDY2Y2YxMTFkZWVkNTNiNDg4ODRiNjI5ZGU1OGQ0MTZkMGE4MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWQzODVjOTE3Nzg4ZDk0NjkzNzAzZDE4Zjc4MjBiZWFkNWZiZTdhNDgwODNjNDFhNDc1MjNmMDA5ODVmYWRhYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODZmYzcwNmE3OTU1ZDlhNTQ1NDYxZTMzZjRmZmFmNzZmN2IxMjU5YmVkNDUzNDE5MDExZTY0MzIxOTMyMGY3OSJ9" + } + ] + }, + { + "id": "claim_00a6154609f144a597ea25639e86f17a", + "statement": "Developer extension points support custom sources, transforms, and sinks through a URL system connected to external JSON Pull/Push endpoints or through a Microservice system hosting Docker containers.", + "evidence": [ + { + "resource": "repo://hub/extension-points.rst#L7-L19", + "version": "repo-lines-v1:sha256:686fc2c5cde95f5fff5365d60c34f6df1d2798c76e0ac0c29a2487ab4a793a38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJhY2EzYzFjNDFmNmViNGY4ZDdlYTgyNGViNjI0ZmViYTMzYmVkNmFhNTk3ZmExZjk4ZDZhYmI1NDgwOTA0ZTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4Y2IxOGFkMjhiYmQ5MWFiOTNmMDU1ZmQ1MWJkMWI2NWJlMzNiMmEzMGRjYzRkZTMwMGUzMmI1ODE2YTc5YWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ0OTUyNzlkMzQ0MjQ0ODcxODU1NTJiZTg0YWM3ODg5NTkzNDkxNmJlMTAwMmMyMWIzZjEyNTAxY2UzYTI1ODMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNmMDJjODQ0Y2I1YWU2NWI3ZjQ4Njc4OTMyZTVkZGM1ZmZiNmVmZWZhMTA4MjVmY2I2MjU2OGJkZTA3MzVmNWIifQ" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L265-L270", + "version": "repo-lines-v1:sha256:ee7e1405cdb781d45f08f471663e8b1827600ce12faf807a8aaeec4b7efd136c:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTk3NDM2OWIwMTFkYzc3Zjc5ZTRjNDMzNzA5YWUyMzEwYmFhYTFjZmIzOGQzNTNmYWU2ZDZkYjAxNWYwZTQ0YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDY2MmZkNDEzMWJjZTU3M2Q0YjdmYTQxM2IyYjZlMjEyNTU1YjgzOWI1ZDkyMTRhOTBkMWExN2VmZDk2OTM4ZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTliY2UwZmIxZjVkNmYzN2MyMTdkMjlmMjUzMTczNmYzNWMwZDM1ZmUyMjIwNjcyYjgzZGZmNTBjZTdiOWE2ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjRlYWFmOWI0N2E2MThhMzdhY2U0NmVjMmIxMjkyODJiMDIyMDk0M2M3YjNhMTFmZDViYzFmNzMxMDkxZjI2MyJ9" + } + ] + }, + { + "id": "claim_8d9a5a0d185e4c7cb73f54d754d9c8eb", + "statement": "The Enrich tutorial reads the two Collect datasets, preserves source properties, assigns source/business rdf:type NIs and identity/property namespaces, and converts HubSpot contact associations into hubspot-contact NIs in properties ending in -ni.", + "evidence": [ + { + "resource": "repo://hub/sesam-dataflow.rst#L69-L73", + "version": "repo-lines-v1:sha256:0b7c9e8bc635617c33054f546404d6da5fa6b716a1dd8901468acbbdd8ee4099:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2VjZjZhMGU2ZTYxMDgzNmUyN2NhZmM4ZmMzNThjMTA4Y2YxYTRjZGU4ZTE4N2E3MDhhNzAzMDIzNTNlYzhlYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTE0YWI0NjBjODQ3MDg2ZDlkZmYzYjcxZjdkZDM3ZTJmODVjYjY0OGI0MzQwMjYyNjliYmM2YjY4MWYwNWE1MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjlhMmZmZGI3NWRhMmQ5NTk0MDdhODYyYWRiNTVjY2QxM2EzODQ3ZWE0MDQ4ZGMyYTliZDBkN2E0MWRkZTlmZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2Q3OWJhNDk5OTcwY2Q4M2Y2MGZlZGVlNzE5NzkxOTI0MDE2YjUzYTg0YWZjNDY3NGFkOTc0MTIxOWMwNGEyMyJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-enrich.rst#L34-L68", + "version": "repo-lines-v1:sha256:309568e3c60b03cf9a059f8e1cec84f876cbecbde8cbddeec7ad305bd0e2efac:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEyMDAwYmQ0ZjkyN2EzZjJmMWYzNmMyOWUxYzYzMzE2ZmQzOTIzYTk4NTM1YmM1NDA0ZWVlNzg2NmM2MmYxZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE3Njc2NDkwY2FmOGQyOWVmNTFhMzExYzBkZDc2NjJmMTNmZmRlZDVjNWM5NWIyMzc0OGNjNjQ0YzBmMjMyZGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM2YzdmNjkzMTA0Zjg1NzZjMzM2MDViNGViMTI1YmM0NjU2NmQ5MWUyMGM3MTBjYjAwMzhhNWZjZDVhNjBlMmQifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-enrich.rst#L70-L84", + "version": "repo-lines-v1:sha256:032d764093f36d5e88b21e59827f6da55f2895398687edd81a87b86c03be834a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwMWZkY2FmMDc0YzgxZmQ1YzM0OWI2ZmVlNDMzNGM1ZGZjOGE1YjFjM2U1YmJiYmQ3YTlmODg2MjIyYzk5NTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkZDI0NDU4MmI2ZmIwM2QyM2I4NDE1YWJlY2QzNDZiMGM5ZjQ2NmI2Zjc1MmIwNjgxODljZTdlOWEyZGMzNTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA0YjlhMGIxNmI5OTEwYmFhNWQwYTRkY2FmZjhhNjBjNDI5NjMzYmYyYWUzY2JhY2M4MjAyOTA3NTgwZDEwY2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ4MjRjNGFjYmJkMjc0ZjRjYjNkOWI3NzUwNGIwYjdkZDcxMDBkZDQ5ZTI4NDY0ZjAyM2NhMTJmMDYzNzc1MDIifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-enrich.rst#L98-L126", + "version": "repo-lines-v1:sha256:c4f4464816d41173bc97b959552cbdfc5fdf6a49ae34544caaf5f657133ab02f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEyMDAwYmQ0ZjkyN2EzZjJmMWYzNmMyOWUxYzYzMzE2ZmQzOTIzYTk4NTM1YmM1NDA0ZWVlNzg2NmM2MmYxZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ1NTdjNjVlYmZmNDY0MWM5OWE0MjhkMzNkZDMwY2YxZjhkMGIxOTZlNGJkZTM5NDMzY2ZkZTQwY2RkNjJkNTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE3Njc2NDkwY2FmOGQyOWVmNTFhMzExYzBkZDc2NjJmMTNmZmRlZDVjNWM5NWIyMzc0OGNjNjQ0YzBmMjMyZGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA3ZWE4NmMzNDExYTVmNTQ4OTIzMzdkOGU4OTYyZTk2MmRjMjMyNDcyMzcyMDFkMDYyZWFhMjA5NzU2NjczNWQifQ" + } + ] + }, + { + "id": "claim_786bc2411e574b7a874eb8f112c34210", + "statement": "Namespaced properties preserve source lineage and prevent same-named properties from different sources colliding; NIs are foreign-key-like semantics rather than enforced relations and should reference actual entity IDs from the same source, leaving cross-source equivalence to Connect.", + "evidence": [ + { + "resource": "repo://hub/sesam-dataflow.rst#L100-L106", + "version": "repo-lines-v1:sha256:06a38f487cb160bda7a50d29a4dff700ea408db78201cc8a37af415e60f21d76:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGNlYThiMzZhNzQ5Y2E2Mzg5ZmJjNDU4NzEzNzIyZTNjN2YwMmE5MDVjMzgzMDk1MmYxYTQzZTRhMzM2MGFlYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTFjNzA0OTNmYjI0MmZlZDI0ZDUyYmNmOGQ4OTI1NjIzMDZmNmI0OGE2NDZiNGZiZTBkMTg0YzA0NmQ2MzE2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDFhZDFhY2FiNmZmZmRlMTBjMDA3YjhlYWI1NWE1ZDdiNTRlNDAwZmI4NzU1YmVjZDY4ZmQxYTBjZDg5MTVhMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjdlNTZiNTcwOWEzZGJiOWFhZTE5MTFhNmFjMTk5NDJkZTQ0M2MxYjcyMmI4NTU0Y2VjYmFjNmY3MmRmNmRlYyJ9" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L115-L131", + "version": "repo-lines-v1:sha256:eef9cf2b078e713f4c0e8d12053153a62dcd0c788bdec0c84023758ec39fd304:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4ZmFmYTI5MjIwNDJlOGQ0NjY5MWZiMTk4MGRjOTE1ZmIxODhlYzdiZWM0OTRjYzdiZjNmMzNjYjQ5YWJkZTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE3ZTg5YzdkZDVmNmJlYWI5ZTEwMTA0OTkwYTE1OTNmM2I0MzlhYTdlZDQwYjJjY2U1YjJkMGU5MmZiMGExNzAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIxYWNhOGY0Y2I5ZGIxNWE3MjVmMjYzOWMwZWQ0Y2ZhNTYwNGFlNzFhNzMwMGY1MzQzNmViOWUxMTFkOTljOWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI2NzkwMWJkYWVhMTJhYjA4YWVmODRmZDA5YjE2Njk5ZDBiNzFiYTM1Yjc1OGYxYThmNWViMmY1MDcxMGQyM2MifQ" + } + ] + }, + { + "id": "claim_b989c4035bb0493c841f5bee62bf6a00", + "statement": "The company walkthrough constructs contact references but its Collect pipes only fetch companies, so it does not establish that every constructed contact NI resolves to a collected contact entity.", + "evidence": [ + { + "resource": "repo://hub/sesam-dataflow.rst#L124-L124", + "version": "repo-lines-v1:sha256:f4a8e9c8ce9a9d9b63733e28e2e8230950a86b84114ec786da402de6c0697e82:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjRhOGU5YzhjZTlhOWQ5YjYzNzMzZTI4ZTJlODIzMDk1MGE4NmI4NDExNGVjNzg2ZGE0MDJkZTZjMDY5N2U4MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjRhOGU5YzhjZTlhOWQ5YjYzNzMzZTI4ZTJlODIzMDk1MGE4NmI4NDExNGVjNzg2ZGE0MDJkZTZjMDY5N2U4MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWVjMmY1OWQ1ZGFkMzQ4MjEyOGNmZGYzMGQ5YmQ4M2JlMTlkMjg3OWY3YjZiYWI0MjNhYzhmZjY2MDVjZGMyNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTBkZDdlN2YyMWQwYTExN2UyNjBjZDg5NjA1NzMzYWJkZjg1YTJiNThhY2ZiMTdhNmViNDRhZDhmM2EzMjZlNSJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L130-L191", + "version": "repo-lines-v1:sha256:06dd43cbe6ac81b54c2253d0d60b037313c2e3b0dba9e262ae696fdb1892de4c:eyJzZWxlY3RlZExpbmVDb3VudCI6NjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEwZTE1Y2U2ODRlMTkwNTczNTJhYTkzNGQzYjZlNjE0MWMwOGNiMDY4ZGMwYTU5ZmQwZmJlY2U5ZjdkMmE4ZTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg5ZTI1NGUyZTlmMzE1MTkzODkxNDMxMzczMzBjZWU4MjlmNWVjNGJlMTQ2NTQzMjZhMzRhZDNkODNiZTViNGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNkMTRiMTIyNDE2OTRiZWQ4YzhhMjI1YzhhNmM3ODM3Y2ZmYjZjY2RkYzFkZmM2Y2Y3NGMzOTBjN2YzOTAzOTUifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-enrich.rst#L48-L59", + "version": "repo-lines-v1:sha256:ff60790eff709b7daa49e39cbb98110ceb5e773c8bbee4069b12b15037cb7e89:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEwNGI5NDVjZTI2MjY2OWIyOGE1MmZiMWE2MTU3YjUwM2QyNGVlYzA5YmEzNjJhODcwMTVkNGE4MWUyYjM5MzciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU3ZjIzNDI0N2I3OThhOTE3ZjI4MmM5YWU4NjU2MWYxMTAwYmJhYWNhYWQ5MzdjOWYyY2VmOGUwNzdlYzA3NzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM3NzAyNzc4MTYxYjAxMzQyOTE3Nzg2ZDM4NDBhNDRkNzFkZWJhM2FiOTgxOWJlZDM1YWJkOWRjNDQ4YzIyOTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJkZDVmYTA2ZTBjYmI3MGZmYzAxOTIyOWQxNTcyMTljNTBmNzNiYmRmNzU1YjM4YjE0NGUyNGNjODcwYTU0MGMifQ" + } + ] + }, + { + "id": "claim_07a13a66ef974a888fb1687798dd2d1b", + "statement": "global-organization uses a version-2 merge source over hubspot-company-enrich and enhetsregisteret-company-enrich, equating hc.properties.about_us with ec.orgnr while preserving and aggregating source data; this use of about_us is the tutorial's organization-number mapping choice.", + "evidence": [ + { + "resource": "repo://hub/tutorial-getting-started-connect.rst#L34-L45", + "version": "repo-lines-v1:sha256:d218356542196e41b547f560fe10e8dd5118d5821ff58c32697d50444d935d26:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxMTFmMjM5YWM2NWM5ZmVjZDRmNzk3NWQ0ZWUwYzY3N2I1OGE4ZWE2Nzg1MmVhMjVkMjc5MjM5MjUxOGQyZjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFmMGNkYjk3MmE3YmZiN2VkMjQ2ZjlmZjY3MjM4NWU1NWY0OTY4ZmMxMTA0M2RjNWI2ODRkNTFkZmEzMWRiY2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYwNGNkYTYwYzgxZWJjNTE0MTgzZTBmMzNlMjJiNjNhZjNkZmQwZWE3NDkwYzUxZTJiN2RiMzExNDY2NWM0OTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc2ZmJkZjM4NTg2YjQwNjk4ODI3ODJlNTk5ZDdjMThiYjhjM2MzOTZhYmRhZDUxOWEwOWZmYjc3NjUzZjc5MjUifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-connect.rst#L85-L98", + "version": "repo-lines-v1:sha256:7b4f2665262d71d80b1590d200938a3c695309e2f4ed6279e7c157bbccccc4a5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1NjMyMTU5ZDE4NDEwNjAyMGM2YTlkMGM1YzNkOWMwNzQ2MGI5MzFjOWZkOGI4MGU5ZjY2Yjc0Yzg1Y2JkZjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA4OGFlMDA4NDg5YzlmMjY4YThjMGY3YjczMGM3NTM5NThmZmY5NGRhNjNkZTVjNjM0ODJjYTExOTRhMGU4MWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJhOWI2MzE0ZDYyYWIzOGM2NzZlODVhODU5ZTI4MzQwYzQxZmJjOTQ3NTAwNmFjNThlYWFkMjA1M2VjYmRjODciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA5OWI1NzNhNGE0MjQ4OGY0ZDExNjk1MzYxNjQ5NjljZjczZTcyZGZmMGFmOTc3MTcwMmE5NGMxNjY4ZGQ0NDkifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-transform.rst#L54-L59", + "version": "repo-lines-v1:sha256:4031080948d9462fd767f961b8ae102ebf177b1ea18d4476816e7fd650dc9fe0:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTZhMDlhNGFjYTFhOGU4YzNkYzQzMjdhODdhODYzYTlhYzA5NTE0MTgwOGNhMTI2OGQ3ZTg1ZmQwZmNiZmRhMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGY2ZGI2OWY1N2MxNGNjYTMxNzA5MTNmYzkyOTQyNzZlYWU5MmEwOWU1NGQ0MWFmMzc4NjBjMDJhOTgxYTMxNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjVkODE0N2IyNWMxYjYwYTZmZTg4ZjcwODFhNWY5NDU4N2I4ZjhmM2EwMDg3MWE4MmFmNDg5NzBhOTQ1YWMzNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGViNzIxOWFkNDBjNWMzY2E5NDQ5YTMxNmZlNjRkNjI5NGZjZTY5YWNjYjJjZmYxMTQ4OGFjMmM1YzU3YmU5MCJ9" + } + ] + }, + { + "id": "claim_ad80d4cee5374c1b9a1555a938932850", + "statement": "Merge-source equality is transitive, and equality expressions yielding null or empty lists do not cause merging; unsuitable merge values can be filtered to prevent unintended connection.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L25-L30", + "version": "repo-lines-v1:sha256:eca143eb5fc45878fa4eee0d395aa8bd250213b4cb8b0115b734257b895c2e3e:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2E1NTc0YTUyYzM5Njg3YzI0YTBhNzk1ODhhZTUyOWFkYzcwZDUyNTUwMWY2ZTU3ZTM1NGY0NDE5NDlkNGUxOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzJjODBiZGIyZWQwMmQ0M2JiNzBhYTE3NjA2N2JlOTdkODg3YjQxMzM1NTcxNjllNWJlMGM0NThkMTYwZmY2YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzFkNWJkOTMxNzBmNzk0ZTA1OGVkNWQxZGRhZDllMDQxMWExMjk2NWU3YmVjY2Q3Njk3Zjk5YWE1OTc1ZTJkNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2Q2MTI3MTQ4OTlhNzU2YzUxMzJhNmQ1ZjY5YmEwYjU4ZmQ0ZDFjZjkxZWU4ODVjYTdmNzYzY2JmMmYzM2YxNiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L6-L10", + "version": "repo-lines-v1:sha256:e742c9ea582e15ed1628e88f995be73c55a3cdd6c0200d53dff0e8f7ed4b8976:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjRmMmJlOTdjNDRjNDNmYjg2MGYwMThkNmU5ZWQxN2IyMzFmY2JjODY2ZjU1MmY1NWY3MDllODc2Njc3OTI4NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2NlOTFjNGU2ZmM5YzUxY2JmMmU0NDQzMDhmYzMwMzQ0Njg2MDA5Y2RiZmE4N2Q4ZjI3NjJhZDMyZjBjOGRkNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWU2NDNiMzVkOGQwOTljMDcyNWM4YjgzOWRiNjg5ZGQ1N2VlYmQ4YTBlZWUwODU2MjNkMTI0OTE3YTlkNTZjZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTNiOTQ3YTE1Nzk5NzNiZjg0OWIwYzYyMWUzNDZiZjAwMmJkMTdjMzk2ZWYzYTUzNmViYjc1YjI1NDA5NDA5MSJ9" + } + ] + }, + { + "id": "claim_2fd97571ab88454f8524b4528fd9d11b", + "statement": "Merge identity first selects the first entity ID by dataset order and entity ID ordering; it controls merged identity, not the authority order used to select global property values.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L160-L185", + "version": "repo-lines-v1:sha256:465d5084996dce754f7b906020d7b1ba8d2ecf9022e3b1e97a4cdd5b4d5963ed:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE4YTJlYTc3YmU0MTM3OTcxZGMzNzQ1ZWY1ZWQ1Y2E4MTljZDBhYzk0M2Y2YWVhN2Q3MTJiYzBjZjc3NTI4N2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBkMDVjZGU4ZmEwZGRkMTgzZmQ3ZTUxZjg3MmQzNmU2ZDNiYjVkMmIyZGU0NmVmZDVkM2NiYjEzY2YyY2ZlOGYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkwMTlkYzJjNzExOWVjNTA3YzkxYzE5YWE5NThmNzE4MjZiMGRlMjE3ZWNjMmIxZDAzZjE4OWJkMTQ4ZWEyYWYifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-connect.rst#L43-L75", + "version": "repo-lines-v1:sha256:e13512499e169d0fa8f7698911a1b79c91870a6cadab356322948a5c7471afa4:eyJzZWxlY3RlZExpbmVDb3VudCI6MzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlZTMwMDM4NjgyOGRjZmZmMmU0OWYyM2U2OTU5N2RiYzYzZGJlZWZkODUwNmE2ZTBhNDg3MzAyMmFkNGEyZTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUyYmRhNzI3MWQxMzZhNGNhZDIzY2VkYzlkMDI2NmVhM2QzY2EyMDM1MThmMzcyNmYyYjE1YTRiMzFmMjlhZjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU2OTU0MWQ2YjcwMzVmYzZiN2E1YzE4Y2EyNjhhMDc0ZTc0NWNmZWMxNjI5YTg2ZjI1Yzg5MTJlNWMzN2Y3NjIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFhZjNmNzVkNDI3MTBkNTUyYjQzOWNjYzM3NTM4YTFiODBhZDY0ZWEzOGYwZGM1MmNiNzAzNTYyYWU0ZDYyYTYifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-connect.rst#L93-L96", + "version": "repo-lines-v1:sha256:51cd8147548a693f38617f6066af6ef8b7fe0002d4d69a80b66990f41e40ce99:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWUzNzA5YjE2NzM4ZDUzZDVlMDZiY2ExNWY1Mzk1ZjFmZTc2OWQxYzJhYmUzNmMzNjg0ZTRhZjQ5ZGFhYWZhZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmI1MjdmYzVmNTFkNmM4N2IzN2ZiNzFmODNjMGNjY2NhNDQwYjEwOTVlM2QzYTVkYTEzMzQ3NThiNDAwNWQxMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTEyZTcwYjM1MWIzZTlmYTFlOTViZDIxNTA3NjBhYjBkNjA4YTVkMDRlNjRhM2QxOGYxYjg1NTg1MzJlODNkMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzFjNGE5NjYyMjU0MTllMWNmYmI2YTA1OGE4MDcwNWNjMTFlZDRhZmNkNTNmOGY5Y2Q4YjljZDg3M2JlMzM2OCJ9" + } + ] + }, + { + "id": "claim_c5541f8869754416bca8dc3c4cd0cc1c", + "statement": "The Connect example copies merged source properties and adds global organization number, name, address, zipcode, and city using registry-before-HubSpot coalesce lists; coalesce defaults to the first non-null value rather than the first valid or nonblank value.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-nulls.rst#L18-L24", + "version": "repo-lines-v1:sha256:6ef1812bfb4a1eab392dc0edd71ecb3151638dea5048ae8a4e62a517f6d62f2e:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDE0ZmM1OWJlNDY2MDFmZTgwZjE4YmY3MDIyYzJiYjIwNzU1ZDE3MTA4OWYwYjc4MDFmNjJhZDk4OWI3ZTg4NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMzNGQ3YmY1ZjI5NWZhM2RlNWI3ZDU5NGUxMTQ0ZWQzMzhhY2Q1MDg5OWNjNmJhZWVmMTg1MjQzNGFmYzQxNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2FhZWI3ZWYyNjBhMTRmMWQ5M2MzZWRjYzc0YzAxZGRmYzhiOWE3OGY0N2NkYmViMmU4ZTE5ZTc1MTIxZTI4YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGUxMTA0MjhmNGQ3NTNmY2YwNTQwYjkzNTE2OTk1ZGU5ZDA0YjA0OTE5MDJjMjQ4OTI5ZDIxOWU2MDdiZDNmOCJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-connect.rst#L49-L75", + "version": "repo-lines-v1:sha256:22fa1e0e417c8a357aa168894701abbf9977584ebe4a3d55633caa4e93022c4f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkwY2UwYWRhYjdiYjM2OWNhOTAwNTMyYzk5MjVkNjhlYWFlN2U3NTVjNzNjZmExZjA5ZDA4ODVlMDM0NTE2ZjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUyYmRhNzI3MWQxMzZhNGNhZDIzY2VkYzlkMDI2NmVhM2QzY2EyMDM1MThmMzcyNmYyYjE1YTRiMzFmMjlhZjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc2ZmJkZjM4NTg2YjQwNjk4ODI3ODJlNTk5ZDdjMThiYjhjM2MzOTZhYmRhZDUxOWEwOWZmYjc3NjUzZjc5MjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFhZjNmNzVkNDI3MTBkNTUyYjQzOWNjYzM3NTM4YTFiODBhZDY0ZWEzOGYwZGM1MmNiNzAzNTYyYWU0ZDYyYTYifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-connect.rst#L88-L96", + "version": "repo-lines-v1:sha256:93555b7207447cdbd011f810a9e6dda7404b3fbd47d6c434d7524122fc28975d:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjkzNmM4YTViOGE1ZDFjNDg3M2E0YjY3YjZkNWJlZGJkMzhmMTQ1YzVkNTMwOTUyZDNiNzc2NDY1Mjg3NmY3YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmI1MjdmYzVmNTFkNmM4N2IzN2ZiNzFmODNjMGNjY2NhNDQwYjEwOTVlM2QzYTVkYTEzMzQ3NThiNDAwNWQxMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjczNmNjOGM2YzI4MzNhZjYxMDkyMGFkNzZmNTQzOGI4MThjMmE5OGQyODJhNTRiZDYwYTA1NWNmNTM5NTAxYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzFjNGE5NjYyMjU0MTllMWNmYmI2YTA1OGE4MDcwNWNjMTFlZDRhZmNkNTNmOGY5Y2Q4YjljZDg3M2JlMzM2OCJ9" + } + ] + }, + { + "id": "claim_5ab6fdc4931d423ea6ac6b4dfe0d9605", + "statement": "metadata.global marks a global pipe, while its source and transformation rules perform the connection; a global dataset groups a concept across sources without requiring every included entity to be merged.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L257-L263", + "version": "repo-lines-v1:sha256:ea9beb7bd18c1f8f9252e5f0c39784b4eeda3912fb8017c52609398211281220:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzZiNzI5ZGRiN2Y2ZGIzYTYwMzU0MTk3YWI0NDA1Yzk0NDI3Yjc1NzhiZWFjYTU3NGMwNTVhN2QyNzFhZGRjNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTc1YzAxNTcxNTc4M2U4ZGFmODFmOTgxYThlZTU4MDRlODAwMTdhNTk0MzAyMWRjN2NjNThmM2E4ZTljYmZhMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODc1ZTQxZjg2N2Y4ZmFlZGI2YTQ5YThjMTg0YWM5YTY5ZmJhOGE5YWZlZWEwNzRjZWYyYWJhMDQzMWZjZWJiZSJ9" + }, + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L432-L434", + "version": "repo-lines-v1:sha256:328eeaec417cec77643ee91de52eef7f7d3459d5b893ea27774bcc27e2a804cd:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjEyMGM2NjZiYTk4ZjRjNTMyNDJmY2E5YzJhNjJmNDkxZTY4M2M3MTlmZWFkZDgzZjMwMmZhNzdmMmNjNzJjZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmVlNzJmY2IyYWNlYWQ2ZmQzMzE3YzQ3ZmVlYmE0ZDk2Y2MxYzUzZDJjYWQxMGQxZWZhMGZiZjk0NTBmYTRhMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGE4MzZlNzAwNDNhMWMwZmVhMzQ0YzI0NDAzMmQ1ZTU3NDc1OTc5MWEzYjBiMDJlOTM5MjlmMTg0MTFmMzg3MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjE1MmYxZWMyNmM2YzUwYjg5MzkyM2U3YmMwZTMwNTM5MzQyMGMzNDQwNWI2MWNjYjMwNjBmZDAxNmFmMDIxNSJ9" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L149-L169", + "version": "repo-lines-v1:sha256:b24d98c6920105d764dbfce66d99877e9b84b230b7ed3efb7d5ae4f41f4cef55:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2YWU4ZDM4NTY2NDkzZDgzNWRmNmQ4YzZmNzhiYjAxYWVlNzA4OTVhNjEyOGY1YTMyZTBhZDc3YTVhMGE1NzIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ3YWQ3ZDI1ZmZlNTNiNDg3ZTYxNGYxMGJlYjZhMjFlOTFiOGZlNTA0OTAxNzNjODVlOTRmYzlhZjEyODZkODgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIxMWNkOTVjNTRhMzIzYmMwOGQ1OTM0M2RjZDAxYmNmMjIzYTJhNjc1M2ZmMzI4ZWM1OGU4MWE3NDk0ZTc5MDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZiNDUxMDlkMjYyYTlmM2JhZjQzODBmZDZhZjc1ODZlOWFlNDkzN2VmNDg3MTQxZWI5ZGQ1NGEyMGU4NGZlNGMifQ" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L199-L212", + "version": "repo-lines-v1:sha256:4d783a6277ac8eeadb4331d2d19f5d52722d4a5e54370e5804d43342b787a42a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcwNTg1ODcxNTYzZjkxOTdjZTJjZTY5YzA4ODk3ZmViODU2ZDU5MWI5YWY1NTI5MmUwZDNmZGU3YzNmNDk2MTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUxZWVmNzUzYjA0ZTg3NTY2NjRmNmVjZDg1YjQ5MjYzNmMwYTNmNDgzYjMwMTIyNTNlYWU0MGUxNmI0NjEzNjgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYwYWVhZDM2ZWYwMjQxN2FiN2RiZDE4ZjNjNWJjNGU3MmU4ZjE0ODNkNjQ4MzA1YWY3NGI4ODljMzQ1NGM5MjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRhOWE3YThmNDUxMDdhNDEwMDU0MDAwM2ViNDkzZDUwODAyM2Y4MTI0ZTEzMjljZmJiNGNlMDg4YzZkZWY1YWYifQ" + } + ] + }, + { + "id": "claim_8b2fd6653ad0477180389810e8fe4f91", + "statement": "Adding merge equality rules after processing does not apply them to already processed records without reset/rescan, and removing input datasets requires a full run to clear their entities from merge state.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L42-L59", + "version": "repo-lines-v1:sha256:5273121b0262e86fc98895397718019d6c531f11cca8e2248654ff0a6d37fd49:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQzOGEyYTk2N2RiNTAyNmNlYjZmMjgyZjAwMWZkZTIzZDhmMGVlZDU1ZmM3ZGEyOGMwZTMwYTUzY2NjMzgwOTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEyNjVjYTBmOWU0MmQ0ZTNlZjJkNGY0MjFiY2VhMGY1ZDIxZDIxYWRhZDA0ODJhOGYxNTU4YWM1OWM0YmQ4NTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNkNjEyNzE0ODk5YTc1NmM1MTMyYTZkNWY2OWJhMGI1OGZkNGQxY2Y5MWVlODg1Y2E3Zjc2M2NiZjJmMzNmMTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ5YjI5M2ZkMjc2OTg5ZTE1YzMwMGM5ZTdlOGYzMzhkZDI5MGI2YWFmYTNjNjk1ZjUzMmZjZmQ1MGYyODY3YTYifQ" + } + ] + }, + { + "id": "claim_e3c99d2f0a4f4deebbecb1704298997e", + "statement": "company-hubspot-transform reads global-organization, preserves the existing HubSpot target identifier from hubspot-company:id, and constructs payload.properties using the global address, city, name, organization number mapped to about_us, and zipcode mapped to zip.", + "evidence": [ + { + "resource": "repo://hub/tutorial-getting-started-transform.rst#L36-L67", + "version": "repo-lines-v1:sha256:e97038741041428708c52164b92217654b2ca7c4d4ef7c1b8c840c782ccea0f8:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY5Y2E4OTFiZmY3YWMxZjdjZWFhZTQwZWYwNTEwNjZiZTllZmU0N2I0ZTQyODFlODZjMzE5YmUyYzU1ZWJjZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYwOWUyMDNjYjMyZmY5Zjc4ZDU5ODgxOGM1ODE4ZDIwOGQzNTM1NmU3OTQ4N2ZjMGFiM2ExYTFkZThmNGVlOWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZhYjkwYjI1OGIwNGIyYTZkZWVmZTY2NWM4MjE3OTBmNjE4MmExZWRjN2ViMDE3MjRlYjY0MTRkNTJmODYzZmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_9702f1c410e4444690a9ad1cd5acb62c", + "statement": "The tutorial delivery envelope distinguishes top-level properties.id for the REST URL from payload.properties for the CRM request body, and uses DTL :: escapes to emit unnamespaced envelope fields.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-rest.rst#L162-L167", + "version": "repo-lines-v1:sha256:0f40d308dd4bd29e6238a17cd0642aa71686c1cdaba97642f312971860a81823:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGMwZTBlMzZlYTUyMTJmYzA0OGIzMGUzZDkzZWY3NWZiOWVhMzY5ZWFiZTRjY2IzMDNmMjdjYmQyMjNlYmFmMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWEzZTk2YTBlOWIxZTgzZmJlYWZkNDc0OGUwNzExMTQzNmE2ODM3NDM4YzZjYzRjODY1YmRjZjI3NTllNTExZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzU5MTY4ZmVjM2VmZTYxZmUwY2FjODY4MDYwM2ZkMjI0YmM1NTE1NmMyNWU3ODE1NDA0ZjdmZjNhMTJkZDJmMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTlkMmQ4N2JmM2MzOGRlMGEyMGI5MGViMzk0NjRkOWNkNWYyZjRkZDBjODRkNjA3MzBiYjcyMDg3YmQxNGQ0MCJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L76-L82", + "version": "repo-lines-v1:sha256:4c1056a6d8234f9eac11154c78fd93ad7ecc954bf835e4e6cf9a8a85625f987c:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjEyNDQ0NjUwNzQ3MGJkMWVlYWZjYzEwNDhkNzlkZjhjOWUyNTU2NjFhZGQzYTQ3NzAzYzZlNmI0ZTQwNDU2ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTAwMmMwMTZmY2E1ODFlNDhjMGU3ODEwYjc5MTZkM2JmYzVjMDUxZTRjOTJhZWNhZTE2ZjQ4MTEzMDJkYzQ5NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2ZlM2FhMmY1Y2U4MjY3NjIxOWU5NDBkMGQwN2UzZTBlNGVkN2M1NDIyNGIzOWM3YjA0NTJlNWRjZmU4Y2UzNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWU0MDc1MzM5MTU1ZDYzNjc5ZDQ1MjliODlkMTIyOTBkN2JjM2Q5OWZlMjc0M2UzNGI1ZTgxZWQ2ZDNlOTkxNyJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L80-L84", + "version": "repo-lines-v1:sha256:3661e739d51ceda57cfd3417dd2637b826418e9143892cb4c660dc56aa1796eb:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWZhOGU3OTFmNzBmMDJjOGIwOTliZGM4YzdhNjU3ZmExMGY2MzQ0OWMzZTQzNzU0ODA5YzA3MTExNWY5NWM4YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTZiMDQ0OTE0Njk3MjJlODM2M2E5NGU0MDQ0NTM4ZTAxM2EyYTIxN2UzNmIxZTU2OGJhNjBhY2I3YjRjOGYyZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTAwNTFjZmM4YzY2ZTE5MTY3NzRkMTM0Y2VmMTVmMTdhMTk4MGE0OWNlYzk5ZGVmYTY1Mjc4NzBmMWE4ZDJhZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjYxNjJlNzdhMjhkMjFmMGY1N2Q2MmRiNTQyNzk5ZWM5MzBmYjVkNjliMTQxMWNjYmIwMDZkZmY3YTZjY2MyNCJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-share.rst#L101-L108", + "version": "repo-lines-v1:sha256:9736a621e19b7b8b6330a13b87194d548a091ac88db58cc1d4c6b7303507e01a:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzc0MzQ1MGZkYTM0NWFmYmNlODcyYjYxMDg5MzkxY2RiYzBkZjE5N2UxYTVjYzA4MjQyMWZlMjMzN2U0NWU2MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTdmMjM0MjQ3Yjc5OGE5MTdmMjgyYzlhZTg2NTYxZjExMDBiYmFhY2FhZDkzN2M5ZjJjZWY4ZTA3N2VjMDc3MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzc1NDQ2NDc4OGRlNGEyMmVlMzAxOTViZGVjNTk4ZDQ4YjAyY2ZiMWYwMmRkNWFlY2U0NGUwYjdlMGM3MmQ3NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzE0OTg4YmUxNThhZjViNGNjZmM2YWI5ZTU2ODM1YTkyNGM4MDVjNjk4ZjNkYjVjNDQ5MmU3MjQwZDQ5NjllYSJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-transform.rst#L47-L59", + "version": "repo-lines-v1:sha256:0a1af88534d353f7bba4a01db5c0243cbdf0c67ed3d9d5704bbc0d4705b4ecb7:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4NzFjYWI2MGQzNWU3NTQyMGY1Y2M1NjkyM2MyYWU0NmY4NWNhNzFhNmJhMmYzNjhlMzEyYzU3Yjk0ZTQyNjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRmNmRiNjlmNTdjMTRjY2EzMTcwOTEzZmM5Mjk0Mjc2ZWFlOTJhMDllNTRkNDFhZjM3ODYwYzAyYTk4MWEzMTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg2YTc1ZTA0YjdmMzkyNTlmM2EzNzJiNjUwMzYwNmE1MDNkMjhjYjFhMWIwMGNlY2RmYjBmNDJmMzA4YWY3MmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhlYjcyMTlhZDQwYzVjM2NhOTQ0OWEzMTZmZTY0ZDYyOTRmY2U2OWFjY2IyY2ZmMTE0ODhhYzJjNWM1N2JlOTAifQ" + } + ] + }, + { + "id": "claim_31ff805f888e4aea9317f9574ce1513d", + "statement": "Preparation pipes perform target shaping before terminal outbound delivery so prepared data can be inspected and reused; placing all transformation logic in an outbound sink hides that retained intermediate result.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L265-L269", + "version": "repo-lines-v1:sha256:45565ed8ab45812d1d8e1bb197ddb9ff8acda9bb6faefc29fc8f0fe50f6e3903:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTIwMjczMDNlYWQwMzhkYzIwYWM5ZWRhY2Q1NzJmYmRiMmY4N2VjNmRmNGU0NDExOTJlMWI3ZDg5ZmNiNzIzMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmI1YzUyZTNlOTRkNmMwOGQ3ZjE4MTZlODJkNzE2N2Q1Y2IxNzNmMGYzOTI3YzU5NWU4MTA3MDQyZWNlYmNlNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjkxOTFhNzU5ODZhYzA2ODE1YTk1NjQzNzE4NzNhOWMxZTNlZGRlYjhkNTI2MGRlOWYyNzExMmJmNWNmYWM2OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2FhMTA3YjQzNWUzYTQ1ZDA5Y2ZkMGJmZmM3ZmUzMGI4OTkyMWFmYzg2NDNmZWQ1MWQ1MzAxZjNkMWRmYTAyOCJ9" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L254-L263", + "version": "repo-lines-v1:sha256:235669d62b8dff51a25a6edb901d7d9c8280f297684c0195e20604458507efb8:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjViNGVkY2I4M2UzZWNmMjIwMzVjMzI4ZTgwZTQ4M2U4MDkwN2RkMGMxNTQ0ODRiYjkwNWEwNThjZDQ5YjBjMmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk2ODY3N2Q4YjhmMzE1YTA1YTYzM2ZiY2I0NDAyMTk4NjhhNDA5ZmU4OWUwMTIxZGNkY2NhNmZkOGViNzNjYzciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc3NDQ5YjIzYjdiYmU5YmEwZDBjMzI0M2E5OTNmNWNiYzI1MzRkZGJmZGY0OGUwMTVlMmRkMDkxMTIyZDUyYjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMxZDYwOWEyZDYxMTQwMzYyYWZiYTk1ZDJmMWFkMGQ3NTdkYjAzYWY0N2M1MTZiYTc1Y2RkYzFiODliNDk3ZjIifQ" + } + ] + }, + { + "id": "claim_467ea169993f4b83aa36520278ad2905", + "statement": "Despite the older dataflow overview's lack-of-automatic-validation warning, the configuration reference documents an explicit json_schema transform that annotates validity and errors; it does not itself discard invalid entities, so delivery needs an explicit validity gate or error route.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst#L110-L125", + "version": "repo-lines-v1:sha256:6a6f469a948480d8da48e13c33399b64658784bc3c87455efd2c6d374c1774f5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZjNTZjNGE3YWNkOTBkYTljZTVhMWNlZjk3ZGIwYzdmNWMzZjYyMGI4ZTFmZDJlMmNjY2IxM2IyYTg3ODg1MmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM3MGQwNThjYTdhOTdiZGI4ZTkwNzE0NWI5M2RhZTEwYjZjOTBjNzNmYzIzMjZkY2NmMzQyNjY3ODRkMTIyNjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJhZGNiMzk4NDM5N2Y1OGI2NDdmZWE1YzgzOWYwMDE5NTMwN2Y2NDhkODljMWM3MDk2MmUxZjIxMjk2NDJmMTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst#L44-L55", + "version": "repo-lines-v1:sha256:acc97a0b575afa2148a43a7bb9f00bcefae5001b827bbe01ee02f08a8b264170:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjZWRiNDU5ZjZkOWY3ZDk5M2M5ZmMyZGY5MzYyNzkzMjQzYmNiMWU0MTJjYTgzYjVkMmVhZTRmMzExNzNhM2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQwZTAyNzNmM2Q2NzVlOTcxMjNkODY1OTg0ZjhmNmNhMDVmYjQ4MWRmZDM0NzExZjJkODVhNmI4ODBhMTcyNjQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU3NWFmNDhiMGMwNDgzYzkxM2FmOGMwOTcwYWU5ZmJkOGZmYmE0NGI1NzhlYTBmNWIwYmQ1YWQyNDUzYmI1NWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBlODQ2OGZhODMyMzhlNzNkYWUxNDljNmY2MzhlZWE1ODY0MTA1YTQxNGQxZWRiMDRjOTRmM2FkZjQ0ZTIyNmEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst#L7-L10", + "version": "repo-lines-v1:sha256:fbc9d2a24ba139ee9ca6f68bc0d7aed79c114bd37fa5e973e7695557204faa11:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjY5YWJlNzY3ZGRiZWNmNGE4Y2Q1ZmY1OGUxMmU3MzU5OTUwYTdjMDZmZmIwOGNlMWE3NmJlOGUxYTlhZWRmMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDIzYjQ2MTk2MTcxMzE2MWNkMDY4YzNlMmE2ZWNjZTMwMzJiMzZlZWJjZWFjMGZjZGZjMDk1Y2RkYTA0NDQ3MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODI5MjQyZWVjM2I3OTU1NGZjMzA5OWU3ZjQyZGVkNmMzMWY2N2VhMjNmMjEwYTUxZTRkZDcxODJlZTFhOWNlYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L261-L263", + "version": "repo-lines-v1:sha256:2ccd05d7b83258f1029d62df1a7002d76e03cc9a1eb596cb7c48c7cbd5df19f8:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTdmOTY2ZTkwYjYwNmI1OWQ2MTk5Y2I3MjhjYTdmNzgxZDdmMDA5NjU2YjcwNTA0ZTNmNGFhZmRiYTdhYmZmNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTY4Njc3ZDhiOGYzMTVhMDVhNjMzZmJjYjQ0MDIxOTg2OGE0MDlmZTg5ZTAxMjFkY2RjY2E2ZmQ4ZWI3M2NjNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2NmYTIxODc2ZWY3MzJjNTFlYmI1ZDFkMzBhMDJhOWYxMzAzOTQ4NTI2Mzg3Mzg4YWJlYTkxYzkwMDdjY2U1YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzFkNjA5YTJkNjExNDAzNjJhZmJhOTVkMmYxYWQwZDc1N2RiMDNhZjQ3YzUxNmJhNzVjZGRjMWI4OWI0OTdmMiJ9" + } + ] + }, + { + "id": "claim_212632bcff2e4ab384a45127f48d39cf", + "statement": "company-hubspot-share-update selects non-null target IDs, retains non-deleted proposals, and uses a get_company REST transform with replace_entity false to attach a fresh target response before comparing it with the retained HubSpot Collect baseline.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst#L79-L118", + "version": "repo-lines-v1:sha256:968f167770cdcce7e0ab3289e6e47a0b70cc02e32b497d08469fcd2f4313e60f:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4MDFmMTUwMzlmMmQwMDQ1Y2E4NTU1MzlhMjA1YmIwM2U5OGQ2NTc2ZWQ5ZjBkNjJmNDhlNjljZmFlMmZkMWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM2OGQ1YmQ5OGRmYTFiZTdlNGY0MTQxN2MxZTQxYTZmNTU2ZDM4M2NhN2QzY2YyNmM0NzU2ZmM2MGRkMmQzYzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFjMGZiZjZkZTg4NTVhZGI0MDBjMWZiNjRiYWU1MjM1ZWFiMmU4MDBkYWE0NjI1ZjYwMDMyNGUxYjVlMTkyYjgifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L526-L539", + "version": "repo-lines-v1:sha256:df087da4a9a395f5db2bb81ad5c3a4120a59ac0bca55021fb18f897cbeed6602:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjYmY0YmQxMGI5ODYxYmJlNmQ4ODc0MjZkNjhmOTA5NmMzMWE3MGViNDlhMDAxODEwNGU4ZjliZjcyYTdiNGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVjMmY0NzVkNzRlZmQ0YWJjM2NhZGUxMTI0MzhmYjdiZmQ2MjQ1N2U5YWU5MmEyZjVjODAxOWU4ZGYzNGRlMjgifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-share.rst#L44-L82", + "version": "repo-lines-v1:sha256:58d988e6a198e8882f9a2cf273e89ef94a96c74c6f6d4f85570a776d9021af34:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdlMGY0Y2RiMjFmOGMyOWYxZWJkOGJiYjQyOWIzZDZkODdmMWVlODQzNjQ5YWJjNWM4ZGE1YTcyYzQyM2ZhMWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBiMzllMTZkY2I1YTAyODlmMTQ0MGJiMGNmOGQ1MmRiZTU4MWQyYWI2N2IzNmIzNDQwZWRmZjRmMWRmOGFlNTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE1NDQ2MTk0YzY1ZjIyM2QwZDk3ZWQ0YjFkMDRkMDE2YWJiZWY2ZmU0MmU4NTJmZjI1YTVjZjg4OWE0MjczNDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVjMmVhNjAwNjlmOTc5NTg4YmQ3NGMxMTdlMWNlMDQzOTQ0N2MwMjVkMjNiOTY3Y2Q2NGU0YzQ2MDJjODJmYWUifQ" + } + ] + }, + { + "id": "claim_1aa8f4ce5928436faf5bcb309a42ad12", + "statement": "The tutorial's optimistic check removes underscore-prefixed properties, serializes with json-transit, and compares hash128/murmur3 hashes of the retained baseline and fresh lookup; matching hashes emit an update envelope and a mismatch discards the proposed update pending a fresh import.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/optimistic-locking-pattern.rst#L6-L10", + "version": "repo-lines-v1:sha256:43397f85205babc585ebf6e64e2d829e7909bc8067f15ada0f3f8b8a19de229a:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDRkYmE5NmE2OGVkMDAxNmEyZmVkY2Q5M2E3ZjZhZmFjMjIzMzRlZWYwODAzMzRhZWUwMWE1MWY2Yjc3NzY0MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjQyZWM0NGYxMTExZTE4NDc4YjI5MDdkN2FlNzY1ODYzY2ExNGM1ZTE2MmQwNzNmODAzZTE0NDJlZTE5NGUwYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTU4M2ZlMjY3OWY5Nzk3ZmNlNjFhYWNlMTAxMGQ2OTA3ZDUxZDdmM2VhYmVlNTZmYmUyMzU1OTRiNGUzYzc2MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWJiYmU5N2ZmZTJhMWFiYjIyYjhiNWE0ODBiZDIyMWY5ODJjYWY4MTk5YmQ1ZDU1NGJlYjQ3NDk5NTkzMzQ3NiJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-share.rst#L73-L118", + "version": "repo-lines-v1:sha256:c7a4893e4e24338016079853bedea5a6d84c5a95d387d69fbb0b6d6e8be00dd6:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU5M2MxYTZlNTQzZmMzZTQxZjk2ZWFjNWRiZDcwYmFjZTk4MGRjZGQ2MzYwYTJiMmIwOTk3ZWUzZDQxYmUwNWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI0MjIzOWIxYmQ4MmI4NWVkNTBjMThhYmU2YjhlOTk3ODc1NWRhYzZmZDgwNDA5MjRjOGE4ODBjNTJmMDY1ZDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjEzYzI4ZGE3M2NlMjRmOTk1N2M4ZDU4OTBmMDg3NWMzOGU0NDliYmYyZTQwYmIyOGM5MmFkOWFlZWZiMzliMGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg1NzM4NzNjOGI5YTRhY2U4YWM5ZjViZWRkOTg0MDJmYTMwZjE1MDY3NGEyMTRmZTE2ZTZhYTkyOTgwNmNhY2QifQ" + } + ] + }, + { + "id": "claim_22771a0801c14fea858c930ba8d58853", + "statement": "The tutorial's guarded write is client-side conflict-risk reduction rather than an atomic target lock: its fresh GET/comparison and PATCH are separate operations in separate pipes, and no provider-side conditional write token is configured.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/optimistic-locking-pattern.rst#L6-L10", + "version": "repo-lines-v1:sha256:43397f85205babc585ebf6e64e2d829e7909bc8067f15ada0f3f8b8a19de229a:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDRkYmE5NmE2OGVkMDAxNmEyZmVkY2Q5M2E3ZjZhZmFjMjIzMzRlZWYwODAzMzRhZWUwMWE1MWY2Yjc3NzY0MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjQyZWM0NGYxMTExZTE4NDc4YjI5MDdkN2FlNzY1ODYzY2ExNGM1ZTE2MmQwNzNmODAzZTE0NDJlZTE5NGUwYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTU4M2ZlMjY3OWY5Nzk3ZmNlNjFhYWNlMTAxMGQ2OTA3ZDUxZDdmM2VhYmVlNTZmYmUyMzU1OTRiNGUzYzc2MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWJiYmU5N2ZmZTJhMWFiYjIyYjhiNWE0ODBiZDIyMWY5ODJjYWY4MTk5YmQ1ZDU1NGJlYjQ3NDk5NTkzMzQ3NiJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L76-L84", + "version": "repo-lines-v1:sha256:271fd227b474cacc546814d048c28661c0e88fdc4047cfc93c4d4b3ef40dd47c:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGI1NmIxYzdiZmU1NmFjNWZiNjNjODZiNjZlNjQ5ODUxM2Q2ODVhOTJiMjAxOWM5NzlhNTNhMzllYzRiMTFlYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTZiMDQ0OTE0Njk3MjJlODM2M2E5NGU0MDQ0NTM4ZTAxM2EyYTIxN2UzNmIxZTU2OGJhNjBhY2I3YjRjOGYyZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDUxYzE1YzhmN2NlYWZjY2NlNDcxNDEwNDdmMzYwNDQwNjBjZDllMzYzMDQzYzQ2NDI3YTcwMmQxYWRkOWIxNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjYxNjJlNzdhMjhkMjFmMGY1N2Q2MmRiNTQyNzk5ZWM5MzBmYjVkNjliMTQxMWNjYmIwMDZkZmY3YTZjY2MyNCJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-share.rst#L145-L163", + "version": "repo-lines-v1:sha256:413cc1cb01fa9c3a380e7f253e7ca4ee130b2b258ee03b46acd56f03dbc0b474:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY5Y2E4OTFiZmY3YWMxZjdjZWFhZTQwZWYwNTEwNjZiZTllZmU0N2I0ZTQyODFlODZjMzE5YmUyYzU1ZWJjZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRiM2UxOWYxNmI2MWNmOGYwZGExYTM2YjMwZWQ0OTU4ZGQ1NjY0OTg3YzcyMTcxZDhmMWIyMDI4YTY3MGM0N2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYwNGNkYTYwYzgxZWJjNTE0MTgzZTBmMzNlMjJiNjNhZjNkZmQwZWE3NDkwYzUxZTJiN2RiMzExNDY2NWM0OTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI5NDE4NTQzYzc3YWZmZmQwNTIzY2E2OTM3YzI2MjFlZDdkNDMzMDcxYTNhMGIzNWRiZDQ2Mzc0MGM4NTMwMDEifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-share.rst#L44-L121", + "version": "repo-lines-v1:sha256:2f28ea94f4de1375fd721247176376184a53129fd5be87303211c031061f5d51:eyJzZWxlY3RlZExpbmVDb3VudCI6NzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdlMGY0Y2RiMjFmOGMyOWYxZWJkOGJiYjQyOWIzZDZkODdmMWVlODQzNjQ5YWJjNWM4ZGE1YTcyYzQyM2ZhMWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE1NDQ2MTk0YzY1ZjIyM2QwZDk3ZWQ0YjFkMDRkMDE2YWJiZWY2ZmU0MmU4NTJmZjI1YTVjZjg4OWE0MjczNDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjcifQ" + } + ] + }, + { + "id": "claim_7bff5e28da7c48d5a050341611683ce4", + "statement": "DTL discard uses an unless condition, stopping output when that condition is false, and unconditional discard emits nothing; it does not delete an earlier sink entity with the same _id, so discarding a proposed update is not a target deletion or removal of old retained Share output.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L526-L546", + "version": "repo-lines-v1:sha256:9ee413c34f039203cfe0b5eefdf5f7d5175602df8ed0a6f9ebe459d5ace573a3:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYyZTIxYTZmMGRhYjM1Yjc4NjQwY2U3Y2JlNDIwNDliZjU3MDU2NzY2MzdmMDA2ZGEzYTQyNTFhYjE2YTUzN2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMxZWFhYWZiNDcyZTVkMGEyMWU0MjQxNjg0ZDBhZmUyMzBlNmMyOWI2MDg5MjVkNjFiNzhhYTMwZjFmYTJkZjcifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-share.rst#L101-L121", + "version": "repo-lines-v1:sha256:1df88a3f6019e6ead811a36039058337646170787e9d632625a060a945630953:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM3NDM0NTBmZGEzNDVhZmJjZTg3MmI2MTA4OTM5MWNkYmMwZGYxOTdlMWE1Y2MwODI0MjFmZTIzMzdlNDVlNjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc3NTQ0NjQ3ODhkZTRhMjJlZTMwMTk1YmRlYzU5OGQ0OGIwMmNmYjFmMDJkZDVhZWNlNDRlMGI3ZTBjNzJkNzYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjcifQ" + } + ] + }, + { + "id": "claim_d4fd9fffcca04142af15f79f87308070", + "statement": "The tutorial's final company-hubspot-share-update-endpoint reads the Share-check dataset and delivers existing-company updates through the HubSpot REST sink using operation update.", + "evidence": [ + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L80-L84", + "version": "repo-lines-v1:sha256:3661e739d51ceda57cfd3417dd2637b826418e9143892cb4c660dc56aa1796eb:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWZhOGU3OTFmNzBmMDJjOGIwOTliZGM4YzdhNjU3ZmExMGY2MzQ0OWMzZTQzNzU0ODA5YzA3MTExNWY5NWM4YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTZiMDQ0OTE0Njk3MjJlODM2M2E5NGU0MDQ0NTM4ZTAxM2EyYTIxN2UzNmIxZTU2OGJhNjBhY2I3YjRjOGYyZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTAwNTFjZmM4YzY2ZTE5MTY3NzRkMTM0Y2VmMTVmMTdhMTk4MGE0OWNlYzk5ZGVmYTY1Mjc4NzBmMWE4ZDJhZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjYxNjJlNzdhMjhkMjFmMGY1N2Q2MmRiNTQyNzk5ZWM5MzBmYjVkNjliMTQxMWNjYmIwMDZkZmY3YTZjY2MyNCJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-share.rst#L145-L163", + "version": "repo-lines-v1:sha256:413cc1cb01fa9c3a380e7f253e7ca4ee130b2b258ee03b46acd56f03dbc0b474:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY5Y2E4OTFiZmY3YWMxZjdjZWFhZTQwZWYwNTEwNjZiZTllZmU0N2I0ZTQyODFlODZjMzE5YmUyYzU1ZWJjZTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRiM2UxOWYxNmI2MWNmOGYwZGExYTM2YjMwZWQ0OTU4ZGQ1NjY0OTg3YzcyMTcxZDhmMWIyMDI4YTY3MGM0N2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYwNGNkYTYwYzgxZWJjNTE0MTgzZTBmMzNlMjJiNjNhZjNkZmQwZWE3NDkwYzUxZTJiN2RiMzExNDY2NWM0OTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI5NDE4NTQzYzc3YWZmZmQwNTIzY2E2OTM3YzI2MjFlZDdkNDMzMDcxYTNhMGIzNWRiZDQ2Mzc0MGM4NTMwMDEifQ" + } + ] + }, + { + "id": "claim_907101a93f83481a9ee68376f5d3d3bf", + "statement": "An external sink does not retain target responses for downstream logic; response capture instead performs the external call in a REST transform and writes the resulting entity to a dataset sink, using replace_entity false and configurable response-body/status fields to keep request identity and outcome together.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst#L6-L6", + "version": "repo-lines-v1:sha256:fdb1e8bf08cf593b81a156b94aa75027d207fb9070004dda3db8afa899535acc:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRiMWU4YmYwOGNmNTkzYjgxYTE1NmI5NGFhNzUwMjdkMjA3ZmI5MDcwMDA0ZGRhM2RiOGFmYTg5OTUzNWFjYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRiMWU4YmYwOGNmNTkzYjgxYTE1NmI5NGFhNzUwMjdkMjA3ZmI5MDcwMDA0ZGRhM2RiOGFmYTg5OTUzNWFjYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTUwYzhlYzdlMDY1YWNmMjQ3MTBlOTJkZmJhYWVlYjljYjkyNzE1NjYzZDQ5MGU5MzM5YTMzNDRkNWUxZjU3YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGNkYWI0NTdjMTExMWY3MTAzYWFhYzlkODI5ZmZiYjEyY2QyNjg3ZDg0MTE4MzdkODYwMjJkYzVmODI2ZDEzOCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst#L79-L118", + "version": "repo-lines-v1:sha256:968f167770cdcce7e0ab3289e6e47a0b70cc02e32b497d08469fcd2f4313e60f:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4MDFmMTUwMzlmMmQwMDQ1Y2E4NTU1MzlhMjA1YmIwM2U5OGQ2NTc2ZWQ5ZjBkNjJmNDhlNjljZmFlMmZkMWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM2OGQ1YmQ5OGRmYTFiZTdlNGY0MTQxN2MxZTQxYTZmNTU2ZDM4M2NhN2QzY2YyNmM0NzU2ZmM2MGRkMmQzYzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFjMGZiZjZkZTg4NTVhZGI0MDBjMWZiNjRiYWU1MjM1ZWFiMmU4MDBkYWE0NjI1ZjYwMDMyNGUxYjVlMTkyYjgifQ" + } + ] + }, + { + "id": "claim_d1b1d1b4f05147b8bf9fede7edd02b0e", + "statement": "REST transforms accept 200-299 by default and fail for other statuses unless configured otherwise; allowing additional status codes requires downstream handling, while ignored_status_codes omits responses and loses audit traces.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst#L221-L251", + "version": "repo-lines-v1:sha256:33409be82b1886804b33dac9242b8048f7a5b4442711b2103b4fd75a5d8e6113:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM5NGQ5YjAyZjRmMzM1YzNlMDVjNDE4MjcxMjU2NDc1MTQxNjQ5NGMxOTBmYzJlNGI0MDZiYWZkNjI1NDQ0ZWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEzYTQ1MTVlY2YxOWE5ZWUyYzA3YTJlMzJlZTgyYmNhY2IwNmNkOTBkNjAyY2NmZDg0YzIxZGIwMTM2M2RmMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU2ZGVhOTUzNTA2OWViODZkZTc2NTJkODU2MWQ0NmEwMjllZDEyMzJjNGRjMWE5YmZhOTgyZGZkOGYyMzVhNzEifQ" + } + ] + }, + { + "id": "claim_1f3b621247744d7981eae138038e03be", + "statement": "API mutation responses should feed back into the target input flow for IDs and errors; inserted target identifiers and original source identifiers must be retained and connected through enrichment/global mapping when no other equality criterion can identify the inserted entity.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L115-L138", + "version": "repo-lines-v1:sha256:a536762400f5ce3bcb4dd43b8000104ac2653d0de5d43ac0348170bcef6a8853:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUxMzk5ODY4MjViNmY3MzVhOTRiYzAwYzQ0ZjI3ZjRmMTUyMTZkYmI3MjRlNmFlNDg1OTgwMDg3N2U0OGEyMDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM2M2Q1MzVjZTM4MDYzZDZiNGM1MWQ4YzM4NmE3ZjliM2U1ODBhMTRhMTBjMDdiMTk4ZGZhZjE5YzkzYTNiZmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYzYzFkZjljNDAwYzhjZWRiZDQ2NjE3NTBlMzg5NzE3NTYxZTI4OTQxZWI3ZTc5YWQ0OWJiNTQzMmIwNDAyYTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L39-L42", + "version": "repo-lines-v1:sha256:e5e411eff5b5b9471c4360070b75191cbd40e626012f584d5c4aa9ee88ce5a8f:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmRkNzNhYTk0MzIwZjEzMDFlZTVkODhjZGZlYzkyOGNjZjM0N2M0OTQ3YWM5N2YwMzMzOTBjNmMzNGE5ODIwOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQ2ODQ0OThmYmY3YTYzMjY1ODhhODkzMzU3ZmYwZDRhODA3NDU5MmM2MDEyNDliMWQyNmE4NzUwMzg0NDQ2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTViMDE1ZWM5OTgxZTgyMThhY2VhMGE1YWVlMzE5M2YwYTgwMDZkYjRhZWNmMTIzZGU1ZGI3OGI5NzBjMDQwZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmIyMzExMGM0YzY1YzRjYTQ4ODM2NjViMjQzYmU5NmU2MmZlNmM2NGRjYzYyYmYxNGUzMjBhNTMwOGJhYjIyYiJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L94-L100", + "version": "repo-lines-v1:sha256:90f9ec2415fe69f8194906cb3e57ff185719ecf0336caa09e60b0c3b0d15391c:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmUzYTdiZGJiOWNjMTNmYTQyYzk4ZGJmODhhMWIwNjhkM2JjNTJmM2U5ZjE4NzFmZGQ0NWI4ODc0YTgxYmFjOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTY1MjQwYmRlODgyMGQ0NWUzMWFhM2YyODViYjY3ZTQ5YzBjNWFiY2RhNDZlMzNjNjg1NTUyMzBlMzA2YWE2ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTZhMDU3Y2QzOTcxNzZmYzUwNGRmN2MyNGY3NjkwMjA0YzA1ZjFmZjQxMTI0MGI5ZGQ2NzA4MDM3ZmIzYTRlNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjcyODIzNDk2YzJiNzVhYzcwZWI0MTA4MGYwZDlkZjM5ODNlYjQ2MzRiMTVlN2M3MGZjYmRmYzgzM2EwMTgxYyJ9" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L294-L309", + "version": "repo-lines-v1:sha256:74347ef3b943de7c66dadce4404596fb4625bcb8766f07a6a7b8784be244623c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjllZGFiNTgxNzc1OWFkMGRlYmRkOGEwNjQzYzBiYzNlMGJkZjU5OTdjMTZiZTYzNmFiNzM3MzAzMzI4Mjc5OTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4YTkzODMxYTNhMjFlMDg4MzY0NWM5NmQ1M2I5MWJkYTM5YzM0MzA4N2Y4NDJlMTA3NjM1MGE3YmZlNDcxM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjcyZDAzMjRkYjBmZmFkYmIwNmViMzVkODJiMmM1YWE4MTNiNzJmNWE3ZmMzOTc2MzlkMWVkZjk5MzUyMzRlZGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_f8aad66b30db41c4803fd511813b7837", + "statement": "The response-capture pattern is nontransactional and prescribes a durable mutation pipe, batch_size 1, and no mixed dependency tracking to reduce reprocessing and duplicate side effects; these mitigations do not establish exactly-once delivery across Sesam and the provider.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst#L8-L10", + "version": "repo-lines-v1:sha256:eaf8b7ac4a081506bb65e06174ad34b4ded3ab3dc9451343ed8503a6a8bd5eb2:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGY0MzNhOWE3ZTJhNjI5NGY4NzM2MGRiY2EzNDM4ZjYyY2U1YjFmOTY0NTNmNDUyZWIyNGE2YjRkMzE5MTVjZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZThmZWI3MWQwY2Y2NDVlYmNhYWY5OTMwMDM2Yjk2MjNiMDFiYzVjY2M4NDhkMzNlMDZhYjMxOGM3MWIxYTZjNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzgzMzBiYWY3YjI5NWI1MDcxMDA1N2FhZWViOGI0MDRiZmQ4YjlkMzJmOWIxOGZlZDIyYTBkN2QzNDI3OWFkZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjMzMzg0MzRiNmY4NjM3Mjg4MzNkZTg3MTUzNjhhN2I5ZGQ1ZGVjYmM4MzVkOWI5MzgzYWM3MDdmMTQ0ZTZlYiJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L13-L27", + "version": "repo-lines-v1:sha256:e23b9297a62fd1af23b20e8e608e4c89d1aec7a6a4c8beebad4207826098c20c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ5MjI4MzRmY2U5Y2I2NDQ5ZDAzNjFkMWM0MzkwYmZkYjRhM2U5NzU1ODgyZmVmNmE1MTY4ZDFkNDJhYmRjNDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY3ODhlMDBjMjI4MjEwOGNhMjIwMzE4ZTJmOGI5ZmE2ZTM4NTEyOGU5MDE0MTk5ZWMwN2QzMDEzODBmZjU4YWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRmMzU5ZGRiOWQ2NGExNmE2MjQ5ZDU1YTVmZDUwYWU2NmUyNjgxNWI3MTIxYTNiOWEzOTczYTIwOGY0M2VmYjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIzZDQ2ODJhNzFmMzg4ZGYxNmRkMmRkY2VmMzc4OTg3ZTFiM2IxMjQwZTgxYmY1MmQwM2NlODYwMjZiNGRlOTEifQ" + }, + { + "resource": "repo://hub/features/durable-data.rst#L31-L38", + "version": "repo-lines-v1:sha256:391813120ba34eac91b22c47877454ad29c556e119ab0a1fb5c1aa67c006039e:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTUyZGNiZDg0NDM1YTJkZGRhOGI1NWFmY2E3YzhjOWI3ZjhjMjgxNTQ3MzMwNDk4ZDU2NmQ3ODI5M2RlZmVkMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzczZTUzYzJiNzc0NjFiOTJhN2U4MTc2NjZkZTJlNjkxMDlhMDdlYTEwNjkwMWE4M2RkNmYxY2NjYWQwYjNlZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGNkMzUxODA5ODljMGQ1MGNjNzgyMTMwYTQxZmM2YzY2NzI0MzdkZWRiM2I1NDQ1OTZjZjlmOTI5YmQwN2Q0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTQ3MjJiNmQzZGY0Nzk3NjAxNDIyNWIxZGEzYTI3YzVmMmU5N2U1NzhiMzg3NTBkNjRkMTZmMjBhNWU3MWExNCJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L9-L24", + "version": "repo-lines-v1:sha256:507b2a2d9685e7fb977ded357edbcb1684e9f6bd7e7e1e184a20d6c666772d26:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4Y2YwMTMyZjM2MThhZDBkYTk2Yjk3MDk0NDVjZTM4YzA0N2NhNTI0YWVhOTFlYzQxNjdlMzhhZGEwNzkxZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ2MzAwOGU4NmYwZDQ4YjI4YjFlYTJkMTgyYjMyMTEwZjI0ODk5NGRhMzFkZjJiNzllZGFkNzljMjQ1NGMzYmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJmZTEzNjU1N2M3OWNhZmNlZjUwN2ExNTc5MGYzNWZiYWVjZmVkMWE2YTZiMWQ1NzM4MDAwODUwZDAyODAzZmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjljNDAxODRmOGZhZjQxMWUwNmFmODRlYWFjOTQ5OGY5Nzg2MjNlNTNhMDYzMDYzMTZiNzdhMDI3ODlmMTAwNDkifQ" + } + ] + }, + { + "id": "claim_7154847114a64a58b5980a0903f13135", + "statement": "Durable data is enabled with metadata.durable and stores pipe data/state on high-durability storage to reduce loss risk; the documentation recommends it for pushed inbound pipes and non-idempotent delivery/share paths that cannot safely replay lost state.", + "evidence": [ + { + "resource": "repo://hub/features/durable-data.rst#L36-L38", + "version": "repo-lines-v1:sha256:ef64a2ba6793d71e7405451a3c05186ad88d2a08ec717c3b3aec594e83ac8b6e:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODBkOTcyMjE0MmExMDcyNWYyYzBjMjkzZjA1NWE5M2I5M2E4NWRkNGVkZjk5ODBiYWRmY2U2NDI3OTQwZjNkZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzczZTUzYzJiNzc0NjFiOTJhN2U4MTc2NjZkZTJlNjkxMDlhMDdlYTEwNjkwMWE4M2RkNmYxY2NjYWQwYjNlZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjM1MjI3OTJhNjdlNjM5Yzk0MjlhY2QyNjM5NzNmYjFmYzE2ZTJlYzE4ZTk2MzdjZDkxZmNhODYzMGM0ZTA2ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTQ3MjJiNmQzZGY0Nzk3NjAxNDIyNWIxZGEzYTI3YzVmMmU5N2U1NzhiMzg3NTBkNjRkMTZmMjBhNWU3MWExNCJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L80-L84", + "version": "repo-lines-v1:sha256:be707cb9f14400b8f53f83871032b352a618e1ea6114458da388d12b4640e9c9:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGZhZTNkNzJmNWZiZDIxY2M3OGI1Y2UwZDM0ODIyMmY1ZmI1N2IzMjAwNTIzOTVhMzEwOWFiYmJiM2RhZWU5NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmM4MzViYTMwYzViMTg1YjUwMjJlMDY0YjVjNzMwMzYwMGEwMDRjNzNmNDQzMTE1ZGE4NGJkMGE3MDRiNTRjZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2U4Y2QyOWQ3ZjVkZmI0MGUwMDYxMWFiZTMwODI5ZDEwZjA2ZGNkYmI3Mzg2OGE4OTVhNjNjNmE0MDZiZjVmZiJ9" + }, + { + "resource": "repo://hub/features/durable-data.rst#L9-L24", + "version": "repo-lines-v1:sha256:507b2a2d9685e7fb977ded357edbcb1684e9f6bd7e7e1e184a20d6c666772d26:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM4Y2YwMTMyZjM2MThhZDBkYTk2Yjk3MDk0NDVjZTM4YzA0N2NhNTI0YWVhOTFlYzQxNjdlMzhhZGEwNzkxZTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ2MzAwOGU4NmYwZDQ4YjI4YjFlYTJkMTgyYjMyMTEwZjI0ODk5NGRhMzFkZjJiNzllZGFkNzljMjQ1NGMzYmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJmZTEzNjU1N2M3OWNhZmNlZjUwN2ExNTc5MGYzNWZiYWVjZmVkMWE2YTZiMWQ1NzM4MDAwODUwZDAyODAzZmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjljNDAxODRmOGZhZjQxMWUwNmFmODRlYWFjOTQ5OGY5Nzg2MjNlNTNhMDYzMDYzMTZiNzdhMDI3ODlmMTAwNDkifQ" + } + ] + }, + { + "id": "claim_96439e51e89f486990b1662cb44abd61", + "statement": "Mutating REST transforms should retain side_effects true to prevent accidental system changes through preview; false is appropriate only for genuinely read-only operations, since previews can otherwise execute external mutations.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L29-L32", + "version": "repo-lines-v1:sha256:6d1b20d5695d283db4769b30fe64dc8ae57eedf1a11bc666d7fe5255277fd13c:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjFiZGU0ZjY0N2NkNDhjMzBhZWExMDUxYzE1MWJjYjRkY2RiYTM2M2I1NDFkYjlhMjVlZWZkYTlhMTYzMGU1NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWZmMjE0NDFkMjhiZGI1OTIwMDlhOWM4OGI3ZTdmNzI5NDljM2QyMjU0YjQ4NTQwOTUzYTFhMjY2OGEzMzRhYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjhhYWM4ZjQ0NTdmZTZmNGFjNGMwOWRhMzJhYWY4NjAwYWIwMDI0OGVkMzY3ZjYyNjBiMDg3ZGE1ZjZkZGU4YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGM3ODJlOWExYmZmODE4ZDA5NTY2MTI3OGZmNjBlYTFjMjUxOTU0YjQ4OWUxMmFkODkwOWI0Nzg0OTA3OGMwMCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst#L73-L76", + "version": "repo-lines-v1:sha256:7c046aeebe103c5e9076ec79ca4c8b53ef0260555b125d80a9594c39a9b6b65a:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDhlMjI5M2E5NDI0Mzc5YTdlZmU0NzJlZTMzYmY4NmI5ZDQ1M2ZlNTg1MmRlMjc1ZjhmNWQ2ZGQyMWQyY2UxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzQwYjM2MmQ4MWNkMDhjMTYzZjM1Mzc0NTQ4NjI3Y2FjNGVmYWRkODA3M2QyZDA4YTc3ZGRhNjc3OTNiNWFhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjEzMGUyNzg5YzAzZWY0MmY1MzUwNDcxYjg1OWIzNGJjYjkwMGMxYzc4ZjMzNWZhMGQwOTZjNzk1NzhmOTk4OCJ9" + } + ] + }, + { + "id": "claim_3088ef04854341e1bc854fc9bc7efe6e", + "statement": "Insert extensions require safeguards against already processed source identities and unwanted inserts from deleted entities; the insert pattern checks the Share sink history and initializes it with set_initial_offset onload for those lookups.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L34-L37", + "version": "repo-lines-v1:sha256:ffed3c2aee6aab7db1e940d1ea141e67a337ab72a048e38a57bad061b32a9f82:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTY3MzcyMTI3OTEwZjU0MjcwMjBjYjE5ZDliMTE1YWJlMmQwOTczMTYyMTgwMmRiZDA1MjQwZjVmNWM0YzVkNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjhlZTFlYjE3NTdlYTU5NGFmYWQxNzBkMzUwNjMyNTEwZmUxMWVlYmM4ZDk5YzQ1MmM3NzMyYTdkZjBjM2U0NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTI4NjJlMWJlMGQzYTMyMDFhN2Y4YTUzZTQ0NWRhN2FiYWJhNTE4ZmUxMWU4N2EwNDg5Yjc0ZDExYjkwYTVjOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGU2OTUxNDFlM2UwN2VkZWZkMDkxYzVmNzhlY2NhN2QwNWFiZmQxNTJmOGE2ZmRjYzM0ZTQyNzg4Yzc4YjMyOSJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/insert-pattern.rst#L6-L17", + "version": "repo-lines-v1:sha256:2721a4da305f33d6237b6d94fd50efe4cc64ecbd07968e7fbd8e6d407518cddf:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliY2Q3Y2UzMGIyOTYxNTM0OWYxZjA0MDFjYjM3NWU5Y2QyNWY2NjQ3NDJkMDY2NTdiNmI0N2NlZjU2ZmFlMWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ2NDQ0NmVjNzc5MGRlOTRhZjhlOGU5MTc5NTk2YzI4OTU4MzM2MjZmNWIyMGY2ZWYzODA1YWY1ZTExMWE4OGEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI4OGIyMDcxMzQ1MmYwMmI4YmMzODY2ZWRhZTcyOGFkYzdiZDczNWJjMTljMzM0ODA0NGQ4NjJhODI2NzEzMDIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMzYzNhN2NjY2MzMGZkNmJjYmVjMDIwOTcxZWY3YmMwMjIzYTAwZWFiYTg1Y2Y2MjllOGZkNDlkZTMyM2MxMTIifQ" + } + ] + }, + { + "id": "claim_75d62b5639074b74a609371ae7f84f74", + "statement": "Share supports push for Sesam-controlled delivery and publish for consumer-controlled retrieval; the dataflow reference limits publication to HTTPS and supported formats with predefined subsets/query properties rather than ad hoc querying.", + "evidence": [ + { + "resource": "repo://hub/json-pull.rst#L12-L15", + "version": "repo-lines-v1:sha256:8a08d5c336f2f40feeb2c8c76d0b8c88041b075722fb247013f58898f9ad41d2:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGQ4ZWRmNmY0NmQ2ZTdhYmQzMmMzOWNiZDI5NWMxZjE1MWNiYWI5MDhhZTUwNTdkYWM0Yzk2ZmU4NTJlYmVhZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGYxMDc4MGM5MzAyNmU0NTg4MDA5ZDg1YWUzZDY2Y2YxMTFkZWVkNTNiNDg4ODRiNjI5ZGU1OGQ0MTZkMGE4MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTFkM2M5MTJlMzc1YjMyYTY2YTI2YzM4YjY2MDFmNTUwZWU1ZDgyZjkxYzE4ODg1ZDMzYWY3ZjVjYzk4NGE1NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODZmYzcwNmE3OTU1ZDlhNTQ1NDYxZTMzZjRmZmFmNzZmN2IxMjU5YmVkNDUzNDE5MDExZTY0MzIxOTMyMGY3OSJ9" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L283-L287", + "version": "repo-lines-v1:sha256:ecc25dfd19bf1cfca0e54dcdf247b174d694badb958478a8cb8de3a1bd262814:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjkxMWI3NTA2MzRkZWVmMjBmZTJjN2FjOWQ1Yzg0OGY0MWVhNzMzMjlhYTJjZDk4M2FmNWZmMzgzYzk2MTE0ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmQ5MjBiZWZiOGIwZGVjN2E3OGY5YjQyNGU5N2I2NzY3NTgyNTAxM2Q4MThhNmQxZjE0M2Q4MTI4MDZiZWRhMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTc3M2UxYmJhM2FmMzk5YjU5YzJhYjA5MDY5N2IwMTAyMWU0NzE4YWQyNTkxM2RmOGY5MDIwMDJiMzEwZGVmYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTg5YjcxMjhlMDkyMThmZTgxZGZiM2ZlNTgwZTBhMzM3NTQ5NDgyZDM3OWRlMDMxYjZmNDM0ZDNmOWUwYzc2NCJ9" + } + ] + }, + { + "id": "claim_01a9c73817fd462f8ea2776108cfc8da", + "statement": "Dataset-source completeness must be explicitly enabled to hold entities until upstream and related dataset completion timestamps permit processing; without it incomplete objects can reach targets.", + "evidence": [ + { + "resource": "repo://hub/features/completeness-feature.rst#L8-L32", + "version": "repo-lines-v1:sha256:ee06f16838cb600d7a70de533cce763afeeda398e24c24695dcf0690afbb178b:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVkYWM3MmMyNWUyOGY5OTM0ZjIzNTM5MWZkOTUyZjk3MGJkOGNhNGZkYzQ2MTliYzg3ZTViNDIwODkzYTRjMDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU0OWY0ZjdhNDAzZDZkNjQ1NDY4MDcxMWJhNDI3MWFhYWI4YmM1ZmI3ZTcxY2I4YzBhMTQ5MmIzYWQ5NzIxYmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiMTg4OGM5OTMyOWM2NjQ2NGUwMzY5NDQzMmE5NzNhYzI1MTZkNGRkMzhlZmQzZTQwZGNjMDE4Y2UzNTM5OWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY3NWU2Yjg0Y2M1ZGMxYWIwMzM4ZDlhZjg4YjAzZmEwODdlZjkzN2U2ZWE1NDY3YjkxNThjNzkxZjAxYjBjNTIifQ" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L299-L302", + "version": "repo-lines-v1:sha256:4c0fd9eb8cf5d05a5d5dc7c9ea484f7dd98b7c99f0851c570a748893ae4b66e1:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjg3OGZjNGUyNWU5NjYwNDEwNGE1NTMwNDQ4MmJmZWIwYjYyNzhjNTE5ZWVhYTkxODZmNTYxNTZmZmRkNTlmZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmJiNzRkYTJmOTQ3MWFlOTc2MzcyNjZiZWI0YTkxNTI2ZWNkYWQwZWFhNmZiZWYwMDc5ODhlYTQ1MWVlNTk5MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjRhODcwMDhlNDNmZmZkNDA2NDM1YmQyNDhhOGI0MjA2MjU5NmE5YWFjNzA0YzI5MDUyYzI1NmZkMDIyMTU5MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTMyMWRiODJlMTdjMzgzNTZjZmJkZWFjYzVmYzU1YzI1MmViMmEzZmQwMjIxYjRhYWExZDYzNWVmMjJjZjZiMyJ9" + } + ] + }, + { + "id": "claim_65863ff45c3547d98465ef77e7804eef", + "statement": "Completeness filtering can conflict with deletion tracking on full rescans because uncovered entity IDs may be deleted; feedback datasets can also block completeness unless excluded from the chain.", + "evidence": [ + { + "resource": "repo://hub/features/completeness-feature.rst#L30-L39", + "version": "repo-lines-v1:sha256:c0173d8ad7722cdfb8cf73516a181949967bb6ab6be23afab29d296d120af6e2:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ0MGUzZmY4MGFiNzczY2QzZDcwNjcyMDFlOGMyMzA3MzE4NDU4OTQ4NjYyMmU5ZDQyNGZmZmRkMjhiZWM4YTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBjMTIzNDg5ODUzNmI1N2E5NzlkNjcyODk4ZDZkMjdkNDUxNTQxNTg0ZjkyYTQxYzFlYTVjNTQ0NWI1NWE0NTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRiYzMxZjc0YmNmNWRlMTc2NTQ3MGFlODRjY2YxNDVlNWE5NjlkODkxNGZiNjM0YjdkM2UyNzVhZjRiYzZmMzIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2OGFmNDBiY2U0YWUzNTRmYmEwNDg2MmU4OWY5MGEzZWZiZTMxNjdiNjA5MjU4YjUyMzc4YmU1NTI1Mjc0Y2MifQ" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L243-L247", + "version": "repo-lines-v1:sha256:9f9fa68a0bc593d714a5065b60f61f4d765e4870995f54e44fa54f2352720e62:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjMzNWFjZDJmYWNjYjc5OTI3ZWMwNDhjOGNkM2M5MTE2Y2IxNTlmODJlZjgxMzk0MDU2M2M5OWZjZjA5NGQ3NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDQzZTQ3NDY0NDRhYzMyMGU1MTQ3MGFkMjlhOGFkYzM2MGI1OGVlMjcwNmNmNTBkZjE0ZGExZTFiY2Q5MWQ3ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTIzZDczOTU1Nzc4ZTk3NzBhZDRkOTQxNjY2YWVjYjgwZTlkODNlZDg4OWYxZmEyOGU1NTRmZGZjZGJkNmViOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2M3NWIxOTkwNTJhYTY3MWE2Y2Y4MGMxYzgzZjE3YzI3MjAxMGQwOWI4YjNlYzc4ZTE0ODE4OGE2NWYxY2JmNyJ9" + } + ] + }, + { + "id": "claim_6fd508d4367542d69731a7c697f913bc", + "statement": "transform-share-rest performs CRUD with an optimistic-locking check and exposes targeted payload, lookup-response, and mutation-response rewrite hooks through rewrite_rules_payload, rewrite_rules_lookup, and rewrite_rules_mutation and their named rules.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-synchronization/share-template-extension-points-pattern.rst#L4-L19", + "version": "repo-lines-v1:sha256:a3fb086320c9f7d3f5e04309e11e65f1862040d6d0dda32e6b0f0094ac17a61e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhOTIxZDBmMGQ4ZDkxMWQwNzM1Zjg0ZTM2MDMyYjY4MjdiZjAzNzg1YTcwYzRkZDY3MWFiMTZlMWE0MjMxMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJmNTY3ZDZjOGM3ZjVhNjM3ZjRhMjAyYzNlN2Q5NTU2ZDYwYjdmYzg2YWY4YTFjNTkyOWYyMmMxN2Y3YTM4ZTkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjcwM2YzNjBkZDFiYmQ4NGE3MmNkNjlmNzJkZjVjMDQ1YTFlMGQ5ZTYzNWQ4MzExNjYyZDc1ZTE4OWU3NDJmZGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L208-L215", + "version": "repo-lines-v1:sha256:be2bc0e543b217326a73565d20927bf6c1d648d9e3ada0bc3e4e85c1708b0c51:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjk2MDVhZDM3M2Y5MzhjNTk4MzY0NjM0NDgzOTVlY2ZlNmY4NDRmNjM2NDI2YzI1YWNmZjhmZjIyNmM5Y2FkZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDZjNzI3M2E0MTgzNWVkZjExZDQ1ZTk5MWYxYzNlY2QzMWU4ZmQwNjlhNmQxZTFhOTg4MjEwMzg4MjUzOTBjOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjQyOWI2NDFlZWEyZGY0MjQ3NGNmODYzOWEzOGViMGVjMTMyZmYyNTQxY2Q5ZjFjMzZhYjExZjQwMzQ4MDJkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWNjM2MzMDk5MDYwNzM4NmQ3Yjc2NjU1ZDJlNjg2MjMwYmI3N2ZlNGEzMDNiZmU3NTA5NjY2MWM1MTBjMDFmZiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst#L365-L381", + "version": "repo-lines-v1:sha256:2afa1d98062e9c1c6737c5f9c26e06e81fff36ccc7bf0fdba83cbf162cd7982c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhOGJiM2I5NTgyNGNkYzE2YjZiY2JhY2MyMWFmODBlNTg0YWQ4ODY2YjM1MmI5M2JkYzk0NmViNTM2NjBmMWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY0MjI1YzQ5YjUwMmJmMzBkNGZhNGExMmI0NTJiNDU5ZjY1NmViMjcyNTc3ODFiMGE1ZDZkZThkNDI5MjhmZDgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQifQ" + } + ] + }, + { + "id": "claim_cd7663c2313243bf9b02d226dce7b7da", + "statement": "Local configuration tests should drain internal pipe queues while output pipes remain disabled or unable to deliver, then compare endpoint-stage output to expected fixtures; the documented expected directory pairs .json with .test.json and supports pipe-stage or published-endpoint selection using sesam -vv test.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L146-L186", + "version": "repo-lines-v1:sha256:7f56230d6849e646229686c2e9986c5a17bfd2f448c5137acc81bad5efab369b:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM3ODJkMjFkZTM0NDMyZTFhZDBlOGU4MjhkZmE2MDA5ZGZjMzY0Mzc1M2NiYmViZWQ5NzVjNmZhZTJiYjgxMWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY3ZDRjMzA1ZDU5MjRjMjg5NTAwNjY2MzdlNzY4ZGNlMDMxNjdlYTQwYmQ2NGJhNjQ1YTc5OGJjZjAzNmU5NjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJkMzYxMjc3ODcyZDQ4YjNmMTdjNzNiNjM5OTM5OGI3MzI3OWE0NjYwMDg3YmY5ZGRhNmZjNzcyYTk4YjY0OGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L57-L79", + "version": "repo-lines-v1:sha256:4a3f7e6e735999646a9562ccf2211784a704c9509d3ac1883ed091bcc34f5b08:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2ZTVmMDlmNGE0YTJkMTIyYjI5N2U3ZjQ1MzViMDg0OTY2ZTQzNDZlY2QxNjU5ZTM1OTFmNzFhNjAxZTJhZWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZmNWU2OGNkZmFiNTE2MDBlZmQ0MDAzZTEzNTFiNmU2ZjI5OWQ5YTkwNzVmOGQ4MTY1Y2Q0YWRkMTE0OWU5YmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY0MGY2YWU0OTAxY2Y1NWJmMTM2YjE1MzZkN2JmNjk3YjMyNzU4OGM3OWJmNTNhYmQzZGJhZWJkYTkxNzFhYTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA0YTg4OWIyYzY4ODE5Y2IzMTlhMDFhNDhmZTQ2MDE4ZDM0ZjJlMTg3Zjg1YjdiYTZmMTY1YjgyZmU4MmFkNWYifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L21", + "version": "repo-lines-v1:sha256:d728920650b733582762cd2916dd09f6f0f0af185fdda8c3774bd133cdd1ef38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + }, + { + "id": "claim_0b679e3d7bfe443099aa95acafb15e76", + "statement": "Embedded source data can supply offline production-shaped fixtures through conditional inbound pipes selected by environment variables, and the dataflow guidance recommends starting with a small fixture set containing required merge fields and expanding it as tests arise.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L310-L331", + "version": "repo-lines-v1:sha256:90371c8b9e34f8c824aa82e2a37b47f2fe80878ed8d2fbbea5b52c2ac0464821:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI2OWVhMjFmYmFjNGQ2ZDQ4MzY5MjUyMGU1NzRjZTRlNjU3YjBlNTdhYzI5OTMxNWZlNWQzMDc4YWQ0MWZlYTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJjZTQ4NjkwM2M2YjM4MzUzMjcxMTA3NDI1ODQ1OGFiMDE1MjIyNjU2ZmNmZTY3OWRkZjcyMjQxMmMwNDE5MjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYyYmJhNmVhMWRlMWM0MDIyNzc5MDljNzM3MDQwYmQzYjEwNGE4OGJiZWU1ODg4MzhmOTgyMmVkNTA5NmNhMDcifQ" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L48-L55", + "version": "repo-lines-v1:sha256:e4d6e93514cc18b5ca31176efe0d5206b5c4bd6ac2144c1ea6c38ad2f0d1ea6f:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzBmNWVmYmVmMGZlOThhYTkwNjE5NDQ0MjUwYjFhNWViMjMxNThkNjY4NmYwYjE5MDgzOGYzZDU0NGVjODViOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTM2NjIxMjc3NTg1ZGQ5ZTNhNWYzYmM2ZGQ2MzEyNTJlZTgzYTNiNmY2NjUwNDRmMjcyYjM2ODU4NmQ4NmFjOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODE2YTI5MWU1Y2NhMWVhZDZkZDQ5ZWYxMTE2Mjg1ZTY5MjA5YjJlMDM1NWQyY2VmYThlMTVjODk3ODg0MDAwZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTUwZGI1Y2QyNTYwYTFkNzcyYWZlMmM1N2YyYmRkODNlODg4MGNkNDVlYjNkY2FjMzA4ZWUwZTM3MGRhNDQ3NyJ9" + } + ] + }, + { + "id": "claim_cad980c1f5424352b94f74170c257906", + "statement": "Pump execution datasets record operational execution history including errors, success/failure counts, retry state, and OAuth/custom-auth token expiry information, but their entity structure is not a stable application API.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L4-L25", + "version": "repo-lines-v1:sha256:9d0066e65966d645cb1f9da4bc978015a0e3a026c15f895488bb724121d44714:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlNDZhNjg3NThiNTVmMGMwNmY2MjEwYWQwNzBkMTcxMDI5MmVkNGVmYzhkZDRjYzJlYzQ4ODdjY2I2NzQ1OGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJhM2FlODUxZmNiNGRjMTIyNDY4ZTE2MTE4YTczNDQ5M2Q2YmJlNDViODY4NTc4MGUwNDA1YzRkMmQ4YjczZTgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUwM2Q2Y2M0OGYxMGUyOTdlYTZjYjFmZDJmNzNiYjY5YjFkZTkxMzA0M2M4NGY2ODY1NjA5ZjExYjI5MDA0NzMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgzZjkxM2UwMjU4MzEyMjIyNjQ1MWI4YjA1OTgwOWFjYTcyMjJhZWI5OTg5NTgyZjJiMzlmOGNmNmU3MTZiNjMifQ" + }, + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L96-L117", + "version": "repo-lines-v1:sha256:4417dee54ec443d84ea0ea679984b1f6ab1472263c2938fbbe01597ec5ea5788:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE1MzE0ODZlM2Q5YjAwZTA4NTNhNmQ0YjcxZjgyZjkzYzM3ZWVmYzg2ZDE1YWFmMTZkY2YwODZkYWQzY2NjZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFhYWE5NGEzMDE3MmM1ZjhlMzcyYjRhZTUxMmExMWJjYmUyMDIzMjkyYjlhMjQzNTc2M2IxY2Q5YmI4OGE0YWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2OGFmNDBiY2U0YWUzNTRmYmEwNDg2MmU4OWY5MGEzZWZiZTMxNjdiNjA5MjU4YjUyMzc4YmU1NTI1Mjc0Y2MifQ" + } + ] + }, + { + "id": "claim_aede0d32ffee464bbc26f187d6434233", + "statement": "The documentation recommends monitoring inbound and outbound pipes and handling dead-letter data through monitoring/error systems rather than merely configuring dead-letter datasets; retained target statuses help separate entity failures from system failures.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/pipes.rst#L78-L82", + "version": "repo-lines-v1:sha256:d0b17e64c7eef119376d4939ec4951bfd5ea4d25bb2c84e7224fb2ad15f5e066:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzM4MjY4MDgzZDA1MjM4YjlkYjY2ZjM4MzgyMTJhNmY4NmViM2IxMDRhZWYxNjI5ZTFhODA5ZGY1ODY4NjU5MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODFhMDkwY2FkYTMxZjE4ZTMwOTM5NDhiMzExYTUwMTVjNmQwMzFjM2VjOGZhYTc2ZTFjYjgwODYzMTlmMTQwNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjFjY2EyY2I4MzdkNTk3ZmQ3YjEzM2JjODJiZDMwMzBiOTQwMjM3NDQ3ODVlOTIyYjE2OGU1MzBjZjQxZTgyYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/troubleshooting.rst#L36-L36", + "version": "repo-lines-v1:sha256:0819c8fb1278bed4f393cba3c4a91c7791b15d6acb4f8d98cbc4ca69c37373d1:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDgxOWM4ZmIxMjc4YmVkNGYzOTNjYmEzYzRhOTFjNzc5MWIxNWQ2YWNiNGY4ZDk4Y2JjNGNhNjljMzczNzNkMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDgxOWM4ZmIxMjc4YmVkNGYzOTNjYmEzYzRhOTFjNzc5MWIxNWQ2YWNiNGY4ZDk4Y2JjNGNhNjljMzczNzNkMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTVjYzU4MTk3MmEyZTY2YjE1ZjNlYjQzYzgyYzY3OWE3YjY5M2I5M2Y3MDkzZTQ4OTM2MDM2YmJhOTk5YmRiZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODg4NzEzNjZmNzk0ODdlYzgyNjFlMjllNGE4NTE3NGNlNDRkZDg4NjE4NGE4MzE2NzgwOTk1Y2QzNzAwMmJhNyJ9" + }, + { + "resource": "repo://hub/documentation/operations/troubleshooting.rst#L49-L59", + "version": "repo-lines-v1:sha256:1555e80a8d1db51c8092c331bcc544adf2c3bc5b6906e2c64b442f3eb7605c08:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhlNzllYzIzNzIzMmUwM2UyMmQzNmMxYmFiY2JmMTY2MWNjNDYwZWI2NDg5ZjdkMDZjZTZlMjAzZWUxN2VmZGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJhOGU0ZjVmYjU2NTQ3ZjQ0NmYxMzE1ZTMxZTY5MjdiOWUxZDRlMzdmZmZiYzE1MGYyMzAwOTU2MWFjOTQwODkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUxMTFhYjFkY2RlMjJmZDcwNTA5YzMyOGI2NDliOTMzNTIwYTcwMTY4NjVhNjExYWE5MTgzMGU1YWJhOTdmYmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJhYzAzZjFhMTZmZTI0MTBlMDJlNTM3YWJhMTQ5NGU3YWY2NjM5MzlhMDA4ZDgxMTJhY2E2NmI3YjMxY2QxM2YifQ" + }, + { + "resource": "repo://hub/sesam-dataflow.rst#L59-L62", + "version": "repo-lines-v1:sha256:1b8a203da8d3248997ca40ffb7f66a7c4a81d8a7dfca0e483b1a30b1c252a33e:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzAzYTgwNzg1NzMyOTU0ZWVjNmMyMTEyOTAzMWViYzhhZGY1MzUxYTZlMTk2OTAxM2Q4ZWY5ZmE4NGM3NjQ3MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODI0ZTEwZmQ1ZTBmNTZlMTVmMDJkYmU4NDhjNjY0OGFjYjUxNDBiZjNkYTZhMGUxZGI3NjllZDc0OTUwMGVlZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTUwZGI1Y2QyNTYwYTFkNzcyYWZlMmM1N2YyYmRkODNlODg4MGNkNDVlYjNkY2FjMzA4ZWUwZTM3MGRhNDQ3NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGRhNTI4ZTkzYWRjOWY0YjQ5MWQ0NWY4ZjI5YjVlNjgyMTUzMDk3NGIyZmE2MzVkNTM1MWQyOTM2YmI4MWFkNCJ9" + } + ] + }, + { + "id": "claim_a2da6619759849bdb42fe23b153684a9", + "statement": "REST tracing can log request/response headers and body excerpts into execution events, and secret redaction is explicitly best-effort, so trace settings and actual logs need review for credential leakage.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-rest.rst#L79-L126", + "version": "repo-lines-v1:sha256:f8cd00949a306d3fb78fc6b619f3b706e247ba55b680ed403924da2f5a9d17b5:eyJzZWxlY3RlZExpbmVDb3VudCI6NDgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjOTk3MGI2M2RiYTI0OGVkMDBmYWJlZWMzNTFmODQ3NjQwMzZhN2I0YTVkMmRkMmQwZWRkZDhiMTQ5ZWNlYmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc3MTQ5NTFjYWMxYjFhYmY4ZDI1OGE5MTE3NDM1MTI2MGMwYjZiYjI2ZDgzN2E3NGY3YmNjZjM5MTRjNmEyNTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImM3NmM4ZjMzNTI4MmFiNDA3ZmVjZGYzNTY1MGM5ODM1M2VmODNmOTNiNmI0NTE0NzFhNDk3MzZkZTU1MzI0YmYifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst#L195-L243", + "version": "repo-lines-v1:sha256:3dcfca80d3fe2ed48a06bd1dc35c85627b262662474c68a2d53be256b880e7ad:eyJzZWxlY3RlZExpbmVDb3VudCI6NDksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjOTk3MGI2M2RiYTI0OGVkMDBmYWJlZWMzNTFmODQ3NjQwMzZhN2I0YTVkMmRkMmQwZWRkZDhiMTQ5ZWNlYmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFmY2MwYjZiYjYxNTczYjRmMjI4OGRhZTA3ZGQwZDNjMDY0YjdkOTIzNjQxZjJmMjVmZjE2MGVhYmNiODI0YmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImZiMGNhZjczZmFmMDUyYjFlNWYxYjFlM2Q1ZDI4M2IyYjBlNDBhNGI1MGVkNGE0MWM0ZGEwYTQxMjNlMDAzYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhmNWZkZWZkYTBiODQ2NjQ0YjAxNjIzYjdkODRkYWRhMjJkNWU3NmE3ODc3MmYyZWY3NWU2MzkzNDAyNzQ5NzgifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/workflows/documentation-maintenance.json b/openwiki/.claims/workflows/documentation-maintenance.json new file mode 100644 index 00000000000..b1d55aa3522 --- /dev/null +++ b/openwiki/.claims/workflows/documentation-maintenance.json @@ -0,0 +1,894 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:79b826952679f093615e1c4a1b05cf2346fc6ce87c6ddd0366b751a5af4e0c4a", + "claims": [ + { + "id": "claim_be343efb9e4448999b41f50558a503c8", + "statement": ".openwikiignore preserves authored documentation, specifications, tooling, templates, and useful assets as research inputs while excluding rendered outputs, exports, local environments, caches, and secrets; OpenWiki documentation and metadata remain writable.", + "evidence": [ + { + "resource": "repo://.openwikiignore", + "version": "repo-file-v1:sha256:3bfc9ec2bc33c775cd77135b4ee6f5ff716f59197248e8ff5927d12685152f32" + } + ] + }, + { + "id": "claim_98e6f8e3fe6c41d59339d70b8cd6fb09", + "statement": "Sphinx recognizes only .rst sources and uses hub/index as master_doc; CommonMark packages in requirements do not enable Markdown sources, and the partner .rstx form is consumed explicitly by Pandoc instead.", + "evidence": [ + { + "resource": "repo://Makefile#L85-L91", + "version": "repo-lines-v1:sha256:d15c53b216991d783436198a3342d8f71cbad551bb2b058c9bfdba95b6cdb1ab:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmIzMTYyZTQ4ZDU2Zjc2OTU0YTNhM2I1ZWEzYWVjMmE3OWYyMTU3NmZiNGMzNWQxZDdkMjkyOWJjNGI1MjBkZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmZiM2M0MWRkZGU1OThiZWZjNGFkNmE1NTY0NDE3YjllY2U5OTRhY2I1YWQ5NTAxOWNkZDFmNWU2ZWU0OTFhOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmIxZDE0MWQyNTBjMDE0NGYzODY1YjYwZDliNTI3OTJmN2EwNzk5OTdmMGYwYmZkY2IxNDIwOGI5Mjg3NjdiZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzA1NmFiNzU1NDZiNDkzNmRlM2UwZTY0NWI1MmFiNGMwYzBjY2QxYzIwNjUwMzNhOTcxMDEzMzAyZGQ5MjY2YiJ9" + }, + { + "resource": "repo://conf.py#L29-L36", + "version": "repo-lines-v1:sha256:101036f64dc30b882886c4f36afcf1bbe0ac20d8bb00d6dd6f69f459536aa6ef:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjA3MmVhYWYzNmNlYzlhNzkzMzAzYjNlYjI2ZmQyODU1NTI1OTFhNTliOTUwNWVmODY3N2UwNGYzY2RmNzhjNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTdjMzQyZjA2Njg4NjY3YWU0YWFlOGUwNmNiYjI3YzdjYjQ3NTMwYzNkNWUxYjEwNzFlZWZlMmQ4ZDE1ZDZjMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmFkOWZkYzA0Mzg2MmVhMDNmYmFjOGQ3MjM2NDg2ZGFlNTMwNWZmYjhjMzkwNmY1Y2YwMGQ2N2Q0ODA2NGRiMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjgwNDEyMWQyZGY5YjBiMDA0ODAzZTc5ODg4N2RhMjE4OGE1NTRjMzk1NTgyZTUxODI3MDZiOGFiMGU3MWFmYyJ9" + }, + { + "resource": "repo://conf.py#L54-L66", + "version": "repo-lines-v1:sha256:05fd896e374f47ca520d423c1d3a3fa418dd3babc94f6fa69f76ec256281aeef:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhM2YzNDZlMTAwMjliYzAxZTI0MmU0MWM0NjY2Zjg4MmY4MGZlZGRlYjQ2NWU4MjgwZDRmMzI1ZTgwNjk1ODIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE2YWExYjQzZTc4Mjg2ZWRhNjM2NzQ5MTdjMjQwZDNhMDMxN2IzYzNkY2JhMjliOGNjZTYwMjg1NzU4YmJhZWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBmYzVkOGVjN2Q1M2E5MTkzMzI1NjYzZGMwZTdjYmZiZDgzZTg3ZGY3N2UxYzk2NmI2NjU3ZmU2NTc4NDBlMGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEyMzY1MzYzNTYzMjdiNzIxZWRkYWQ3Njg2ZDgzZTlhY2I2NDdiYTkxYzc4MDFkNGY4OWM1N2Y5ZTE0Y2Q3OWIifQ" + }, + { + "resource": "repo://requirements.txt#L1-L4", + "version": "repo-lines-v1:sha256:74bb9aa0a9bccde98fe92ab24b21529d061ab7cb3a34141930ff63236c98200d:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzZkYmRkMjc2NjRjNjlhNDBkYjQ5ZTkwYzc1MGRjNWYwMDMyMTFiNmZmYjM2Yjc1N2E0YTI5YTEwNzg2YjY3YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjA0YzFjYzcwNGUzMzdhYjgyZmE3NjllZTY5MTUyMTY4NjExMTdiNTkyNTRjNzE4Njk1NTc0ZmY5NGFmNDk4MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzE4NDM2OTYxMzYxZGE2Yzg3YWJmZWM1YTQyYjRiYzU3OGQ4NjlmZDZiNDJlMmFhMTBlZGNiOWJlOTA5NDkwOCJ9" + } + ] + }, + { + "id": "claim_47836645156f4c6b85d3969cb12f2484", + "statement": "The site navigation is an authored graph: hub/index combines visible panels with a hidden toctree, index-developer routes to the main references, and learning/building-block landing pages also pair cards with hidden trees.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/index-building-blocks.rst", + "version": "repo-file-v1:sha256:814dce43767077d62e00731c043ffaa1e9e3438b50d3c0fbebe9814834866393" + }, + { + "resource": "repo://hub/index-developer.rst#L9-L25", + "version": "repo-lines-v1:sha256:708a8a99dcb5134408f9045b0ff5af8796bfb83152c28ee55f398602139497dd:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4ZjdlNzE2MTk0MzU5OWJhMjQ5N2MxODQ4YTdjODZlMTJmYWRmNDEwZDE5OWU5YWJkMTg5OTRiMzg3NDFiMGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBiYzVkNGQ0YzJmMjcxZjI3YjlmYzg4Y2I3NDI5MjJlMWMyZWM5MDNjMTIyNzJiYWExMzc5MDNmZDBlZGQ0ZjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk1OTJmMDI2NTJlYTk1YWMzZmZjY2YyNTc2MzdlNTA4NTg3ZjBjMGViMzE0MmIwNDcyYmJiYzFmZmU4Y2QwZDUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/index-learn.rst", + "version": "repo-file-v1:sha256:c3d29fba3af6942de9d0f1da79aba2f7414b1e3d43e8fbe5515ec1ef20bfcc97" + }, + { + "resource": "repo://hub/index.rst", + "version": "repo-file-v1:sha256:f4efabc7bf8aa14b5a1d3d434d4f33c9e06b3b62ef68b2d2c5259675a0440a69" + } + ] + }, + { + "id": "claim_e373a41571434fb78f7c8acfe940a891", + "statement": "Root index.rst is an orphan document rather than the configured master, and conf.py explicitly maps index.html to hub/index.html along with literal redirects for several legacy reference URLs.", + "evidence": [ + { + "resource": "repo://conf.py#L40-L66", + "version": "repo-lines-v1:sha256:09aab1539630690601cc268ea7b4d08e1bbcc8cbf022951124429b3377f081b1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzNGRkNTJjYjFmM2NhNTQ4ODE2N2VhZTE0YTEzNDRhY2VlZmM4YWZlNDdjZmEyN2JjOWZkZGQ1MzkwY2UxNDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE2YWExYjQzZTc4Mjg2ZWRhNjM2NzQ5MTdjMjQwZDNhMDMxN2IzYzNkY2JhMjliOGNjZTYwMjg1NzU4YmJhZWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI4MDQxMjFkMmRmOWIwYjAwNDgwM2U3OTg4ODdkYTIxODhhNTU0YzM5NTU4MmU1MTgyNzA2YjhhYjBlNzFhZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEyMzY1MzYzNTYzMjdiNzIxZWRkYWQ3Njg2ZDgzZTlhY2I2NDdiYTkxYzc4MDFkNGY4OWM1N2Y5ZTE0Y2Q3OWIifQ" + }, + { + "resource": "repo://index.rst#L1-L17", + "version": "repo-lines-v1:sha256:62c359504013a050d1dd28da48e9b1f9e55cbbeff414c05e9fbb2dfbdf777ad7:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY5MGUzZjcwNzgwOWRiN2Q5Mjk5OTk2ZTY4OWQ2MWE2NmZkMGJhYTg0NWUwYTExZGRmMDc3ODdiZjI2NzMxMTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk0NzlhZjc5NjNjODk4ZWI5YTNhNjU5ZGQzYTkxMTQ2OGIyZDIyNjkzM2MyYjAxYWVjMGI5MzVmMTk2NGViZjAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5YzcyMGYzZTk2Nzk1NDNhNjJiYjAwMjQ2MDAyOTRhOTIyYTVjODhiNzA3NzYzNDBjYzMxMzE0NGE4ZTRlMWUifQ" + } + ] + }, + { + "id": "claim_6fec9156282a4ec6a748ca5a94147d39", + "statement": "Explicit configuration and DTL labels connect reference definitions to :ref: links, quick-reference tables, and panel link-buttons, so label changes affect consumers independently of filenames and heading wording.", + "evidence": [ + { + "resource": "repo://hub/data-transformation-language.rst#L1-L55", + "version": "repo-lines-v1:sha256:d70856572276aaae7483d432fb66c14af5e7d892047f2fd8d56a8d3bb53c1529:eyJzZWxlY3RlZExpbmVDb3VudCI6NTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA4MmExM2QyNzM1MjZkMmQzMzg0NDYwYjlmZjFkYzRhMGM1ZTRjNjJhMjdkZTk3MjFhN2FmNWI3Y2JhZjM5NGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ3NTZkYjBlNmMxZjFiNGUyNmI0ODNjZGM1NjkzYjZhZGNmZjA4MjEyNTRmOTkzMmI3ZDA0MzI5ZDkwYWViYWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjcifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L1-L13", + "version": "repo-lines-v1:sha256:82ac7c98c3f330079a5634a8c6749b6c2c899385636a87409590b9f85f9ce197:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlmYjFiN2RhYzRhNjMzNWFmMTExODNiYzdjODI2NWNmNmZlODlhNWFiZDJjZWQ0Y2Q2Y2YwOTY2MjFjOThjOGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZiOTQzZWRiY2EwNTMwOWIyNzEyNjM3NzcwZmQwNWRhYzRkOTEwM2U2ODUzOWYxNzgzZThiZTk2NjhhZmY4ZTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJkNjk4ZjEyNjRmNGJlYTI3OTNjODVkODQzYWM3YjE4MmJmOGFkMmIxYmEzZmJlMjRmODQ4MmE2MzFkZmM2Y2IifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-strings.rst#L1-L39", + "version": "repo-lines-v1:sha256:f02975e4c78aae9bbb59d6b2d048b8251081847ff6f4ae8310470fe7a365ce65:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcxODhiNjQwYzM2NTdjZDk0ODlhNDU0ZmU2YmE5NDc0ZTgyZjcyOGM5OWMwMzRiNDQzNWJhNzk0NWFiNTcwMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjllNTNlNDFiNzNhODMxZjA1MGY0Mjk1MjI5ODdhZDk1MDQxZGI0N2FjNThjMThjMmQ1OTlkYjA2ZDg5NWE3MmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE4NTg2Y2ZmNTdlMDU0MGYxMDk2ZjU0YWY4ODI5MGY3ZTQ0ZjI2MmM1YzRlNjhkN2I2YmQ0YWI0NjIxMzZhMWMifQ" + }, + { + "resource": "repo://hub/index.rst#L91-L107", + "version": "repo-lines-v1:sha256:9157cd68936093e1cc216da8680af852b56ba1cc66e275d8711c1efafc9166d0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjViMzViNzIzNTc4ZjNjMDIyMDg1OWU2YmE5ZWJiZGVlNmZjNTNmMzc0YmY3MjVjMzQ0OWUwNjEwNzg1MDMzNTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEwNTU2YmFjZDMwOWJmZTllMTQ3NTNmMzllNjMzY2I4YjM3NWZhOWQyNzQyYmVhOTAyOWRiMDk0YTE0MGU0YzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjllMDUyNjhjNzhjMjgyZWFiYWE4MjcyN2NiZDQ4NjhmOThiMjc5ZDdhMDViOWIzNWViMDVkYzczZTQxYzE4OTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUwMDM5M2M0OTRiMDJhOGRjMDY5YjA3MTg2Y2IyNjk0NWM4YjJkZTJiZjhiYTYzOWJjMjNkZGZlMTliMzYxODAifQ" + }, + { + "resource": "repo://hub/quick-reference.rst", + "version": "repo-file-v1:sha256:ba68f7f0bd4fc8f8cded5c2932482b960d976c73328b3d61aa1b7af3fff0201a" + } + ] + }, + { + "id": "claim_83ff0a7f3e2f42a3b8a05d097a317f83", + "statement": "Authored document links include relative :doc: paths as well as panel URL buttons containing literal .html filenames; navigation review therefore must consider document paths and literal URLs as well as section labels.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst#L2-L8", + "version": "repo-lines-v1:sha256:611ed70f7448d8139b51f7d1ff8757de497c94d6ad9f9bb229048b86f318d7c8:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzZiNmFhODU3NzI2ODk3MWI0MThmYjZlYmY4Mjk0MjMxYWNmMGZkODYyY2M3NWRjMDM4ZTMwZjkwMDk5MmZlYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTcwMDc2NWRiMDkxMmIyMTgzM2QxNjk1NTg3MDcxZmMzZGI5MmU0MzQ5YTU0YTkxMDdkYWYzNzlhYWViNTQ0YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjEsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + }, + { + "resource": "repo://hub/guide-getting-started.rst#L27-L68", + "version": "repo-lines-v1:sha256:3176eb9bc8989dce139f68661198ce6665874bd8106395a98d4c0b771c9fb6e7:eyJzZWxlY3RlZExpbmVDb3VudCI6NDIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk0NzlhZjc5NjNjODk4ZWI5YTNhNjU5ZGQzYTkxMTQ2OGIyZDIyNjkzM2MyYjAxYWVjMGI5MzVmMTk2NGViZjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZlMzQ1OWY4ZGE1ODhjNDU3Y2Q4YjdlMDQwY2Y0M2Q1YzJmNDdkNTQ5MDc0ZDE2ZWE0ZmI0NDcwYjQyOWRiMTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU3MTc5NjMxZDFhZGFlZmIzOGM1YzhmMmZiMTM2N2IxOTA4OWRlNTI4YzgyZDRjM2Q3OGUyMzAzOTdkZjliNDYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/index-learn.rst#L7-L8", + "version": "repo-lines-v1:sha256:e93f9e1e33bf0e7493c2d6eac623fa2f13fb270efafd8e5693524d09a5a5c029:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWI3ZThjZTVjYzU3MGUwOWM5MzBhMmNjNTc1MmE2NjMyZjBiMGJiYjhkNDQxYzM1MGNlODk3NWI5MzhjODM3NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjYwNjQzZWMwZTJlMmExMzJiZWE4OWM5YmQ1MWVlYjllMWZjMzRkZGIyYTY2MTUyYzBjMGFkMDI0YjZjMjIxYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWExMjk4MjdjYjVjMjI1ZDI2ZGFlNzRmNmExOTRhOTQ0MTg4YTIxMWU4ZjYyMWI3ZjU0NGUxMGNkZjJhNmY2NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzgwNzNhNTgxYjVjNDA4OWE4ZjY1MzgyNzNjMjVkZTE0OGU2YWEwMWM3NzcxOWQyNjdkMTZmOTY5YTdiM2M0MyJ9" + } + ] + }, + { + "id": "claim_b5138eaa410d46c7afde9cd9d862a1c4", + "statement": "The web partner agreement and Pandoc partner form share partner-agreement-part-1.rst and partner-agreement-part-2.rst through includes, coupling website wording to the printable agreement.", + "evidence": [ + { + "resource": "repo://Makefile#L85-L86", + "version": "repo-lines-v1:sha256:9d1d9980b6db0523fdec1e7a55e2074c5ffad229ed063874713219d832a749f3:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmIzMTYyZTQ4ZDU2Zjc2OTU0YTNhM2I1ZWEzYWVjMmE3OWYyMTU3NmZiNGMzNWQxZDdkMjkyOWJjNGI1MjBkZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDdjYWU0ZjZkOTQ5NjY3YzQ4N2E1ZTQ5M2VlM2QwYTE1OTkwZGMyNmYzZTllM2FmNjQ2ZjE2MzQyNWQ2YmM4YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmIxZDE0MWQyNTBjMDE0NGYzODY1YjYwZDliNTI3OTJmN2EwNzk5OTdmMGYwYmZkY2IxNDIwOGI5Mjg3NjdiZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDQ1NTEzOWM4ZDViYTg3NDMxY2Y2NDdkZDkxYzQxMGRlNDViZjNhODVlNzA5ODVmNjQ1ZGU2ZWI4Nzk2Y2EyYiJ9" + }, + { + "resource": "repo://partner-agreement-form.rstx#L25-L38", + "version": "repo-lines-v1:sha256:eeccb8225b63ccf3c1d8f6acda1fff7b9163cf7582a4cfe028d66f37535e1dc5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImViNWRlZjk2ZDQzN2I5NjY5OWQ3NGRiNTllZGZiMzhmMWUzMDJkZGMyY2YyMTM4OGFlYWI4ZmI5M2ZkYWVmMGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1ZjJjNDNjZjZhYTk3NjIzZTA5MTY3OWJmMzJjNGY4MDBmN2ZkZWVjMWYyNzg0Mzg0NzY2MDgxYjBjNDUzY2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU4NDE3MTgxZWE0MWZmNGZhNzNlMzhiZGFiYzFjYTJlMzU1YTk0ZDFkNjNhOTg1NTZlODM0NTc0MzkyMzFiMDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://partner-agreement.rst", + "version": "repo-file-v1:sha256:6340f290c3fb78caa5c0efa4f18d7a20b05ef40ad86d8790d27fe6b836e17f28" + } + ] + }, + { + "id": "claim_5f25b2ab940842198f6aede13046385c", + "statement": "Databrowser authentication and GDPR platform configuration include the same authentication-provider RST fragment, which carries a databrowser end-of-life warning for December 31st 2023.", + "evidence": [ + { + "resource": "repo://hub/databrowser-auth.rst#L65-L74", + "version": "repo-lines-v1:sha256:91433e4621e7fa8ce93f10b543c908cdb052b04ad5c7218eb93e7463cd954a16:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjllMDkxYjI1NmRlNTAwYmM0ZGMxZDYzYzkzYmI4YjRiZGE4YTQ0Mzc5NTk2MGEyMDhmZGYwNWIyM2RmYmU0YTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5YjI1MDdiOTY5ZTExYTA2MzkyNGNmMGM0YzAzNjQ4NDZjNjBmYjk5ZTdkNDJmOWNmZTIxZDg3Nzk4N2ViZTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM2ZjkxZDgwMmUwMTg0YTc2YTMwMmJiYjNhNjFiNzllODliNzNjZDc3Y2JiZTYzNjljOWU4ZDJhZGY4M2QwNWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVjMjhlZTY5OWIyMDM0N2Y4NWE2MDQzZTVhNmE4OWI1Y2U0YjIzNGZiNjJhYjE2NWM3MDMxZjBhZDdmZjkzZDkifQ" + }, + { + "resource": "repo://hub/databrowser-authentication_providers_examples_and_docs-for_include.rst#L1-L8", + "version": "repo-lines-v1:sha256:a28ac5b65a68d85f6e499dd3c040b2b6e08829e4b1072bb8185342ee0557b495:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGRlNjQzYzdlMDAxNTU2NGZmYjgxZDNiNmYzMjgzZDhhYjdjNjNkNDAyMzA4ZTY0ODJlMGMxOTZlNzRmOWI5MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWQ2MjIxMWRmYzdlOGJmMzU2MzVlNDczNGFmYjlmZTVhZjBhYTZiOThhNzYyMmMwMGM1MzU0ZjU4MWUwMDQzOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjU2ZTc0ZjE3NzZiNzhlOTJhOGJjMDdiMDBkNTlmNjFiZTJmY2Y1NTU2NTkzOGQ0ZTZmMjJiOGFhZjlkYjhkMiJ9" + }, + { + "resource": "repo://hub/gdpr-platform-configuration.rst#L183-L194", + "version": "repo-lines-v1:sha256:0639240404fd505c11acdf8de69edbdbbd72d11894bcb604365ab577a87d99b8:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhmOGUxOWQxYzY3Y2YwNjVjZDEzYmMyZDBmZDFhMGVkNTJjYTA1MGZiY2ZlOGY4ZDgzNDU2N2MzMTdiYzEwYjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5YjI1MDdiOTY5ZTExYTA2MzkyNGNmMGM0YzAzNjQ4NDZjNjBmYjk5ZTdkNDJmOWNmZTIxZDg3Nzk4N2ViZTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc5YjExZTRlMzVmOTlkNTg0OThmMzgxMTJkMzlhMjM2OTJhYmJjN2U3ZmU2ODI2NGMzMDVhNWMxNjA4ZmJlOTciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUwMjY5OGEzMTY2NmZkYmU1YjAwZWUyN2JjZWZmY2JkNTk4NGYzNzE0YWUxNWVlNGRhMWNkYmMxODc4MTRjZDEifQ" + } + ] + }, + { + "id": "claim_1b253398143f4ee985b10cae975cc1d8", + "statement": "Time-based masterdata management and parameterized datatype pattern pages use start-h3/end-h3 substitutions defined as raw HTML heading markup, making that presentation builder-sensitive.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/time-based-masterdata-management.rst#L19-L23", + "version": "repo-lines-v1:sha256:0135ff11754dd3b6ae2fcf784078cb51815520dbd350d6b47dc32bf52c54fa2b:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTI0MDBjOWRjMWQ5MmQ5ZTI5N2NhZmZiNWI2YTRhMWM2OTZiOGVkN2QwMGViOThiODFiOTM2MjZkZTJlMzJmZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzdjYWY1NTg0OGRhZGRkNDYyYWFlNjVlMGNiYjA5MGEzMGU4ZThmNTRhYmZiMGYxODhkYmE0MzM0NTc0ZDNkOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzdhMzEwMTlhMDMzZWYyNjNmMWZlOWEwMGRjOTJiY2Q1NTFmZGVjOTdkZmI3ZTA0ZDI0YjdhMmRjZGE0MDAyOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2Y3Mzk4YzQyMTZjZjgwOWI4NTMxNmE5NGEwODJmMzlmNTE3ZGU3ZmNlZmUxZDE1MGM5MmY0NTY1NzY1OGZlMSJ9" + }, + { + "resource": "repo://hub/documentation/data-management/time-based-masterdata-management.rst#L206-L212", + "version": "repo-lines-v1:sha256:2035187abcfed363080794312b6c47420751c09743cff746485505b45811b7bb:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDg4OWU3NGU4OWUwY2JiNjQ3NTFlOTNhMTk4OGQ4YTQwN2RkMDUyMTEzNGY2OTYyOWZjMmE3ZjhjODVkN2FmNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2I2YTIwOWVjMWI3MWUyMDAwZWQxMjU0YzQxNzM0ODIxZDZiM2FjMjU1ZjAwYjAxNWUxZGY0Y2RiNWI4OTMzYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTIwOGQ4ZWYyOTM0OWQ0MjNjNTMzOTU2YzFiNGIyMzdhNzFhMzg2NmIxM2ZjNDVjMDQ0YzA4N2NkODRlN2UxNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/parameterized-datatypes-pattern.rst#L180-L186", + "version": "repo-lines-v1:sha256:2035187abcfed363080794312b6c47420751c09743cff746485505b45811b7bb:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDg4OWU3NGU4OWUwY2JiNjQ3NTFlOTNhMTk4OGQ4YTQwN2RkMDUyMTEzNGY2OTYyOWZjMmE3ZjhjODVkN2FmNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2I2YTIwOWVjMWI3MWUyMDAwZWQxMjU0YzQxNzM0ODIxZDZiM2FjMjU1ZjAwYjAxNWUxZGY0Y2RiNWI4OTMzYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDQ1MTM1ZmQ0NWY4NWUzNzRjMzUwM2Y1NDk2MmY2NzEzODZkMzBlMGEyMGVhMjMyNzBlZDIwZmM2ZGEwYWNkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/data-synchronization/parameterized-datatypes-pattern.rst#L28-L28", + "version": "repo-lines-v1:sha256:272f943d4f52a9c1b91dcb4de2d81ca01a0e3ce9eadf22ec6847ad3fa29deb2a:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjcyZjk0M2Q0ZjUyYTljMWI5MWRjYjRkZTJkODFjYTAxYTBlM2NlOWVhZGYyMmVjNjg0N2FkM2ZhMjlkZWIyYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjcyZjk0M2Q0ZjUyYTljMWI5MWRjYjRkZTJkODFjYTAxYTBlM2NlOWVhZGYyMmVjNjg0N2FkM2ZhMjlkZWIyYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWNjYzhjNThiNWE2YTBjNDdkNjFjMzc1ZmU5MWY2ODhmYzBkMWM4N2I1ZTc2ZWJmNTViYzcwNDI1YjdiNzAyZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjg1NTZkMTMyNzFmZjA2NTcwM2Y5ZmZiZWE4YTM1YWYxMmEyNzM4YjY2ZWMwNWMxMzdkZWVkMWJmOGY3MmI1OCJ9" + } + ] + }, + { + "id": "claim_07de49a4efc54315a73cb61cd4f309b6", + "statement": "Sphinx configures version and release substitution values as x.y and 2024; these are documentation configuration values rather than a runtime-version discovery mechanism.", + "evidence": [ + { + "resource": "repo://conf.py#L73-L80", + "version": "repo-lines-v1:sha256:9004cb72d5bb25bea9638b47fc484c95c647cc74e1c3c04e17bca7c95eb42415:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDU3ZTRjYTc4YjA2ODNkYjE0MDkwMmFhNWVjNWI3MzU2ZDc0ZDVmM2U1OWQ4ZjA1MWNmNWM3NGViMzdjNDgwOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWFmYWJjNzQ4NTFkOTQ4OGFiODk0N2JiMjYyMjdmYmI4MDY3OTU2MDJkYTdmN2UxNzZiMjcxZGE3MDNiNjkzZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2FlYWVlMjc4ZjI5MGU4MThjMTUyODViNTgwNGIxNGYxZmM5OWRhODk2MzViYTIxMjExZWE3ZTg1MTVhOGJhMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDkyZTgxM2JmMDY1OWFjNWJlYmYxYzY4Y2M5NGQ4NmJkOGMzY2Q5ZmZiOTMzN2RjMDZlNzg2N2U2YWU1Y2EwOSJ9" + } + ] + }, + { + "id": "claim_bc2e8435ee19484fb1a29abce8f7a34f", + "statement": "Service API documentation renders local Node and Portal Swagger 2.0 YAML copies through openapi directives, while the databrowser guide renders its own local Swagger YAML; the directives do not fetch live specifications.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L223-L244", + "version": "repo-lines-v1:sha256:c0af2843737b66421b0bb7625489f28ad075526062eec5316b67169e555f5b23:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ4ODg5ZDM4OWU4Y2FiOWFlMWZiOTdlYzRhOTE3ZDBhZTIyYmM2NDA2ZjhkMzg5Zjg0N2NkNmFiYzA3MWE4MWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZlMjg5Y2QzOWE4MDEwMTg0NTMwYTczNjdkZjAyOGIxOGEwMDk4NWM0YzBjNzFmMzUxMDYxMzg1OWNiZTI1MjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjExOWYwZjQ1YjcwNmJmMmE5NTE0MTBiMTE5M2UzODhlNTViOWIwZWNiZjk5OTY0ZjQ2ZmE2YTM2ZDM5YTdhNWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhlZWY0ZDA2ZWY2YWIwNzk0YzNkMzViNTAzZGQ4MzdlMGMwMGRiZWQ3OWMyY2Y3MGM3Yzk0MGQ4NzZiMWNjYjAifQ" + }, + { + "resource": "repo://hub/databrowser-guide.rst#L712-L717", + "version": "repo-lines-v1:sha256:ac4f4fe48508f8a19735188efa151215a198bb984832c17f2149642e218a37e4:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGJiMjUyOTUyYWI0YjczMjU1OTI3OGE0Yjg5M2RmZDNjZDIzM2MzNDY3MmVjZTJjOTE2ZTFmYmUwOWFmOGFlZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjcwNWY5YWZjNjZkMzhmYzQyNmU5NWE3Njk3M2UzNGU2N2EzMDdlMmExNDBjYzc2YWYyMzNkZGE4YWM3NzJkZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjE1YmNhMTI0Y2ExZmFkYjM2NThiN2RlYzhiOTdhOTEzZDFlNWYzNzhlZmE0NTczOTE2NDA4OTc3NzJiNmYzYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/swagger_databrowser.yaml#L2-L8", + "version": "repo-lines-v1:sha256:f7977f3543678098979cacaa96fdbed15be0ae857b2471858146dfce135d6e74:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjlkMDNmMGZjZTMwMzRlMTI1YzEzNDc5ZjgwNDYxMjVhMTg3MDcyOThkNjRjN2E1NDgyMjg4MjgxZmVjZmQ2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU1OGRlZTg5MDNiMDBjOWIzNzMzNDJhZDcyNGIzZjQ4Y2UwNTM3NTljZWI2YzVmYTFkMWQ2MjIwMTIxOTFmYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjEsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDJjMTY5ZGRmOTBiMmQxYjZhNDVhZWQyMWE0NDM2NDEyYTE1MTJhMDU0NjQxZDdmZGUxYzM0ZDg3YTNkZmI3YiJ9" + }, + { + "resource": "repo://hub/swagger_portal.yaml#L1-L5", + "version": "repo-lines-v1:sha256:75d8cb305898067abf80491afd9552d9109fabbb915627d82d0b3948e9b5d210:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjlkMDNmMGZjZTMwMzRlMTI1YzEzNDc5ZjgwNDYxMjVhMTg3MDcyOThkNjRjN2E1NDgyMjg4MjgxZmVjZmQ2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU1OGRlZTg5MDNiMDBjOWIzNzMzNDJhZDcyNGIzZjQ4Y2UwNTM3NTljZWI2YzVmYTFkMWQ2MjIwMTIxOTFmYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTIwMWY0YTVkNWUzYmNlMTQ0Yjg1MzQ1NWFiMzQ2YWQxZTcwYzQzYTY0ZWNmYzBlNmM0ZThhNTAwNzM5MmI2ZCJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L1-L5", + "version": "repo-lines-v1:sha256:0d545cbcc9ba81abbae30117f777aa271c014e1569aa1a5922f19ee4e62ba367:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjlkMDNmMGZjZTMwMzRlMTI1YzEzNDc5ZjgwNDYxMjVhMTg3MDcyOThkNjRjN2E1NDgyMjg4MjgxZmVjZmQ2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU1OGRlZTg5MDNiMDBjOWIzNzMzNDJhZDcyNGIzZjQ4Y2UwNTM3NTljZWI2YzVmYTFkMWQ2MjIwMTIxOTFmYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjNhNWM3YjZlZWVlZGFkZDlkZjNiNDYyYTJmZjYwYWY4OTI1M2IxYTFiYjI3MzBlMzAyYzM1NGJhYzU2NWY5YiJ9" + } + ] + }, + { + "id": "claim_cdac6532058949148e403cb09ce5d718", + "statement": "The databrowser Swagger specification scopes its endpoints to internal use and explicitly permits them to change or be removed at any time.", + "evidence": [ + { + "resource": "repo://hub/swagger_databrowser.yaml#L2-L6", + "version": "repo-lines-v1:sha256:b3eac5a9b75b4574fd9d6331c2e4df2e3f05c3aa14c8cb8548772c35b6782a1c:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjlkMDNmMGZjZTMwMzRlMTI1YzEzNDc5ZjgwNDYxMjVhMTg3MDcyOThkNjRjN2E1NDgyMjg4MjgxZmVjZmQ2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTRiMWI3YWI2ZjRiZDc2NDUyYjI4Yjk3NzdiOWYyMTRkNmI4ZjkwNGM1MDk0YzA1MDhhNmZlZGZhMDQ2Yzg5YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjEsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDFiYTQ3MTljODBiNmZlOTExYjA5MWE3YzA1MTI0YjY0ZWVlY2U5NjRlMDljMDU4ZWY4Zjk4MDVkYWNhNTQ2YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2NjZjcyZWNkNjQxODUyOTE5ZjBmMDgxMjU2MDQ1ZmU2ZWY2NGQ3NjU3NDUyMzBlNmY4MmYwODU1OThhMjc0YyJ9" + } + ] + }, + { + "id": "claim_6cbfb120e28049ecacff7e84fb97f142", + "statement": "Orphan status does not make root sources unused: Community is linked by the navbar, Legal has a policy tree and download links, and orphan legal-service, legal-dap, and partner fragments participate in legal composition.", + "evidence": [ + { + "resource": "repo://_templates/left-sidebar-bottom.html#L23-L28", + "version": "repo-lines-v1:sha256:8634d520ac95a02130766ae6819ee9d1ca45ccf00f39fbd22160531f1696d985:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjliZTMyNThlMzI0ZjA3Y2YwNTg5ZDU4YjRhZmMxNWI5MDg3MGRhOWFmYzVjOTEzZjk0MjI2Y2M2MzE3ZGRjNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjI2YTJkYmQ4YjliOTZiNmNmM2E3ZTE5MTk3NjM4ZmRlMTE3ZmQ0MDE2OTQ3ZTI2ZTVmNDMyMDkyN2I3OWJjMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzExNjk3NzE0ZDM3ODFjNTdjOTc2ZWNjZDk1ZWE2OGQzM2Q1ZDk5NjM2MzMyZWRlZjIyNjAwY2I4ZjE0ZTNiMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWJjMGY4YjI2ZjZmOWQ1ZTg2OThlZjc5OGU1ZDE2ZWM5YzgyMmE0NGMzZmRjNTBlYTcyYmY2M2VlNjQzNmYwMiJ9" + }, + { + "resource": "repo://_templates/right-menu.html#L19-L25", + "version": "repo-lines-v1:sha256:56310357cfedb36eccc54ee6419891f77273a15c62e50046405720f0dc3dde87:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2QyNzNjMWM3YTkyM2Q3YTM0MzlhZDM4YWNlNjU1ZDliY2NmMmJhZmYyZTc1YzBlY2EyY2RlZDVlMGU2Y2Y0ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWRjODg0YzEwMDdlOWVlMzdhMWU1Njc1YjMyOGM5ODNiZmFjNWI1YWMxY2JkOGI2ZGViN2Y4ZWU1NGMyYmQ5MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzUwMGJhY2ZjMzQ5NTVjZDE0ZTYwYjJkMmRlMzgwZTIwNzVlYjJmYWFhZDAzOWEwMDY0OThlMWMzNTViNmQwYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2Y1YWI2OWMzNGRkMjQ0MDhjYWFmOGQ2ODEyYjViOWMzMzE3NGRkZGY4YTIxZGE1NDdkM2NjNjQ2ZGQ5YzE4ZSJ9" + }, + { + "resource": "repo://community.rst#L1-L7", + "version": "repo-lines-v1:sha256:1bb2fdc621ef05af48363b7fbe621f6e39ed6ae5e33193711db3928cc5bd9f7a:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjkwZTNmNzA3ODA5ZGI3ZDkyOTk5OTZlNjg5ZDYxYTY2ZmQwYmFhODQ1ZTBhMTFkZGYwNzc4N2JmMjY3MzExNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjExY2Q4MTNlZDI3NDc1NTVmNWM3ZWUyNWY0MGU3YjUzMTFhZGQyMjY5ZjczYWJlOGE2YThhMDNjMTRkMTk4NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWMwMDViZjk4OTEwMWZjYjM2OWJjMTc4MzRmZjNhNTkwN2UxNjYxNGNlYzRiMzQ0NjM5YTI5NDY4ZGY4YWIxNiJ9" + }, + { + "resource": "repo://legal-dap.rst#L1-L5", + "version": "repo-lines-v1:sha256:d34463f23713392b575ae8f5d55146fba93fd8a549a6134e2c1820319177e083:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjkwZTNmNzA3ODA5ZGI3ZDkyOTk5OTZlNjg5ZDYxYTY2ZmQwYmFhODQ1ZTBhMTFkZGYwNzc4N2JmMjY3MzExNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDgyYWQzNDNjZDJjYTY5NjNkOWIwZDNkN2EwMjUyYjAwZmYyZTdlMGY5ODZiZmI2YzM3MzY5OGMxODEyZWQ4NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDAzYTFlN2ExMzE0YmIwMDQxOWM1YmYyMTU5NjFjMjAyYTI1MWQzNDhlM2NiZjE5YjFlYmVmMjZjNGQyZmJiNiJ9" + }, + { + "resource": "repo://legal-service.rst#L1-L5", + "version": "repo-lines-v1:sha256:dc78cdfa80a6630e67d5f40700fe2f1d741cda1d6d2423725645d8099c07590f:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjkwZTNmNzA3ODA5ZGI3ZDkyOTk5OTZlNjg5ZDYxYTY2ZmQwYmFhODQ1ZTBhMTFkZGYwNzc4N2JmMjY3MzExNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGMwMTU3ODVjNDBkOTk3MDQ2MTQ3Mzc3NDU5MTlhMmFhMjk0ODk2N2ZjODM1MTgzMTQxY2QyMWQ5ZmQyMzM4ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmNhMTdkZGEwZmQ4ZWViZWYxMDExYjcyNWQ5N2JjODI0N2ZkYTIyNDM3OWRmOWEyY2U0ZDU4YWI5MDVlMjg3OSJ9" + }, + { + "resource": "repo://legal.rst", + "version": "repo-file-v1:sha256:d695fac6d268c658c385f1771f7881c1d910eb097a65ebc6b24ade621dd051e3" + }, + { + "resource": "repo://partner-agreement-part-1.rst#L1-L4", + "version": "repo-lines-v1:sha256:5a48a2c3a6e2e3bb953649dbc0e5d72f3a3a632012a2ce618dcbc8321fd6baab:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjkwZTNmNzA3ODA5ZGI3ZDkyOTk5OTZlNjg5ZDYxYTY2ZmQwYmFhODQ1ZTBhMTFkZGYwNzc4N2JmMjY3MzExNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjgzZjQ3M2JiZjJiYjU1MjUyMjdkMGIyODVjMjkwOTc4YTVlZTlkNDEzMDliMTM3MDJlMmJjMDQyNmVlMWNlNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjY5MjlmMmI0MmJmNzFhMWVlMjUxZTMyMDk5ZWJlZjIzNmIwYjY5NTk5ODY0MWI0MmRkN2Q2OWJmOWViMTkwYSJ9" + }, + { + "resource": "repo://partner-agreement-part-2.rst#L1-L3", + "version": "repo-lines-v1:sha256:25084a6929a69fc7a0a88cd9a51a322b0c93b9e1ff24d5ff487e637cd5dab44d:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjkwZTNmNzA3ODA5ZGI3ZDkyOTk5OTZlNjg5ZDYxYTY2ZmQwYmFhODQ1ZTBhMTFkZGYwNzc4N2JmMjY3MzExNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDliMzNmYWMxMGJmZGNiYmJmYThkZWM0ZjFlNGI5MjY0MmM4N2NiMGRjZmYxYTQ0ODcyN2ViMmU5YmQ1YmFlYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmNkYWYxYWRkOThhZTczZjQyOGUwYTQyYzFmMjNmYzk1M2MyYjdkMjY1ZTgyYzQ5OTVlNjZlYjc5ZGU4YjA1NyJ9" + }, + { + "resource": "repo://partner-agreement.rst", + "version": "repo-file-v1:sha256:6340f290c3fb78caa5c0efa4f18d7a20b05ef40ad86d8790d27fe6b836e17f28" + } + ] + }, + { + "id": "claim_2cde04b83741496d9ec3bcddace65ead", + "statement": "Configuration maintenance starts at index-service-configuration and follows general, pipe, and system guides containing common prototypes/property tables into type-specific source, sink, transform, pump, and system references; quick-reference and feature links are coupled consumers.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/general/configuration-general.rst", + "version": "repo-file-v1:sha256:c9fe1a3229dbae2f0bb8b80d903fbdc7f9a48f61576d77f7d299c91a8ede5adb" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L19-L83", + "version": "repo-lines-v1:sha256:0d17a021a8fcd13a9011c3424acebb198183d13e6c8100391585f4dc71ca5c0a:eyJzZWxlY3RlZExpbmVDb3VudCI6NjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI5N2YwNzJiYzE1MzJmNTI5YzJjOTRmYWQ1OGUyNWM4YzVlMjMzMWUwNWNiNTUzZjdmNjQwN2I0ZTRkYzNkNmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwZDk2YTY5ODFkZjkyMTNhMWU5Yjk4YjViNzBmODE4MzJmMWI2OWJjMzI2ZWY0ZGUzNzE3MzM0NzBmMGMzMzQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNiNzNjMDM1ZjIxNGE4OWNiNGI4OTE4ZDM2M2M5YTM3OWEyZGE4NTQyZjU1YjQwMzcwYjRmMzQyZjlhYWMzZGUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L269-L304", + "version": "repo-lines-v1:sha256:46d941c85debd35fa155dde09045e79fdd981cbb0bad02f76e1300372bd4d34e:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiOTM5NjI4ZTljZWMzZmFmMTkzMWZjYWU1ZDYxMWE1MjE1OGQ0YzM5NDJkZTE3ZTdiNjIzNGFjZTA4ODgxY2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjZWI0N2MzMGVhMGMzM2JkNDlkYjhmOGU0MTM0YzZmODIyNDhmYjU3ZmU3NWI2Y2ExZTU0ZDkxMTI0ZjliYTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU5MDYyMTM5M2NiMWU4ZWFlYjgwM2YwMWI5M2ZjYzM3ZmMwMmQxNmJjYWM3ODBhMjkwY2E0NDJiOGI5MDMwYzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources.rst#L344-L367", + "version": "repo-lines-v1:sha256:6ffd266e830f4baba34c6d4f8bb6f58abb7f23fcd0530008980040a487818dec:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyZGJkZWI5NDY3MWM2NzU1MjAyNjYxNzkzMGM0NzdkOTk4MzBlODIzYWI5Yzk2NjRlNjI4NWY3NzRiZDliZmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQxNjU3MTAwNDIxYmUyYjE4YWY1MzA1OWU5MGU1ZTRmOTBlYWMwZTc5NGRlMzQwZmQyOWFhYjVlYzkxNDgwNTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhkOWIyNmM3NDI1YTdkYzhkZmRmOWI3YTE2YWNlN2EyMzI1YWFkYzU1ODAzNmI2ZTkwZjllMTM0MTRlMmRkMzAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/systems/configuration-systems.rst", + "version": "repo-file-v1:sha256:01b56b2e7d60db6476379e27835605ab772d57d108655b314c8ef477f5243781" + }, + { + "resource": "repo://hub/index-service-configuration.rst", + "version": "repo-file-v1:sha256:aa7a16675b3f6c7f2405ecdb644954d1bcb25a919f915ac0434af0ab361d36d4" + }, + { + "resource": "repo://hub/quick-reference.rst#L7-L78", + "version": "repo-lines-v1:sha256:c7498971df3d1200dc4125b83ca1045e245795386df2d0bbbe77fd9a8e05f168:eyJzZWxlY3RlZExpbmVDb3VudCI6NzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQyODkxZTY5ZjJkMGEwMzFlZjZmMWFiMDdlMDZlM2UxOGIxMGRkZmViYjI0ZjJmMmU1OTY5OTVkMTgyZTFmZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMwOTczYzE3NDlmNTM2MTAyOGEzOGVjMjkyYTE1YzhjNzJiMWY3ZmJkNGUxZmNlODU4NGFkZjFiN2U3ZWRjZGEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc1YmFjZGE4YmJkYmM2N2UzMDIxOWRjNTFiODcxNWE3NmJiOTRkMTQzODBjZTkwNmY2NWJmOWQ1MzE2OWU4ZGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVmNjE3ODNiMTMxNzUwYTAzYzVlYjk4Njk1Zjk0MjJhZTQ3NmU5YzUyOGVmNDFkYTUwY2YyZjgzYmEzNTdlZTkifQ" + } + ] + }, + { + "id": "claim_4ec31aa60db64b34b0e562484f146e6c", + "statement": "DTL maintenance spans the landing-page toctree, grouped operator references with labels/argument notation/examples, annotated examples, transform configuration, and quick-reference links rather than a single monolithic source.", + "evidence": [ + { + "resource": "repo://hub/data-transformation-language.rst#L62-L96", + "version": "repo-lines-v1:sha256:95ce13d39a4228de2722cef33a0bb1376ccfe98e4707d297ae4641df08ba3acd:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4ZjdlNzE2MTk0MzU5OWJhMjQ5N2MxODQ4YTdjODZlMTJmYWRmNDEwZDE5OWU5YWJkMTg5OTRiMzg3NDFiMGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAyZDRmNjQ3NmFiZmNkYWI4NTIwZDAyOTYzNmI0YTMzMWI2NmZiY2QwNmI0ZWJiNzgwYjE1ZDUwMzY1MDRkMTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ0YjBjODVjMzkzZWM2MGQ4ZWFhYzdlYTg0Zjg4MjgyYjZhNGQ1NGJhY2YwODdhMzdmMTlkMWMzNjlhNDQ0MjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst#L2-L42", + "version": "repo-lines-v1:sha256:219bb68c1dfaa2403603de608e4ab32c62c9ffb34b64e73d8cffe5a4574ef4c5:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc2YjZhYTg1NzcyNjg5NzFiNDE4ZmI2ZWJmODI5NDIzMWFjZjBmZDg2MmNjNzVkYzAzOGUzMGY5MDA5OTJmZWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzYjcyNGIwOGFhNmYxNTExYjMzYmFmZGE3NmFiMDEwZjMwMTY0ZWIyYmM3NjhlNjU5MDY1NjE5YjA0NmUyMzAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjoxLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + }, + { + "resource": "repo://hub/dtl/annotated-example.rst#L1-L35", + "version": "repo-lines-v1:sha256:402a4961159b5ff486bbaf171b3ac15bf9cba6a8dc6e4174e0243ec18cc25364:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQwY2VjM2Q5NmFjNzViNTkwODUyM2I5NTIwZjEwMDU1MWZkZTM0NGY2N2MzODU3ODI4NmY2ZTQ3MGVlNmNjZjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZTU3ODhkNWQ5ZDczZDI0YTgxZGJjMGE1YTc0YmZhODJjOWMzYjNhZjk5ZTUyYWY3OTZlOTBiNDY4YThhM2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBiZTI4NWIyZDczZDljMTI3ZDg3NDU4YjVjMjQ0ZDMwOTBlZjg5OTJiYjVmMzVmNzY5MmRiZGRjZTlkYzg4NjIifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-strings.rst#L1-L39", + "version": "repo-lines-v1:sha256:f02975e4c78aae9bbb59d6b2d048b8251081847ff6f4ae8310470fe7a365ce65:eyJzZWxlY3RlZExpbmVDb3VudCI6MzksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcxODhiNjQwYzM2NTdjZDk0ODlhNDU0ZmU2YmE5NDc0ZTgyZjcyOGM5OWMwMzRiNDQzNWJhNzk0NWFiNTcwMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjllNTNlNDFiNzNhODMxZjA1MGY0Mjk1MjI5ODdhZDk1MDQxZGI0N2FjNThjMThjMmQ1OTlkYjA2ZDg5NWE3MmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE4NTg2Y2ZmNTdlMDU0MGYxMDk2ZjU0YWY4ODI5MGY3ZTQ0ZjI2MmM1YzRlNjhkN2I2YmQ0YWI0NjIxMzZhMWMifQ" + }, + { + "resource": "repo://hub/quick-reference.rst#L80-L341", + "version": "repo-lines-v1:sha256:f85dcb204e185e73816e40d95d4483e4ad6c86ef0c6263b9273954d6be3718fc:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYyLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiI3YWU0Yjc3YTA1NDI2OGQ4MjQyZWYzMzVjMDZiZjcwODQ2NWNiYjdlNDhjMDU2M2UxODczNzE0YTFlNTI0NTdiIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI2Mjk1Y2ZlMWY4YzE0NDUxNjVkYWMzMjVjNGZiMDA2ZWU4ZWEyZjRhNDJlYjJjZjBiNWNiNTQ0N2Y3M2U0MmQ0IiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI3MjlhZDA3N2JlYzNiODQ4NjE4OGRiZWFlNjlhY2Y0YTU5NGZhNDhjY2U0MDE4NmZmOGE1MzQwYTEwNDFiZDU2IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MCwiZm9sbG93aW5nQ29udGV4dEhhc2giOiJlM2IwYzQ0Mjk4ZmMxYzE0OWFmYmY0Yzg5OTZmYjkyNDI3YWU0MWU0NjQ5YjkzNGNhNDk1OTkxYjc4NTJiODU1In0" + } + ] + }, + { + "id": "claim_965754737c7c464294b52dfc748b5f44", + "statement": "Connector documentation separates the connector input/output contract from configurable manifest, templates, and config.json building blocks, linked from the connector guide.", + "evidence": [ + { + "resource": "repo://hub/documentation/connectors/connector-config-file.rst#L1-L7", + "version": "repo-lines-v1:sha256:dda10dc6f168229d1228c24045b6cf0925302ce9c72ab50c8fdc70173e8b6554:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmM2YTc0MWY3NWE5ODdhYTUzOTU3NTUzODMyMDhhYWQyM2Q1MmQzN2RkNWRjZmI1YjZjNjczMWZlODkyZjQ2MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzg0MjM2OGI3OWU5ODQ5YzIyZDI1YjkwZGY3NGFkMDE2NmRlZWI0YTUyZTM4MTM1MjFmMjg1NWU2OGM0NzlmMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGFmYjA3Y2FmZjNmYTc0YjAzM2VmZGVkZGVlZjc5ZWY4YTZlOGJjYzQzODMwMjU4MmM5MTZlMjFiMjM4NWRiOSJ9" + }, + { + "resource": "repo://hub/documentation/connectors/connector-configuration.rst", + "version": "repo-file-v1:sha256:b081e4d5a7b34cfb46e4561dd780ae2db39402425a2667ce71c5f3aeb7ac1372" + }, + { + "resource": "repo://hub/documentation/connectors/connector-contract.rst#L1-L15", + "version": "repo-lines-v1:sha256:bdee8e655168439af6366dea22c16347b920b022b7c6bcabcaf1d7c66ce81609:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI3Y2VjMTFhN2MyMGUxMjY3MDBkMWUyZTdhYzdjZmY4ZmJmZWQ2YWEyOGJjNmFjN2E0MGE0NDRiZGZiNTJhYTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQzNjU0NjdlMzgwM2FiMDcxZjI3YjY3ZjliYTgxMjkwNWIwNmRjNTI4MWU1MTgzMjdmYTVlODJiNDY5YWUzMzUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhhZGQwZTY5MmUzOWFmMTZiMWU4MWIxZDAyNjE4YWYzNzBiYzY0ZmMxZjBjYTllNzM1NWE1ZTNlM2MyODE5OGEifQ" + }, + { + "resource": "repo://hub/index-connectors.rst", + "version": "repo-file-v1:sha256:03742d897699d6808c9e0a73314b52abbe7ee638cc7cb139a141a3ee6033279d" + } + ] + }, + { + "id": "claim_0c5b160cdf6d43babb9e0492f51301f3", + "statement": "Tutorial source changes can affect navigation and authored download inputs: learning/getting-started pages link tutorial guides, Collect Data downloads CSVs under hub/files, and baseline upload downloads JSON with an explicit configuration-overwrite warning.", + "evidence": [ + { + "resource": "repo://hub/guide-getting-started.rst", + "version": "repo-file-v1:sha256:a89bbc78b117bc0375e7a57e0de655c3154ba7b5061045e8ca6b4e619bf945a5" + }, + { + "resource": "repo://hub/index-learn.rst#L61-L69", + "version": "repo-lines-v1:sha256:63a39042e3140979f6b782d9ebe2c7a826cc022d3e367ed0b4abb38743ead915:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZThmN2U3MTYxOTQzNTk5YmEyNDk3YzE4NDhhN2M4NmUxMmZhZGY0MTBkMTk5ZTlhYmQxODk5NGIzODc0MWIwZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWIyOTBhZmEwNjA5OWQ5ZmZiODJmOThjMGIwZjQ3NzdlZGMzOGI5YTM5NmI3NDMxODI5Y2I4MmE4ODc0NmU2NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGNiYTJmOTgyOGM4MGEyYzM4ZTI0OTY2ODk4NGNkY2I2MzJkNzYzZDY4ZmFkZGY4ZmU1ZThlYzI5YmQzNGVlZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L25-L35", + "version": "repo-lines-v1:sha256:7ac251deeab31485f626b61796913e1f6ae7ba3c6fff671d8dc5537eb0db836e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIyMDAzYWQyNThkYmVjN2Y3Zjk0NDk1ZjUwOGQ5MzliODZlNjY0ZjFiMzRjOTZhM2JlMzQ3M2Y4MTViZTI0MjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZjY2MwNjI1MGFhMWMyMmUyMDVkZjhmYmYwMWIxYWFiZGY4NWYwZDcxZDIzM2E3NTY0MDhhYzk4YTgwNDIyN2MiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA5Nzg5ZmI0NzI2ZWQ4NjJkNjllYWVjN2U3ZGU1YzBjNWY4OTA2YzgwNzhlZWJhOTU4Y2E3MjBmZGJlNzc5NmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA1NGRlNjE1Zjg1N2NmZDBmOWIzYjg1YjMxMDNhNTE4YmE3YTgwOTkwNDhlY2ZlZjNhMzE0YTRkZTZkZjllMjgifQ" + }, + { + "resource": "repo://hub/tutorial-upload-baseline-config.rst#L1-L18", + "version": "repo-lines-v1:sha256:bdd18c81dced2065fa5825c9e1fb14c486d5b4573aceb60d5e922c24aa268216:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY5MGUzZjcwNzgwOWRiN2Q5Mjk5OTk2ZTY4OWQ2MWE2NmZkMGJhYTg0NWUwYTExZGRmMDc3ODdiZjI2NzMxMTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhhMWNjODIwNmNmMGJhOWZmNjRkOGM0NTM2MDA0Nzg1YTJjY2Q1ZTA3MWMzNzUzODY0MTNiNTBlNzUyNjNkY2EiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRmY2Y3MjZlZTMwNmJiNzhmMzZlNTc4NzAwMjk5N2FlNzliNDdkZDI4NjA5ZmI0ZTNhZmNjY2VkOTE2NTM0OGEifQ" + } + ] + }, + { + "id": "claim_b2b83e173bad4ba3b5e8268451e05213", + "statement": "The local README documents creating and activating a Python 3 virtual environment, installing pip/wheel/requirements, running make html, and opening _build/html/index.html or using python3 -m http.server for search summaries.", + "evidence": [ + { + "resource": "repo://README.md#L1-L25", + "version": "repo-lines-v1:sha256:446ef5080a2a970dba92129cb8359028ffdec908524220257a860419123707a1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNhNmRmM2U0MmQ0MGU2OTM5MTQ4ZGZiZDNjY2E2Y2M2YjA5Yjk2N2Q4NGJkZDk5M2EzNzRkZDUxYzU2ZWI3MWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI4MjIwMTYzZWRlMjA1MDJiMjhhNjYyNzY5NTA2YTllN2I3YzVkOTRhN2ExZDhlYTFjNmE1NjFhOGQyMzQ0OTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk2MjhlZWFjMzJkOTQ1N2QxMWFkOGVkYjk3NDRiZDdiMzIwNGRjNWVhZDA0NWY3Y2NjNTY3NzljMDk1ZjFkNzMifQ" + } + ] + }, + { + "id": "claim_8c14f4aef0324a56b5fbb3b80e5adedb", + "statement": "The dependency toolchain is pinned, including Sphinx 4.5.0, pydata-sphinx-theme 0.8.0, docutils 0.16, OpenAPI 0.7.0, and panels 0.6.0; the README states a Python 3.7 theme minimum, CI selects Python 3.9/Ubuntu 22.04, and the root builder selects Python 3.8.12/Bullseye.", + "evidence": [ + { + "resource": "repo://.github/workflows/merge.yml#L8-L15", + "version": "repo-lines-v1:sha256:221e495ebab002060bdf64fdd21fe5f9043c11d3d13ed5ab5a13cde5dc85e890:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdjNDVlOTdhZjY2NzhjNjliNjlmMDBlMDdlZDc5NmYwM2I2OTlhZDQ5OGRkMjRjMjdiYzRjMjFiZmJkODQ3YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDhiNWE5OWJmZTM4MTkyZjZiMzgxNzVhZTk3NThiNmFjZDEyZmUwNjlmMzMxNWU5Y2EzZWExNjc3YmM0ZmIzYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTExN2I3MzMyYmI2NTJhMDNlNzc4NGNhZjEwM2U5MmRlZjBhYTkwMmEwNmMwY2IyNmI3NTBmMDA4Y2IzMjU0YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDcwNjEwNGFkN2YyYjkyYmZlZmM2YTQ1MDliYTE1ZDRhMzY2ZTZkNWVlZWEwNWY0ZmJhYTUwYzdkYmQ3NzVhZiJ9" + }, + { + "resource": "repo://.github/workflows/pull_request.yml#L5-L12", + "version": "repo-lines-v1:sha256:4477a61f6bf9d1ca442c2c3b88dcdc82862884d652e98e4c128f9d0d98282d70:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdjNDVlOTdhZjY2NzhjNjliNjlmMDBlMDdlZDc5NmYwM2I2OTlhZDQ5OGRkMjRjMjdiYzRjMjFiZmJkODQ3YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDhiNWE5OWJmZTM4MTkyZjZiMzgxNzVhZTk3NThiNmFjZDEyZmUwNjlmMzMxNWU5Y2EzZWExNjc3YmM0ZmIzYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmM4MTA3NmJmMTFlZmM2YmM0MjU3N2IyOTJmODcxNjBjMTczYmQ4YmI5MzU4ODE5NTA0MmE1NDgyN2UyMWQ2OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDcwNjEwNGFkN2YyYjkyYmZlZmM2YTQ1MDliYTE1ZDRhMzY2ZTZkNWVlZWEwNWY0ZmJhYTUwYzdkYmQ3NzVhZiJ9" + }, + { + "resource": "repo://Dockerfile#L1-L1", + "version": "repo-lines-v1:sha256:c79a92e414fe402141b9309a689a365b29dae39ddd0d208d110e514b8405fb2e:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzc5YTkyZTQxNGZlNDAyMTQxYjkzMDlhNjg5YTM2NWIyOWRhZTM5ZGRkMGQyMDhkMTEwZTUxNGI4NDA1ZmIyZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzc5YTkyZTQxNGZlNDAyMTQxYjkzMDlhNjg5YTM2NWIyOWRhZTM5ZGRkMGQyMDhkMTEwZTUxNGI4NDA1ZmIyZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDc4ZmE0MTRlYTViNTZjOWQ0MDhjYjkwMGJkNzAxZTNmZjE2ZWM1MDIzMzYwYjQ1ZDFhZTdmNjI2YTcyN2MyYSJ9" + }, + { + "resource": "repo://README.md#L22-L22", + "version": "repo-lines-v1:sha256:2cbbad023662ea2bf67542337f2c08bb22caadf3e12a14709643516766ed8b87:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmNiYmFkMDIzNjYyZWEyYmY2NzU0MjMzN2YyYzA4YmIyMmNhYWRmM2UxMmExNDcwOTY0MzUxNjc2NmVkOGI4NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmNiYmFkMDIzNjYyZWEyYmY2NzU0MjMzN2YyYzA4YmIyMmNhYWRmM2UxMmExNDcwOTY0MzUxNjc2NmVkOGI4NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzc4MDAwYjM5YjhhN2M3ZmY0YmNmZDkwMDU2OTJkYzdjNTVjYzI3ZDU4OTY4MTQ2YTU3MGVjYzQ5ZGVhNWVhMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDg5ZTg5YmNmZjIxYjc4ZTM2MTY1OWFiMjY0YmU2YjBhZWU5NzQwYjYwOWUxY2ExMjIyZjhhY2I4ZWE3ZTYzYyJ9" + }, + { + "resource": "repo://requirements.txt", + "version": "repo-file-v1:sha256:d5264c1fe66ef2057cd77c20aef1c9eeedafe4588dd2ab5972d1b399702c07aa" + } + ] + }, + { + "id": "claim_3ba10d2af92d41e1a00d88dc7bf54ce5", + "statement": "conf.py directly indexes os.environ['VIRTUAL_ENV'] to build exclusions, so the key must exist even without a real virtual environment; CI supplies venv and the root Dockerfile supplies an empty string.", + "evidence": [ + { + "resource": "repo://.github/workflows/merge.yml#L29-L32", + "version": "repo-lines-v1:sha256:cc14f1578d31815f1bbbfc4b36ab7684a8cc20c6234d4f3c7a5ee3c745e61ed2:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzJkOWRlMTUxOWYxNzc0MmM5Y2IzNjE0NDk0ZmFmMmNmNmQ4MzUyM2JkNTkwNDY3MWNhNTBlZTNjMDc2MzZkOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzczY2Q0NGUyNTU3YjEzYzY2MDc0ZjU0M2YxNzc0MGYwZDg4ZTgxNjFlMTBmMWU4ZmUzYWUyYjJiNzU0MzJiZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWVkMWFjNzViMTBhYzIxMjZlNmIxZjM0YWVkM2U3YmE2M2NlZjM0YmNjZWEzN2Y4ZTMxNjg5ZGJlNGE2ZDNmYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGM4MDlkYjY3OWJhNGY4YTE0YzlkODljOWFhMzFmZGVkY2YzYmM5OGUxOGQ2NmNhZTFhMjQ3MmNjOTVjMWYyMSJ9" + }, + { + "resource": "repo://.github/workflows/pull_request.yml#L21-L24", + "version": "repo-lines-v1:sha256:8cb2cc000725b9db2c51b9a91074ec10d384809cb73a5bdc2415246a941e190b:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzJkOWRlMTUxOWYxNzc0MmM5Y2IzNjE0NDk0ZmFmMmNmNmQ4MzUyM2JkNTkwNDY3MWNhNTBlZTNjMDc2MzZkOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTAyODA2YjcxMjU2MjY0MDg1NTRhYWUzMTYxOTBiNjAwOTZiYTg1YmQ2YzBjMmQ3YTIwNGZjOWY2ZjNlNjE0MiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWZjMGE1ZGU3MGI1NmExZWZjOTliY2ZhZDkzY2IyNjI2MDczY2ZlMmVmZTc0N2FlM2UxYTcwN2QyMGU5OGE3NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://Dockerfile#L34-L35", + "version": "repo-lines-v1:sha256:86d9bed10b6cdaa14254f130fa528c05e1694818ac84a7da5e43a8a1b22ca3be:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGY1ODg1ZWQ5MmM3ZmEwOTM0ZmM3NDZjMDI4MGI2MGFhMTY0ZDk3NjcwZDc0ODc5YjRmYmExMjQyNmU0MzYxZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWI4NWY2ZjU1Y2M4YTVkOGU5MWU0MjAyODBkZDcwZTVhOTg4ZTEwMTQwODdmYzQ2YWIyZDU2ZmFjODJmNTM4OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTkwMGM0NTI5ZGQ0NWMzYmNkNTJiNjI2MzgxYjdiNGM2MjIxNGZmZDQ1N2NjYWRlYTU4NGM2ZTJjZGY4ODkxMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://conf.py#L95-L97", + "version": "repo-lines-v1:sha256:b3379627ee71bc3b01993028ffa391fb6d3f926176acba291cb8af7cefe3b129:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2FkODEwZGViMWVkN2Q2NmMxNWVkNjdjNDQwNmQ4NWEwZTA2MzFkNzZiN2VlYTg4YTA1ZTUxNWE2NTdiZWU2MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWIyODVhM2U5YWU0YzRkNzkwY2NlOTkxN2FjMzQwMDE1OGIwZTgxMDk2MzQzZjI0Njk3MTBiYzFiZTJkZDNhZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzI5NjgzZTk2ZGI2YjEyZWRmNzE2NTQzZjdhYWE1NzdiODExNzQ3ZDc0MWZhNDU2MjQ0NjllY2E2NGY5NjI2YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWFlYjY2Y2FlYWQyYTg0Yzg2YWFlNzBlM2M0ZWVmM2U2Yzk4ZTI3MmI0OTU2ZTJiNzIyMzcwNWQ2MjVlNzJjMCJ9" + } + ] + }, + { + "id": "claim_3c7ed76a0d314fce97c9249ecb372fdb", + "statement": "Normal Unix make html requires Pandoc and TeX contract-generation tools in addition to Python/Sphinx; README platform hints differ from the CI recipes, which install a broader TeX/font/Ghostscript set and Pandoc 2.13.", + "evidence": [ + { + "resource": "repo://.github/workflows/merge.yml#L16-L23", + "version": "repo-lines-v1:sha256:5b3de661a3c8c13079ee3a33ddccad13ea621f097107ddef25f3bd82a7224767:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjk5NjEyOThjNmU4MTFlNzA4NWRkNjIxZGNmMjdhZGEyMzU2N2NjZmU5YzY0ZGZhZTVkOTk1NjM0ZDg4Yjg5MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNiYzc5OWRkZjhmNDU2YjAwOTIyNmE4ZGMwZmE0YWExNDA2MWYwNjhiNTAxOGNjYTU5OTdiMDk5NTFlMmIzNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmI0MGJlMWUyN2YyY2MyZGE2MTg3N2NjZDdiZWU1ZWE0NTQ3ZGI3ZTQ4OTU0ZjM3NTk0MmUxMDU4ZWNkMjIxZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMmMxOGYxN2Q1ZjUyMWE4MjgxMGVkMGViZjBiMmVjNjQzMWQ1YWQ2Y2E5NWNhZTlkMDEwMWI4MDdjMTkwMWJhNCJ9" + }, + { + "resource": "repo://.github/workflows/pull_request.yml#L13-L20", + "version": "repo-lines-v1:sha256:5b3de661a3c8c13079ee3a33ddccad13ea621f097107ddef25f3bd82a7224767:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjk5NjEyOThjNmU4MTFlNzA4NWRkNjIxZGNmMjdhZGEyMzU2N2NjZmU5YzY0ZGZhZTVkOTk1NjM0ZDg4Yjg5MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNiYzc5OWRkZjhmNDU2YjAwOTIyNmE4ZGMwZmE0YWExNDA2MWYwNjhiNTAxOGNjYTU5OTdiMDk5NTFlMmIzNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTY3NjNlZDQyMTM3MGM3MmMwMWE3MTE1MmRhYTdiNWY2NThlMTUyNGYzN2M4MjRiZjk2ZTdhZTE3NWM2OTM1ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjU4MDdkODczMjExMTY1Mjc1ZTI0YjJlMDI2YWE2NDZkYzE1YTliMGI3ZmQ4MDE0NTQ5NmZjYjEwZWZkZmZlNiJ9" + }, + { + "resource": "repo://Makefile#L62-L91", + "version": "repo-lines-v1:sha256:d9dbd0594190699d39deb687f9bddc72632a07ce2ae1750ed121d33316963097:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4OTM4OWVmMmRjYjE5YjZjMjRhMjU4NTU4YmZlMGMwM2E4MjY3N2M0ODU0OWU3N2U3YWNmM2M3Mjg3ODI1NWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZmYjNjNDFkZGRlNTk4YmVmYzRhZDZhNTU2NDQxN2I5ZWNlOTk0YWNiNWFkOTUwMTljZGQxZjVlNmVlNDkxYTgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc1ODYxOGM5NmZhZWNlNzBhMzkyOGVjMTYxOWZmNDk0NmVhNDJjZGViZWZjOGE5OGI0NTc1NmJiZTcxNjhmNDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcwNTZhYjc1NTQ2YjQ5MzZkZTNlMGU2NDViNTJhYjRjMGMwY2NkMWMyMDY1MDMzYTk3MTAxMzMwMmRkOTI2NmIifQ" + }, + { + "resource": "repo://README.md#L15-L35", + "version": "repo-lines-v1:sha256:f475ff775913b2ea707f8ef0b11318376e0762e4764c056da58f14dca61a460e:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjExNjEzYjY1ZWNiMzFiOWYwOWRhMzI5MmRlNGYwYWYwMzc4MWI5NGJiZWNlYzE2NTRkNzI0YTNkNTM5NDJkZTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkN2E1MTVjNzRmOTkwYmEwN2FkNjcxMWFkOTY2YTU4NzIwNDYxYzAyNDZkNjAzMjdjYmUwM2ZmYjU0YTIzOGEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ0NmM4Yzg4Y2VmMjAwOTc1MWExYjRkOTg1MDgzOTVjNWZiYTI4MjZhNDk5ZDk4ZTUyN2ZhZjdlOWZjZTU2NTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_6239f176889a42a7af2d7967534e2a45", + "statement": "The Unix Makefile defaults SPHINXOPTS to -W, checks for sphinx-build, builds from the repository root with _build/doctrees, and writes HTML to _build/html; explicitly clearing SPHINXOPTS removes the default warning-as-error option.", + "evidence": [ + { + "resource": "repo://Makefile#L10-L26", + "version": "repo-lines-v1:sha256:d5b2b2d704e37ab68b30143b7fc2ccdbcac80e58733d4c48f04fa3e49941cb1d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE1ODY4YTM3NWYxODBkYTFkM2Q0OGI1YjE3MzFmMzY3MmM5MDIzMDRkZjhjZDMxMWY4Nzg0OThhNTIzOTE2MmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI2OGZiOTMzNmE3N2E2YzBlM2NmM2Q0NjBjZWMyYWNkOGNkMzMxNWNlZDE1Yzc4ODQ4MDI5YzAxOWY3MGNiYWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdjMTRkZWU0MmZkZjU5NzgwOWFiMWU3MGRlM2IzYzI5NDg0MzEwZDdjYmMwNzU0ODdkYTRmNjBmMjMxYWQ0M2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImExMWEyMjgwYWQ5OGVjNzNjNjYzMGYwZWI0NjIzN2NmMmRjMjE4OWRiMmE1YjYxMGE0YmY4NDkxMzgyMDUxODcifQ" + }, + { + "resource": "repo://Makefile#L90-L101", + "version": "repo-lines-v1:sha256:4c0e828943e9f48b6efd67dcb0370c043a442f6655edb7d1b30ecd25d0bda27b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjY2Y0MjVkODNlZmUzZTdlYTA3OTAxOWM5NTJlZjM3ZDI2YTk2OGFmMDU1Yzc5NjE1NTA4YjBkZjgyOGIyNjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1MzlkOTIyM2U4MGYyNDkwNDhmZDk2YjQ2MTExMWQ2MTVlMDVjMGZmNmE5MzZhOGUxMjYxZTk4MTRhZjZmMjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ0NTUxMzljOGQ1YmE4NzQzMWNmNjQ3ZGQ5MWM0MTBkZTQ1YmYzYTg1ZTcwOTg1ZjY0NWRlNmViODc5NmNhMmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIxNDEwM2Q4NTEyYjA5NGZiZDY0ZTk1NmIwN2NiZDg2YmNkOWRjZjliYTI0M2JjYzgyMjFiMjE1OThkOWFhMTYifQ" + }, + { + "resource": "repo://README.md#L35-L35", + "version": "repo-lines-v1:sha256:4d7a515c74f990ba07ad6711ad966a58720461c0246d60327cbe03ffb54a238a:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGQ3YTUxNWM3NGY5OTBiYTA3YWQ2NzExYWQ5NjZhNTg3MjA0NjFjMDI0NmQ2MDMyN2NiZTAzZmZiNTRhMjM4YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGQ3YTUxNWM3NGY5OTBiYTA3YWQ2NzExYWQ5NjZhNTg3MjA0NjFjMDI0NmQ2MDMyN2NiZTAzZmZiNTRhMjM4YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWE3OTY1ZTM1ODllYTQ0YTg5ZDcxNmE2MTIxMzg0ZWQwMmU1OWNhNTYwMGVhMDM4MDQ5OWJlZjNlM2FiYWJjMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_39dddc9bf71b44f3bc72afda361df3ee", + "statement": "Unix html depends on SaaS PDF/DOCX and partner DOCX generation before Sphinx: the SaaS recipe combines terms, service description, pricing, and DPA via Pandoc JSON with appendix headings, while partnerdocx consumes the included RSTX form; privacy policy is linked by Legal but absent from that SaaS assembly.", + "evidence": [ + { + "resource": "repo://Makefile#L62-L91", + "version": "repo-lines-v1:sha256:d9dbd0594190699d39deb687f9bddc72632a07ce2ae1750ed121d33316963097:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4OTM4OWVmMmRjYjE5YjZjMjRhMjU4NTU4YmZlMGMwM2E4MjY3N2M0ODU0OWU3N2U3YWNmM2M3Mjg3ODI1NWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZmYjNjNDFkZGRlNTk4YmVmYzRhZDZhNTU2NDQxN2I5ZWNlOTk0YWNiNWFkOTUwMTljZGQxZjVlNmVlNDkxYTgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc1ODYxOGM5NmZhZWNlNzBhMzkyOGVjMTYxOWZmNDk0NmVhNDJjZGViZWZjOGE5OGI0NTc1NmJiZTcxNjhmNDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcwNTZhYjc1NTQ2YjQ5MzZkZTNlMGU2NDViNTJhYjRjMGMwY2NkMWMyMDY1MDMzYTk3MTAxMzMwMmRkOTI2NmIifQ" + }, + { + "resource": "repo://legal.rst#L7-L22", + "version": "repo-lines-v1:sha256:3e997746aba381cfbf9f9bda42e8166532ca07ac869ac45a69376efa0cad4025:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU4ZjdlNzE2MTk0MzU5OWJhMjQ5N2MxODQ4YTdjODZlMTJmYWRmNDEwZDE5OWU5YWJkMTg5OTRiMzg3NDFiMGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU4MWE5M2FkYWZhNTViNjU4YjQ2NTA1NjUwYmY2OTdmZWY5YmM2NDZhZDg5NmFkNDNiYzYxYTZjNWFhOTFlMmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI1NjYyYTI0NWNjYjAxOGNiZTY0YmI0MmFlYTM5NDYwY2Q3NDc4NzFkNzg1NTI2ODdmNGE4NGE2NzhjYzBjYzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + }, + { + "resource": "repo://partner-agreement-form.rstx#L25-L38", + "version": "repo-lines-v1:sha256:eeccb8225b63ccf3c1d8f6acda1fff7b9163cf7582a4cfe028d66f37535e1dc5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImViNWRlZjk2ZDQzN2I5NjY5OWQ3NGRiNTllZGZiMzhmMWUzMDJkZGMyY2YyMTM4OGFlYWI4ZmI5M2ZkYWVmMGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1ZjJjNDNjZjZhYTk3NjIzZTA5MTY3OWJmMzJjNGY4MDBmN2ZkZWVjMWYyNzg0Mzg0NzY2MDgxYjBjNDUzY2QiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU4NDE3MTgxZWE0MWZmNGZhNzNlMzhiZGFiYzFjYTJlMzU1YTk0ZDFkNjNhOTg1NTZlODM0NTc0MzkyMzFiMDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_ca3d4fa879054ac78271f623c04d3ddf", + "statement": "pagebreak.lua preserves TeX output while converting raw newpage/pagebreak commands and standalone form-feed paragraphs into target-specific page breaks, including OpenXML for DOCX.", + "evidence": [ + { + "resource": "repo://Makefile#L77-L86", + "version": "repo-lines-v1:sha256:f069655ef78ab187ddc44bdf0f81751fa78ec6b7d50857be7b603dd25f4e4072:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE1MjFkYWE3ZmMzZmM3Y2Y0YjdlYjU5Y2Y3ZjY0NmI3M2JkOTU3NjdlMDdkMmY3MzE0ZDRiMjcyNDA3NjE0MDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ3Y2FlNGY2ZDk0OTY2N2M0ODdhNWU0OTNlZTNkMGExNTk5MGRjMjZmM2U5ZTNhZjY0NmYxNjM0MjVkNmJjOGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRiMDkxZjQxOTczNDllNGJlMjZiZTEzNzQ1ODYyZDlkMmVhOGFkYWVlNjA0MTNmMWZhYmJmODNjZTBhMTIwY2UiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ0NTUxMzljOGQ1YmE4NzQzMWNmNjQ3ZGQ5MWM0MTBkZTQ1YmYzYTg1ZTcwOTg1ZjY0NWRlNmViODc5NmNhMmIifQ" + }, + { + "resource": "repo://pagebreak.lua#L25-L34", + "version": "repo-lines-v1:sha256:f7dda206f944b2f089016da8e1554db6430479e084e76e8e528598bda81522b0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkMjBjMjJhNWE1YzdiNWFjMmY1ZWRmMTMwODhkOGExZTg4MWQzY2JiZmU2MTczNzYzYmY2OWM2Y2FiYmYzMTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIwNWU1OGFhNGUwOWVlYjhmODY4YWFmZDRlN2FlZmUyMzljYjJiMmE1YzI2OWQ5ZWIwOGQ3Zjk0ZThhNmQxNmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY0MGNjZjNkYzYyNDJlMWQwNDQ0YWQyMzY5OTVmYjNmNWEzNjI0OTM3ODAyYTBjMWM4ZTUyM2NjMjQyYzgxYWQifQ" + }, + { + "resource": "repo://pagebreak.lua#L52-L109", + "version": "repo-lines-v1:sha256:889966baca15870e73484224f8fb7649d0107e61dba50954b78f7bed664771e1:eyJzZWxlY3RlZExpbmVDb3VudCI6NTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZmY2VlOTkyNzc5NWM2YzNjNDA3ZTJiMDE1MDBiMzI0YmU5ODI1OGNjOThhZmFiYTE1ZjE5ODc2ZGI4ZGYxNDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU2NmUwZWNhZDNhYmU2NDUxM2ZiMDljYjA2NTU2NWQ0ZTdjZTYxM2Y1MjdhOWE1NDEyNmIyMThjY2U2ZGQzMDUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_6887f671081b4fcf820c3d2d8af4a34d", + "statement": "Generated contract downloads under files and the _build directory are ignored outputs; the Makefile derives the contracts from authored legal inputs rather than using exported PDF/DOCX as sources.", + "evidence": [ + { + "resource": "repo://.gitignore#L1-L1", + "version": "repo-lines-v1:sha256:fde6e46547307ef7e718427de6b7e3d65c6804d77a104f59bed39cec5b1b7c51:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRlNmU0NjU0NzMwN2VmN2U3MTg0MjdkZTZiN2UzZDY1YzY4MDRkNzdhMTA0ZjU5YmVkMzljZWM1YjFiN2M1MSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRlNmU0NjU0NzMwN2VmN2U3MTg0MjdkZTZiN2UzZDY1YzY4MDRkNzdhMTA0ZjU5YmVkMzljZWM1YjFiN2M1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjg3YTRkODAzNzY4YjJmYWUzODE4MGQyNWFkMDI2ZWIzMmI5OTlhYmExMDA3YjZkMjA0YzMyOTA2ZTE3N2E5ZSJ9" + }, + { + "resource": "repo://Makefile#L62-L91", + "version": "repo-lines-v1:sha256:d9dbd0594190699d39deb687f9bddc72632a07ce2ae1750ed121d33316963097:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4OTM4OWVmMmRjYjE5YjZjMjRhMjU4NTU4YmZlMGMwM2E4MjY3N2M0ODU0OWU3N2U3YWNmM2M3Mjg3ODI1NWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZmYjNjNDFkZGRlNTk4YmVmYzRhZDZhNTU2NDQxN2I5ZWNlOTk0YWNiNWFkOTUwMTljZGQxZjVlNmVlNDkxYTgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc1ODYxOGM5NmZhZWNlNzBhMzkyOGVjMTYxOWZmNDk0NmVhNDJjZGViZWZjOGE5OGI0NTc1NmJiZTcxNjhmNDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcwNTZhYjc1NTQ2YjQ5MzZkZTNlMGU2NDViNTJhYjRjMGMwY2NkMWMyMDY1MDMzYTk3MTAxMzMwMmRkOTI2NmIifQ" + }, + { + "resource": "repo://files/.gitignore", + "version": "repo-file-v1:sha256:d0afb0e6678e53effbc1423bd9a8d586050f86ad4361fdb8ed98c549a6fd07b4" + } + ] + }, + { + "id": "claim_3072ffdf83e045fdb17027f5cb85d01f", + "statement": "Despite the README's without-SaaS wording, html_no_saas only touches three download paths and runs the same HTML build, with no Pandoc conversion or SaaS source exclusion/tag; missing files become empty placeholders and existing files are not regenerated.", + "evidence": [ + { + "resource": "repo://Makefile#L90-L101", + "version": "repo-lines-v1:sha256:4c0e828943e9f48b6efd67dcb0370c043a442f6655edb7d1b30ecd25d0bda27b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFjY2Y0MjVkODNlZmUzZTdlYTA3OTAxOWM5NTJlZjM3ZDI2YTk2OGFmMDU1Yzc5NjE1NTA4YjBkZjgyOGIyNjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1MzlkOTIyM2U4MGYyNDkwNDhmZDk2YjQ2MTExMWQ2MTVlMDVjMGZmNmE5MzZhOGUxMjYxZTk4MTRhZjZmMjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ0NTUxMzljOGQ1YmE4NzQzMWNmNjQ3ZGQ5MWM0MTBkZTQ1YmYzYTg1ZTcwOTg1ZjY0NWRlNmViODc5NmNhMmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIxNDEwM2Q4NTEyYjA5NGZiZDY0ZTk1NmIwN2NiZDg2YmNkOWRjZjliYTI0M2JjYzgyMjFiMjE1OThkOWFhMTYifQ" + }, + { + "resource": "repo://README.md#L35-L35", + "version": "repo-lines-v1:sha256:4d7a515c74f990ba07ad6711ad966a58720461c0246d60327cbe03ffb54a238a:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGQ3YTUxNWM3NGY5OTBiYTA3YWQ2NzExYWQ5NjZhNTg3MjA0NjFjMDI0NmQ2MDMyN2NiZTAzZmZiNTRhMjM4YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGQ3YTUxNWM3NGY5OTBiYTA3YWQ2NzExYWQ5NjZhNTg3MjA0NjFjMDI0NmQ2MDMyN2NiZTAzZmZiNTRhMjM4YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWE3OTY1ZTM1ODllYTQ0YTg5ZDcxNmE2MTIxMzg0ZWQwMmU1OWNhNTYwMGVhMDM4MDQ5OWJlZjNlM2FiYWJjMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://conf.py#L95-L97", + "version": "repo-lines-v1:sha256:b3379627ee71bc3b01993028ffa391fb6d3f926176acba291cb8af7cefe3b129:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2FkODEwZGViMWVkN2Q2NmMxNWVkNjdjNDQwNmQ4NWEwZTA2MzFkNzZiN2VlYTg4YTA1ZTUxNWE2NTdiZWU2MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWIyODVhM2U5YWU0YzRkNzkwY2NlOTkxN2FjMzQwMDE1OGIwZTgxMDk2MzQzZjI0Njk3MTBiYzFiZTJkZDNhZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzI5NjgzZTk2ZGI2YjEyZWRmNzE2NTQzZjdhYWE1NzdiODExNzQ3ZDc0MWZhNDU2MjQ0NjllY2E2NGY5NjI2YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWFlYjY2Y2FlYWQyYTg0Yzg2YWFlNzBlM2M0ZWVmM2U2Yzk4ZTI3MmI0OTU2ZTJiNzIyMzcwNWQ2MjVlNzJjMCJ9" + } + ] + }, + { + "id": "claim_6c4396615ffa4b49be49ba7510b7727e", + "statement": "The Unix Makefile offers alternative Sphinx builders directly without html's legal-generation prerequisites; LaTeX PDF and Info targets add external tool steps, and gettext uses a separate environment rather than shared doctrees.", + "evidence": [ + { + "resource": "repo://Makefile#L103-L216", + "version": "repo-lines-v1:sha256:9a578bad8e30e0cc6093cb180195eaf71f237d2f22b80c38f33cb9d6dd24fd13:eyJzZWxlY3RlZExpbmVDb3VudCI6MTE0LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiIzYmFmMzJjZTJhZDlmZmFhMTQ3NjlhOTE2MmFjNjQ3NjZmOTU5OTA3NTY3OGNjZjI4NWJlMjUwZmQwNTBjZTllIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiI4ZTFmNzQwYjBkODlhMjlmZmNhNWRkMDJmNGM2OTY2ODc1ZjgxOTA4ZjE2OTUxZTcwOWQ2OWQwMmY0MThjN2QxIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI3MDU2YWI3NTU0NmI0OTM2ZGUzZTBlNjQ1YjUyYWI0YzBjMGNjZDFjMjA2NTAzM2E5NzEwMTMzMDJkZDkyNjZiIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiJiN2IyMTE0N2E5YmFmY2FlMjA4Y2NlNDQ0NTc2NGQ3YTgwZDY3NDZhZjEyZTU0ZDM3NmUzMTAyZjgzMzRlODVjIn0" + }, + { + "resource": "repo://Makefile#L21-L55", + "version": "repo-lines-v1:sha256:ecd5bc633641c8ecbde6fa3d634be2548ac4c0c917a911a78fbc028ebb9bfb6a:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1Y2U4NWIxMmY4ZWJmMzYzMTQwNDg4YWJmNGRkNTlmMjRmYmQ0ZmM2ZTQxM2IwZDBjMzBiZTZiNzYyMjEyZmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdkYmI0MWJkZjk1NzI1NmY3Y2U5YTdkMDQzZDM4ODA0ZmY1NDA2YTA1ZWQ0MzgxMTdlODI1ODhjNTYwN2MxZjQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVmODE1ZWY2YjI2NzU2Yjc4ZjVmZmFkY2VlZTAyZmM1NjcyZmViYTllODA3MTM2NzAzMmU4MTk2M2ViMjExODEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYxODY5YWMxZThkZGE0MTg2NTA4ZTVmNDRmZjk1OTYzNTY3Y2I5OTY2NjYyNWZkYTAzMWI1ODFmNGUzZjQ4NDUifQ" + }, + { + "resource": "repo://Makefile#L228-L236", + "version": "repo-lines-v1:sha256:c93c6587e469089799a5b2b9e98199d467b32ef10c5a4dddbb63f6ded78766a6:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWJjOGQ4NDQwOTQ5YzRiYzAwYzc5Y2IzMjdmNDNlNjFjZWU0NzRkOGUwNzVmYmQ2NDhlODU0NGI0Y2Q4Y2QxNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWNiZjkwYjdlM2JmMWMzMDUzYzM5ZGExMWRhNTVlODkyNzhiM2ZmOTU4MWU2YmE3ZTU0ODljNjAwYmQ4ODVmOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWE3ZDVlZmRhMzIzMzZkMmRkMmRmYzI2MTBkZWEyYTQwYzZhMmI2NDU4ZWRjYWY5NWMwYzIzZDE5ODY2YzM5OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmVkNTI3MzNiNjUxMDE4NmZkYmIwZTkzMDI1OWQ1MzI2NTZhMDUyYzUyNGQ2ZjU0OTQyNjY0ZDI0MmYyMjFhYyJ9" + } + ] + }, + { + "id": "claim_a9094855b8d1423d97ae5d869df98186", + "statement": "LaTeX, man-page, and Texinfo document lists are commented out in conf.py, so exposed targets alone do not establish a configured and verified alternative release artifact.", + "evidence": [ + { + "resource": "repo://Makefile#L160-L200", + "version": "repo-lines-v1:sha256:ccc97964bec0d44538fbf2fbf58dc4f307d7648cf55bbedf16bc8da4aa66afb2:eyJzZWxlY3RlZExpbmVDb3VudCI6NDEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMxZDM3YjgyOThlOGI2N2UyMDA5MDkyZDVkNGM4M2NjZTllNzE3Y2M2ZjY2NGExNWM2MDU4MmI0OGU1OGE0OTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhkN2E5NTIzOGMzNmRmYTBjMDM4Y2JiYjU0ZDdkYjQ5NGIxYTc2Mzc5ZmUxNDA4ZjlhZjVjYjZkYWFjMzUyODAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkxZjUzZjEzZWRjMDNkYTZmZTgwY2U0ZjgzYjZmZjdlZmQ3ZGMyZWM3NjMxMmE4ZGRiMjllMjFmMjRiMDQ4YjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcwZjUyMDM0NDUyMTAxM2IwMTc5NmU4NjMyMWI1MGMzNjg3ZmI5NWNlZjNkMDZkYTk4MGIzMDRiOTQ1OTkwMjAifQ" + }, + { + "resource": "repo://conf.py#L262-L268", + "version": "repo-lines-v1:sha256:254886e71d43b7c856f1d379da4d1c67d47451b3a0237d6b65dfa1116462f3c9:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDc4ZDYxN2Q0NDIyYTQwZWI3NjBlYjc1NzNhYzcxMDYwYmQ5YTFhZGExNzAyYjYwNzc1MDFmZTRkMjc1MTQzMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTEwNDM4MzZkYTA2OTkxMTBmNmQ0NDA0NDY1NzA0YmRkMmZmODZmNDRmYTVlN2JkNDJhZTY4NTM0NGY2ODkxZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmFlYzk4N2QxZDE4ZjEwODIwZTg3ZTY4NGZlNjkzMWRkNWMxNWY3ZjE2NzNlMTliOTQwNjM1YzY5NWI1NjcwMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTcxYzlmODcwZGJiNWY5MzhhZDliOWRmMzZjNjNmNjAzMzRlNzdjYWJhMGY1ZTY5YzdlYTdlZmM3MjMwNzczZiJ9" + }, + { + "resource": "repo://conf.py#L293-L298", + "version": "repo-lines-v1:sha256:e2472f650168be8ac1b5ee6520730407e127ce78b18ddb753289f15c1152dba9:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTg5Y2I3ZTE4NDYxMWRiZDE5ZDliN2JjOWFlMzUwZWM0OGM3ZWJhMTY1MzQ2M2U4MGFiMTcxZTU5NjI3MDc3ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTEwNDM4MzZkYTA2OTkxMTBmNmQ0NDA0NDY1NzA0YmRkMmZmODZmNDRmYTVlN2JkNDJhZTY4NTM0NGY2ODkxZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDI0MmRkYWE4M2Q0MmFlMmRkMDhkMThkN2M1MjhhYzRiZDI4ODk3MDY2MzI5NDRmZTY5ZTVjMzBjZDY0Y2MyMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGU5YTA4N2I3MTc5NjFjOWJjMGZjZDNlZTQ3MDlmNjk4NzIwM2Y2MDk0NDMzYzA5NzM5YjljYzMwNjA5ODcyMiJ9" + }, + { + "resource": "repo://conf.py#L306-L313", + "version": "repo-lines-v1:sha256:9f44669163c46825a3f66ee3f1ce51e1ed80d908bf160e586b1e52a330cbbfee:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjc2ZjRiMTlkNTEwZmE2ODJhNThjZDFlYzgyOWRkMDA5NWZjYzc0N2M1YTY3YjQ1ZThiNzg4ZmZkMTEzOTE2ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTEwNDM4MzZkYTA2OTkxMTBmNmQ0NDA0NDY1NzA0YmRkMmZmODZmNDRmYTVlN2JkNDJhZTY4NTM0NGY2ODkxZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODQ2NDRkZTY0ZmRiNGRmODliOGMyNGY0MDUyMWRlNzcwMTY5NTIxNGQxY2ZjMTJkOGI2NGU0ZjA2OGFiZTJhMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzg4NWI2ZTc0Yzk0MjE2NjExMGM4NjJkMGEyZTdmNzIzM2UxZWE0YjM0N2VkNzE2YjQwYTJmMjBkYzNjN2IwZSJ9" + } + ] + }, + { + "id": "claim_04e5cd15423842adaf4c1330d973e670", + "statement": "make.bat is not equivalent to Unix make html: it does not default SPHINXOPTS to -W, has a Python-module fallback for missing sphinx-build, invokes HTML directly, and lacks the Unix contract-generation, html_no_saas, and Docker targets.", + "evidence": [ + { + "resource": "repo://Makefile#L238-L243", + "version": "repo-lines-v1:sha256:15cd3ccf08c5ad0888e1ad5816d8c73dd681051f0b2323327ddb2df9d32f5484:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmUwNjY3ODY1ZmQ1OTk0MGMzZDg4MGMyOGM1Y2U2NzI0OTk1MmQxYTYyMTU5YjE3ZTQ2ODk1YzdiMDMxMjM0YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTU3NjY3ZjE5ZTY0ODhhMDdlZjA0MmMyOWYyNTBiNTRmNzU3ZWU5YWZhZjQxMmUxZDdmYmU0OGJlZmQyNzU1NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTUxMjJhOTM3MmQ0ZmUxYTZjNDcxNjBhNzM3ZjMzOWM0OWE5ZGQzNDQzZTIyNDI1NmEzOGI0ZTE2NDkxNGZjMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://Makefile#L62-L101", + "version": "repo-lines-v1:sha256:c398193f412c09dc91d89bdcb05a981d96ca60a61b39618abf4045996f140918:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4OTM4OWVmMmRjYjE5YjZjMjRhMjU4NTU4YmZlMGMwM2E4MjY3N2M0ODU0OWU3N2U3YWNmM2M3Mjg3ODI1NWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1MzlkOTIyM2U4MGYyNDkwNDhmZDk2YjQ2MTExMWQ2MTVlMDVjMGZmNmE5MzZhOGUxMjYxZTk4MTRhZjZmMjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc1ODYxOGM5NmZhZWNlNzBhMzkyOGVjMTYxOWZmNDk0NmVhNDJjZGViZWZjOGE5OGI0NTc1NmJiZTcxNjhmNDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIxNDEwM2Q4NTEyYjA5NGZiZDY0ZTk1NmIwN2NiZDg2YmNkOWRjZjliYTI0M2JjYzgyMjFiMjE1OThkOWFhMTYifQ" + }, + { + "resource": "repo://make.bat", + "version": "repo-file-v1:sha256:2aebc84e49ae810372e041021b1933b870cd59cfa0e28c84219fa7f9c639691b" + }, + { + "resource": "repo://make.bat#L5-L14", + "version": "repo-lines-v1:sha256:4e40c012eaedff686fc6e9a5e059ea22c0ffd5dc80a773329781eb7e9e2729dc:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkwNGVmZDA4MTU5ZWMxMDA2MDM3NTM1YzZhZDFjMDVmYWJjOWNmNmQ5M2Q2ODIwYzg0YWM3MTkzNjY4MjBmNTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliMzllMDIyZTBkODU0MTIwMDAzZDc5MGMyOGI3NTk2MmVkZDMwMzc1NmQ1MTMzM2RmNzQ1Y2ZiODZlYTExY2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhMjJjMDVhYTM2ZjM2ODVkNjU3N2FmOWJlMWJkZGZiMTA1MTA0MGQxNzEyMTI3YmJjYTYyOTg3ODM0Y2U2NzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImZhNWJhODYyNjUxMTc4ZTc5MmQ1MTk5YTVjYjhlMWQ1NTRhMjEzYWExM2Q0OTkzMTQ3OWEyZjY3NTMxZTg2NTgifQ" + }, + { + "resource": "repo://make.bat#L51-L81", + "version": "repo-lines-v1:sha256:907ac157b282a31a379556bf0882637d5ba49bcd966803f1f29f09324316d1ca:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVhMTRiMjM3ZjBhZTQzMDE3NzllN2RlY2JjZTFhMjk4MjViZGU1NTI0YzNhOWFhNzUwNDgyZDI5ODAyYzJmOWUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliMzllMDIyZTBkODU0MTIwMDAzZDc5MGMyOGI3NTk2MmVkZDMwMzc1NmQ1MTMzM2RmNzQ1Y2ZiODZlYTExY2UiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhlNmNkMjRmMmVjMWVmNGJkMzhiYzBkZjAxYjhkNThjMjE2ZGI2MDYzOTlhZTNkMGJhNDQ4NDkzNGQ0MTE2YzIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI3NjY2MTkwNWRhMzAzNTBjNDVlYjIzMzY4Njc4NWMzYmE5YTFkZjRjNGM4MDI2MGZkNmQ4OGI5Mjg3Y2RhMjAifQ" + } + ] + }, + { + "id": "claim_4dcad3ad628445d3a10e37893d87b903", + "statement": "External-link validation is available through make linkcheck with output at _build/linkcheck/output.txt, but neither inspected PR nor master workflow invokes it.", + "evidence": [ + { + "resource": "repo://.github/workflows/merge.yml", + "version": "repo-file-v1:sha256:962057d689690ebd65f24686ccc8984844fa1548a615094446ee787cbc8414db" + }, + { + "resource": "repo://.github/workflows/pull_request.yml", + "version": "repo-file-v1:sha256:ab2d94a14754095e30394af009c769acad0193ea609c92644e1643ab8d158696" + }, + { + "resource": "repo://Makefile#L212-L216", + "version": "repo-lines-v1:sha256:e2c892e2921bf3ecaf8eed21390d5cf285c4ec8da435f6d4335a7889239213da:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGEwOTRiMDgzM2FhNTg3ZGM1OWExMjcxMTk0ODI0YTNjNTgzZmI2MTM5YWUwYjM4YTAyODU4MDJiYzljNjg3MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGUxZjc0MGIwZDg5YTI5ZmZjYTVkZDAyZjRjNjk2Njg3NWY4MTkwOGYxNjk1MWU3MDlkNjlkMDJmNDE4YzdkMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmJmNzQzZDc3OGYxZTM5NGZkZmExYjhhNDNmM2ViNjE4MDk2MzFjMGYwZmM1ODgxMmU2NTBmZDgzZTE1YzE4NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjdiMjExNDdhOWJhZmNhZTIwOGNjZTQ0NDU3NjRkN2E4MGQ2NzQ2YWYxMmU1NGQzNzZlMzEwMmY4MzM0ZTg1YyJ9" + }, + { + "resource": "repo://Makefile#L53-L55", + "version": "repo-lines-v1:sha256:c8cd0742264065766584ed5992d5bea5afd116605fa2b120f4f668af026295c8:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWFlMmY2NjY4OTg2ZGYwNjYzMWEzNGQyYjk2N2M1NjA3NzVlZWI1Y2E0YTEwMjRkOGY1YjJiNzhmYjNhNjRjMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2RiYjQxYmRmOTU3MjU2ZjdjZTlhN2QwNDNkMzg4MDRmZjU0MDZhMDVlZDQzODExN2U4MjU4OGM1NjA3YzFmNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNGQzNjczMWU5NTg5YmNhNmU1YWFkODdmNzQ0NzliYzFmYTdhODY4ZWQ4MmM4ZDU2YTg5NjlkZDQ0YmRmZTYwZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjE4NjlhYzFlOGRkYTQxODY1MDhlNWY0NGZmOTU5NjM1NjdjYjk5NjY2NjI1ZmRhMDMxYjU4MWY0ZTNmNDg0NSJ9" + } + ] + }, + { + "id": "claim_c027ca2541b04ea18dcae654dd11b882", + "statement": "Doctest and coverage targets are advertised conditionally, but conf.py enables neither sphinx.ext.doctest nor sphinx.ext.coverage, so these are not an enabled documentation test suite.", + "evidence": [ + { + "resource": "repo://Makefile#L218-L226", + "version": "repo-lines-v1:sha256:308fe2d497d03482bbc7b618d6c4e780b2d26ca3fbbdbe83f3cd0bea055860d3:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjM1ODIyMGUzNWJjZjYwOGQ2NTY1ZDg2MDhlOGNkYzZmZTc5NGMxMDViNGQ3Y2NiMmZkMjFhNzNlOTYzYzM3MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWQ5MTJkNzZiNDg2YmFlMDhjNjg0ZjA2OTYyMjVkZmY0ZjkyYTBlN2ViMjYzNzA2NjY5MWQzYjkyMjY2ZDhiMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWQxOTBhZTI5NjEwZGNjMDcwMWY4MTQyM2RkNjUyYjA5YmM3YzNmYmMzZWQ2YjA1YjdjYzYxNGJmZGM1YmNiMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDliNTBkNmExMmM1MWI0YjE0ZDA5NWQ3Yzc0MTY5YzViYTExZjJhYzU0ZDc3NGMwOGQ4ODMwMTM2OWRkZWMyNyJ9" + }, + { + "resource": "repo://Makefile#L54-L55", + "version": "repo-lines-v1:sha256:5db251f6c30f9ce944e8558d70da006a7b228e5f1da1f4167e7c3e14284b5b6d:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzkyMGQxZmRiY2NiYmFmOWI0YmMxZDc0MDNjOWU3ODg5ZTcyNzc2ZDFhMDY4ZTYzMjlhYWNhNzgyMDNhMDExZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2RiYjQxYmRmOTU3MjU2ZjdjZTlhN2QwNDNkMzg4MDRmZjU0MDZhMDVlZDQzODExN2U4MjU4OGM1NjA3YzFmNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTZiNjEwMTJlNDg1OGFkNmY4OWM0MjczOGQ4OGFjNTY3OGQ2MmMxNzYzZmJjZjg2YmI1MTUyYWYwNzNhNDZlOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjE4NjlhYzFlOGRkYTQxODY1MDhlNWY0NGZmOTU5NjM1NjdjYjk5NjY2NjI1ZmRhMDMxYjU4MWY0ZTNmNDg0NSJ9" + }, + { + "resource": "repo://conf.py#L29-L36", + "version": "repo-lines-v1:sha256:101036f64dc30b882886c4f36afcf1bbe0ac20d8bb00d6dd6f69f459536aa6ef:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjA3MmVhYWYzNmNlYzlhNzkzMzAzYjNlYjI2ZmQyODU1NTI1OTFhNTliOTUwNWVmODY3N2UwNGYzY2RmNzhjNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTdjMzQyZjA2Njg4NjY3YWU0YWFlOGUwNmNiYjI3YzdjYjQ3NTMwYzNkNWUxYjEwNzFlZWZlMmQ4ZDE1ZDZjMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmFkOWZkYzA0Mzg2MmVhMDNmYmFjOGQ3MjM2NDg2ZGFlNTMwNWZmYjhjMzkwNmY1Y2YwMGQ2N2Q0ODA2NGRiMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjgwNDEyMWQyZGY5YjBiMDA0ODAzZTc5ODg4N2RhMjE4OGE1NTRjMzk1NTgyZTUxODI3MDZiOGFiMGU3MWFmYyJ9" + }, + { + "resource": "repo://make.bat#L38-L40", + "version": "repo-lines-v1:sha256:67e1876cad09cf98cac9000f9b88e4535c373d1c1b7c874a0cbcf3e744696593:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTgyZDY1OWE2MTIxMDY3NGViYmM0NDg3MjVhMWUzZDc5NjNjMTgxNjVlNGYyYjVhZTMwZGJhM2M4M2VhNDg5ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzc1ODNkNjViOGEzM2JhMDY5ZWE3NThkNGY5ODMyZTM5MzY3MWQ2NzkxZmE4YjJlYjgxM2NiZmIyYTFiMjYzYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzJjYTUwNGQ1YjllNmVhY2I0MDk0Mzk3YzJiODBhZmNjNmZmNTQzMTcwMTQ4MzlhNGQwNzEwY2ZiMGE5YTQ2ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2ExOWNlNjNmYWVlYjgyZDIzYmU0ZmQ0M2I5OTk3ODBlMzBmNTZiYTkzMDRiZThiNWNhZWI4NjlmNTE0YzEzNyJ9" + } + ] + }, + { + "id": "claim_a316890d29124c8c98f35cc425e1eb04", + "statement": "The PR workflow runs on pull_request and validates through make html with contract tools and VIRTUAL_ENV=venv; it has no image publishing/deployment step, and the PR/master workflows contain no separate schema-validation, lint, or example-execution step.", + "evidence": [ + { + "resource": "repo://.github/workflows/merge.yml", + "version": "repo-file-v1:sha256:962057d689690ebd65f24686ccc8984844fa1548a615094446ee787cbc8414db" + }, + { + "resource": "repo://.github/workflows/pull_request.yml", + "version": "repo-file-v1:sha256:ab2d94a14754095e30394af009c769acad0193ea609c92644e1643ab8d158696" + } + ] + }, + { + "id": "claim_d9a2b805a1734c76838bb1e9228584f6", + "statement": "HTML presentation is wired through pydata_sphinx_theme, _templates, _static/css/custom.css, logo/favicon assets, configured search/navigation sidebars, and custom navbar/footer options; enabled extensions provide OpenAPI, panels, not-found pages, copy buttons, redirects, argparse, and Jinja.", + "evidence": [ + { + "resource": "repo://conf.py#L135-L178", + "version": "repo-lines-v1:sha256:c736c150cfaddd2adb9ea1e80a2354c8ccf300fce23417197216b33831d7aa00:eyJzZWxlY3RlZExpbmVDb3VudCI6NDQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY1YTRiMzcwYzQxMDMxZjJkMTk2ZDVkNGMwMzVlNzMyY2QwODJkNmNmNWI3NzM1NDdhNzY5Y2NlNzRkZjU3NWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY5NDE2ZTA5Zjc4YmEzMTZjMDMyNTY4MjEzYjg1NWVlNzU2ZTQxNTY1ZDkxOGYwOTUxOWM4MWZkNjIwZjQwNjAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg1YzQwMDEyYzkyZDU4MWNkN2Y0NWU3ZWQ5MWY5MzlkZmM1MDA3OTQ1ODA1MTIzOWYxMTNjZTQxZjQ3NDJkMmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAwODE3MjVjYTQxNzkzMmQyOTM4NDcwMDcxMTQ4ZjExZTRhZTA3ZTFmOGYwN2EyNDY1MjkzZTQxNDVhYTI0YmQifQ" + }, + { + "resource": "repo://conf.py#L193-L197", + "version": "repo-lines-v1:sha256:6f5a40148afa18f7df9b333c6009224e5f3044fd17f1a2d0e59a0cb1bdab3d75:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWUwYTM1NDQ3NDE2M2NmNmM0NTA1YjNhNTQzYmYzOTg3NTU3OGUyYmE2ZWNjN2Y1YzAyMWIzOTI5M2NmMDliNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWNhMjllYmI1ZWZjNTRjOTMzZWU5ZjA3YjU5Mzc2YjVkZTU1N2ZlYTcyYjBlMThhYzExYTI3OTIzMGZkM2IxMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjEzMWJiNTRlOTM5OWExYjU5MDcyZWVjOTNkNmE4NDlhZjE0ZGFmOWUwNWE2ZGJlYzE1MjliYTIwODdlZDk0NyJ9" + }, + { + "resource": "repo://conf.py#L29-L55", + "version": "repo-lines-v1:sha256:5c04a286d471edcde5301b4c00eca5fa74d91fb9d76fb21d2a546ba4a397ec4e:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYwNzJlYWFmMzZjZWM5YTc5MzMwM2IzZWIyNmZkMjg1NTUyNTkxYTU5Yjk1MDVlZjg2NzdlMDRmM2NkZjc4YzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU3MTljYTBjNGUzMzY0YTQyMjczMjNmYmI1MjA5ZGUwZmYyNWEzNmQ4Zjk4MzNiZTk2NmE3ZTQ5MDIzOWZjMDAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJhZDlmZGMwNDM4NjJlYTAzZmJhYzhkNzIzNjQ4NmRhZTUzMDVmZmI4YzM5MDZmNWNmMDBkNjdkNDgwNjRkYjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMzYmJiZDg4ZGJmODY4ZWNiOThlZTQ3NWU5MTgwYTM3YjQ1ZTJjNjZjMzM4NWJlYWQyOTNiZjZhNDE4MTZiODcifQ" + } + ] + }, + { + "id": "claim_f2fa5226eeee44548d47d0a96fb01003", + "statement": "The layout template extends the upstream layout and defines footer/body overrides, analytics/marketing embeds, and conditional breadcrumbs; its exclusions compare bare page names rather than hub-prefixed document names, while breadcrumb links use pathto(master_doc) and parent links.", + "evidence": [ + { + "resource": "repo://_templates/breadcrumb.html", + "version": "repo-file-v1:sha256:581e352b03b2b2c89ce9bcabdb13c86a53722a4966e3c554887bbee253242432" + }, + { + "resource": "repo://_templates/layout.html", + "version": "repo-file-v1:sha256:6c990d6f0a2fe4d49ceb2e351f755c108cee0a54de64ec3c52bcfafd65ad957f" + }, + { + "resource": "repo://conf.py#L65-L66", + "version": "repo-lines-v1:sha256:7ab24414bea82b585c991ec8514b86d40a3d8addd7c2c35c5277b71e689f1740:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjRlYWNlOWIwMzQ0Njg3NTg1OTkzODkxN2Q3ZGIyZDZmYzdjY2IzZTIxOTRkMDQyMDY0ZmFlZGQyNWE5NTRkYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTZhYTFiNDNlNzgyODZlZGE2MzY3NDkxN2MyNDBkM2EwMzE3YjNjM2RjYmEyOWI4Y2NlNjAyODU3NThiYmFlYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmY0YTJkZjcxZjU1ZGE2MWI1YTNlMjJjMjlkYzZlMGJiYTE1MmM1MmY5NjNmYjMyN2E2YTliOGRiMTVmYzg4ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTIzNjUzNjM1NjMyN2I3MjFlZGRhZDc2ODZkODNlOWFjYjY0N2JhOTFjNzgwMWQ0Zjg5YzU3ZjllMTRjZDc5YiJ9" + } + ] + }, + { + "id": "claim_5d065999fa6f431fa6c4dd085c41604a", + "statement": "Custom navigation has deployment-path assumptions: the right menu links Community through /community.html plus external Support/Sign up links, the footer links Legal/Terms to the public docs host, and a separate template supplies ISO footer text.", + "evidence": [ + { + "resource": "repo://_templates/iso.html", + "version": "repo-file-v1:sha256:56b204d222b2c1cd715ae1a7dc965ff6b020a85663884431cd7c518e42dc4667" + }, + { + "resource": "repo://_templates/left-sidebar-bottom.html#L23-L28", + "version": "repo-lines-v1:sha256:8634d520ac95a02130766ae6819ee9d1ca45ccf00f39fbd22160531f1696d985:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjliZTMyNThlMzI0ZjA3Y2YwNTg5ZDU4YjRhZmMxNWI5MDg3MGRhOWFmYzVjOTEzZjk0MjI2Y2M2MzE3ZGRjNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjI2YTJkYmQ4YjliOTZiNmNmM2E3ZTE5MTk3NjM4ZmRlMTE3ZmQ0MDE2OTQ3ZTI2ZTVmNDMyMDkyN2I3OWJjMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzExNjk3NzE0ZDM3ODFjNTdjOTc2ZWNjZDk1ZWE2OGQzM2Q1ZDk5NjM2MzMyZWRlZjIyNjAwY2I4ZjE0ZTNiMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMWJjMGY4YjI2ZjZmOWQ1ZTg2OThlZjc5OGU1ZDE2ZWM5YzgyMmE0NGMzZmRjNTBlYTcyYmY2M2VlNjQzNmYwMiJ9" + }, + { + "resource": "repo://_templates/right-menu.html#L19-L37", + "version": "repo-lines-v1:sha256:06749d283a5caff542698d46e30adaf8fc4af1476e54843366eca9f4ac02cfc6:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdkMjczYzFjN2E5MjNkN2EzNDM5YWQzOGFjZTY1NWQ5YmNjZjJiYWZmMmU3NWMwZWNhMmNkZWQ1ZTBlNmNmNGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVmNGE0MDQ0YTlkYjZhMGRiODg0OWVhMDFkOWQwMjIwOWE1ZDI5MTNjMTBhNmJmY2Q5YjYzYmNiMjYxM2VkYjYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM1MDBiYWNmYzM0OTU1Y2QxNGU2MGIyZDJkZTM4MGUyMDc1ZWIyZmFhYWQwMzlhMDA2NDk4ZTFjMzU1YjZkMGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhZTJhNTNiYjMxMTIzMDg4MzE0MDYyMjkxNmI3NzliYjQ1MDM0OTRjZjk2NjA3NDAwOTAxMzZlMDFlMzlkZmUifQ" + }, + { + "resource": "repo://conf.py#L140-L146", + "version": "repo-lines-v1:sha256:701a92de8c26fb313f24a13afdbc76043f438a2f8de0ec86679e4615bef98c19:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmIzOGJjM2QxMGVhMDQ3ZGE1NmZjYjYwMWQ1NDgzZDI5MTRhMzdlN2Q1NGVmOWFmMmFiYzdkOWVhYTM3OGI3ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzJmZTZhNjYxZWNmZWQxYzJmZTNkYjQ5YThkMGEyNWFmYWI4MWUwMmY4YzUwMmNlZWI1NTFmOTNkMmM3MzRjNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDZkMGRkNTM0YzU5YmM2Y2EyOWRjNGQzMWJiMDlhYWI0M2NhMzg4NThkZTJlMzA1MDNhYTdkNzNmYzVhYjA1OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTRkNzZmYWUzOTcwYjRmZWU5NWYwYWIyNjAzZDM1Y2U0N2JjMjc0ZWJkMjM1Yjk5ZjA0ZGJmYjQ4N2JjYWMwZiJ9" + } + ] + }, + { + "id": "claim_4fa88419828249efba28b8b8d656ab5e", + "statement": "custom.css imports remote fonts and overrides responsive navigation, breadcrumbs, sidebars, cards/buttons, code tables, and footer styling; source-linked figures and downloads also exist outside _static, such as databrowser-guide-images and hub/files.", + "evidence": [ + { + "resource": "repo://_static/css/custom.css", + "version": "repo-file-v1:sha256:e14fccaafaa3524dddd28f269c5ec08c92175273b2fb308b44f1ccfc74e07934" + }, + { + "resource": "repo://hub/databrowser-guide.rst#L697-L701", + "version": "repo-lines-v1:sha256:8b6642346c2d718fce26bf8d19d6e539e9e1ae11293a67f544981466f78b8567:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmJjZjRjYWMxMzNmNTEwN2Y5OTYyYzcxY2E2ZTVmNjU2ZmE4MzE4NDllZmI4ZGI2MDc1ZGU0YzMzMDA4MWRhNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDQ2MmNkMGM3NmY3NTRmOWQ1Y2Y2ZDMyNmE4NzJmMGI2ZDRiMGM3NDc1ZDRlYWM3ZGZiZDM1NmRhMzU3ODcyMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDhmMGQzYmU1ODBlNGZiOTllYWZkYzExNmFkNTcwNTNlYzkxMWY0ZDQ4ZDBmOTJkZTk4MWJjMzE0Mzc1YzMzNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTY5ZWM4N2FhOGRhZTUxMjU3MTZjZDI0NWNjMmVkMGRkNDY1NjI4OWNmMjY0MDE5M2YyZmJlZjA4NjZkMzZiZSJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-collect.rst#L29-L29", + "version": "repo-lines-v1:sha256:eb45ec1bc0afc77e7c09e4c990fe0008b5c7c86b96e2aef1c0dcf35e3c5e49fe:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWI0NWVjMWJjMGFmYzc3ZTdjMDllNGM5OTBmZTAwMDhiNWM3Yzg2Yjk2ZTJhZWYxYzBkY2YzNWUzYzVlNDlmZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZWI0NWVjMWJjMGFmYzc3ZTdjMDllNGM5OTBmZTAwMDhiNWM3Yzg2Yjk2ZTJhZWYxYzBkY2YzNWUzYzVlNDlmZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjFkYzgyMTY4OWEyNGRjOWYzMjQ4OGM5NGNjYTI1YjMxNmViNTJlMWMwM2EwMDViMjZiMDhjNzUyOWM1ZjVjYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmZmNzM2MTUwYTlkODY0ZGQ2NDgwMTIwMzkyOGJiNTg3ZDA2ZWUyNGRhY2IwMWY0OGU1Yjc3YmIzN2JhMjBkMCJ9" + }, + { + "resource": "repo://hub/tutorial-upload-baseline-config.rst#L14-L14", + "version": "repo-lines-v1:sha256:639c462b58a7dd9fc0f45eb1c2691648ccb83919f436c48743a087edf7ac49c7:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjM5YzQ2MmI1OGE3ZGQ5ZmMwZjQ1ZWIxYzI2OTE2NDhjY2I4MzkxOWY0MzZjNDg3NDNhMDg3ZWRmN2FjNDljNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjM5YzQ2MmI1OGE3ZGQ5ZmMwZjQ1ZWIxYzI2OTE2NDhjY2I4MzkxOWY0MzZjNDg3NDNhMDg3ZWRmN2FjNDljNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWQ5NDBjNDgzNDk2Mjk3ZjQ3MzU5NTIyYzg2ZDA3ZTY0NDk0ODQ0NjM3NWViMWM2ODA4OWQ1ZmY1OWQ2N2ZjYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjg3ODU4OGMyNDhhOTNlM2RlYzJjNjRmMzY4ZmQ5ZTBiNWQ3MjhhYTBlNjIzMDc2MGUzZWU1NzhkYjA1ZjA3MiJ9" + } + ] + }, + { + "id": "claim_22bac6fdfde0492bac94cc4ab6c50b18", + "statement": "The older _static/custom.js copy-button code depends on jQuery and Clipboard, but conf.py does not register that asset via html_js_files and instead enables sphinx_copybutton; asset presence alone does not establish activation.", + "evidence": [ + { + "resource": "repo://_static/custom.js", + "version": "repo-file-v1:sha256:862033ac91fa4aea62bad142a63f08efa8d168d2225da522800f4d4f6d76bb9c" + }, + { + "resource": "repo://conf.py", + "version": "repo-file-v1:sha256:a7176907f339bb191a858d0c4cc41136c4020e631a6bfc2a92d5997180347672" + } + ] + }, + { + "id": "claim_6ce3e6628cf847d497308cd41c23fdf7", + "statement": "The publishing workflow is triggered by any push to master, sets DOCKER_BUILD_PUSH=1, defaults TAG to latest, and runs make html followed by make docker; docker depends on html, so the second command traverses the HTML dependency again.", + "evidence": [ + { + "resource": "repo://.github/workflows/merge.yml#L1-L5", + "version": "repo-lines-v1:sha256:eb53bd528aa500c27f94cf199c905a509549ba947572231826b22f7ba706b502:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTI1YzgxYjYzMmQ1YjVhNjAyMmM1OWI0YjUzMTY4MDI1NWIwNTBiZjI1YjMyMTU3ODczMjQ0NWM3MzMzOGQ2NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjZiM2JiN2MxMWVjOTU0ODI0MjNmOTM0NGZiNDgzODExODRmNjZhNjk4OWIxNDJjMDg1YjUyZDdhOTYwN2Y3MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTYwNmQzOTUwZjVjY2VlMzI4ZTM0NWIxYjUzMzQxOTRhYjRjNWJjYTA1OTBhM2MxNTYwNjcwMzNiM2ZjNDBmNCJ9" + }, + { + "resource": "repo://.github/workflows/merge.yml#L29-L40", + "version": "repo-lines-v1:sha256:1fe48a9c4ce8dd180bc041629280b897b26caa19726f4ca50c17eb78102116f8:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcyZDlkZTE1MTlmMTc3NDJjOWNiMzYxNDQ5NGZhZjJjZjZkODM1MjNiZDU5MDQ2NzFjYTUwZWUzYzA3NjM2ZDkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdjYzQwMmJmZjc1NjVlZDk4MzJlZDAxMDQ2MmZlMThiMjllMzY2ODJjNTBkY2UyMzIwZjJkNWQwZDI2NjJiMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFlZDFhYzc1YjEwYWMyMTI2ZTZiMWYzNGFlZDNlN2JhNjNjZWYzNGJjY2VhMzdmOGUzMTY4OWRiZTRhNmQzZmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJkZTUzOTQwMWM3YzBkZGIxNzE4NzE1NzQzNjdjZGYwNTc0NjdhMGY2Y2NkN2FiNzhlZjNkZTBiYWMzNDJjMjIifQ" + }, + { + "resource": "repo://Makefile#L238-L243", + "version": "repo-lines-v1:sha256:15cd3ccf08c5ad0888e1ad5816d8c73dd681051f0b2323327ddb2df9d32f5484:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmUwNjY3ODY1ZmQ1OTk0MGMzZDg4MGMyOGM1Y2U2NzI0OTk1MmQxYTYyMTU5YjE3ZTQ2ODk1YzdiMDMxMjM0YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTU3NjY3ZjE5ZTY0ODhhMDdlZjA0MmMyOWYyNTBiNTRmNzU3ZWU5YWZhZjQxMmUxZDdmYmU0OGJlZmQyNzU1NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTUxMjJhOTM3MmQ0ZmUxYTZjNDcxNjBhNzM3ZjMzOWM0OWE5ZGQzNDQzZTIyNDI1NmEzOGI0ZTE2NDkxNGZjMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_87d47e8c16514831921e46fb27fe0217", + "statement": "make docker stages _build/html under docker/dist/html and cleans staging only after build.sh succeeds; failed build/push can leave staging, while Unix make clean removes _build output and docker/dist but not files contract downloads.", + "evidence": [ + { + "resource": "repo://Makefile#L238-L243", + "version": "repo-lines-v1:sha256:15cd3ccf08c5ad0888e1ad5816d8c73dd681051f0b2323327ddb2df9d32f5484:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmUwNjY3ODY1ZmQ1OTk0MGMzZDg4MGMyOGM1Y2U2NzI0OTk1MmQxYTYyMTU5YjE3ZTQ2ODk1YzdiMDMxMjM0YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTU3NjY3ZjE5ZTY0ODhhMDdlZjA0MmMyOWYyNTBiNTRmNzU3ZWU5YWZhZjQxMmUxZDdmYmU0OGJlZmQyNzU1NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTUxMjJhOTM3MmQ0ZmUxYTZjNDcxNjBhNzM3ZjMzOWM0OWE5ZGQzNDQzZTIyNDI1NmEzOGI0ZTE2NDkxNGZjMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://Makefile#L57-L59", + "version": "repo-lines-v1:sha256:ad2625e32553bc0cdf38946fd5e78309290e0ffbf6fdfec75adb4597663eab82:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTE0MDdhOWRkNGI3NWMyNmJkNTczZmUxN2I5YWFhMGY2ZDQyZWE2YjJlZDMwYTJiZDZiMDkwN2Y2ODRmYjk4NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTU3NjY3ZjE5ZTY0ODhhMDdlZjA0MmMyOWYyNTBiNTRmNzU3ZWU5YWZhZjQxMmUxZDdmYmU0OGJlZmQyNzU1NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDA1YzM2NGUxZGY5ZmM0MzczNjVhNmViNGE3NzY0ZDhmMDI4Y2QzNTU5MWJmZDI3MzE4YmNkNDVkNDM3YTkyNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDk2ZGI4Y2IxZWFjMDk5Mjk1ZjE4NjViZWUxYjBmODEyYjhiNTFmNDc5MTNlOWM5ZTQwYjBkZmRkYzE1Nzk2MiJ9" + }, + { + "resource": "repo://Makefile#L77-L86", + "version": "repo-lines-v1:sha256:f069655ef78ab187ddc44bdf0f81751fa78ec6b7d50857be7b603dd25f4e4072:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE1MjFkYWE3ZmMzZmM3Y2Y0YjdlYjU5Y2Y3ZjY0NmI3M2JkOTU3NjdlMDdkMmY3MzE0ZDRiMjcyNDA3NjE0MDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ3Y2FlNGY2ZDk0OTY2N2M0ODdhNWU0OTNlZTNkMGExNTk5MGRjMjZmM2U5ZTNhZjY0NmYxNjM0MjVkNmJjOGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRiMDkxZjQxOTczNDllNGJlMjZiZTEzNzQ1ODYyZDlkMmVhOGFkYWVlNjA0MTNmMWZhYmJmODNjZTBhMTIwY2UiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ0NTUxMzljOGQ1YmE4NzQzMWNmNjQ3ZGQ5MWM0MTBkZTQ1YmYzYTg1ZTcwOTg1ZjY0NWRlNmViODc5NmNhMmIifQ" + }, + { + "resource": "repo://docker/build.sh#L1-L17", + "version": "repo-lines-v1:sha256:a3d499aba4cc0ee1fe057039de40195ded43f0f38dcab9156bbc8f39a6334aac:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFkOTVmYzA0YTgwYzk1MmY0OWNlNDE4ODYyN2M1M2IwZmJlOGM0NDA0MWI5NTJkNTkyYWNkMWRlOTk4NjE0NjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM3NjlkMjM3Y2Q0MjBiOWQzOGI5ODFhMGE0ZjY3NzAxOTBhNGE4M2RjYTFmZTU2YzRmNWJhMWUyY2JjMGVmNzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_f907b812fdd7448cb96c273761c9017d", + "statement": "docker/build.sh is fail-fast, defaults to building but not pushing, and exposes TAG, IMAGE_NAME, DOCKER_BUILD, DOCKER_BUILD_PUSH, and DOCKER_BUILD_OPTIONS as controls; master enables push after registry authentication.", + "evidence": [ + { + "resource": "repo://.github/workflows/merge.yml#L24-L38", + "version": "repo-lines-v1:sha256:677ae226471a30b72cffc03497b826d385e09cd1a91225c7f3167246dc4cb604:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI3ZGU0ZGI0OGU3YTJlNTBjM2QzZGEzMzZlN2QxNjZlMjM5NDEzMjM2NmNkYTU1MDRjOGIyZDNmYTc4OGJlZjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcyN2RmOGI0MzU4NWU0MjU5ODcwMzBiOGE0YjJhNDI2YWNlMmNmYTUxZDMyZWY3MWIyZTIxMzAxMWU5ZWIyOGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFmYzBhNWRlNzBiNTZhMWVmYzk5YmNmYWQ5M2NiMjYyNjA3M2NmZTJlZmU3NDdhZTNlMWE3MDdkMjBlOThhNzUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFmNDU3NzBlMWQ1MTlhZThmZDQ2MjY4NWE1MDhhOTA5N2Y5MTk4ZjE5MzE4NTU3ODlkNzM4ZjZiMGYyNjE3ZjUifQ" + }, + { + "resource": "repo://docker/build.sh", + "version": "repo-file-v1:sha256:a3d499aba4cc0ee1fe057039de40195ded43f0f38dcab9156bbc8f39a6334aac" + } + ] + }, + { + "id": "claim_032d5136e41e48e18e2c75929a06a657", + "statement": "Master publication retags and pushes the serving image to ACR with both the selected tag and github.sha, authenticates to Azure, and requests deployment of the SHA-tagged image using acrName, containerAppName, resourceGroup, and imageToDeploy; credential inputs are DOCKER_PASSWORD, ACR_PASSWORD, and AZURE_CREDENTIALS.", + "evidence": [ + { + "resource": "repo://.github/workflows/merge.yml#L24-L66", + "version": "repo-lines-v1:sha256:5d66720ed801e8eb7e55f0f5a7de64f798600e52f4dc16ee0eb2c76aa66620b3:eyJzZWxlY3RlZExpbmVDb3VudCI6NDMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI3ZGU0ZGI0OGU3YTJlNTBjM2QzZGEzMzZlN2QxNjZlMjM5NDEzMjM2NmNkYTU1MDRjOGIyZDNmYTc4OGJlZjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFiZmU2ZTMzNDIzNzcwMDA0ODA1ODNjNjMyMWJiNzNiZTM5MmIxZDZmZmNmOTA2NDAzOTQ0ZDljMDNhNDIyZjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFmYzBhNWRlNzBiNTZhMWVmYzk5YmNmYWQ5M2NiMjYyNjA3M2NmZTJlZmU3NDdhZTNlMWE3MDdkMjBlOThhNzUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_1a4ae2d44eaf4f1782a34fc6c640a3dd", + "statement": "The root Dockerfile supplies a Python/Pandoc/TeX build environment in /docs, installs requirements, defines VIRTUAL_ENV empty, and defaults to make html, but copies only requirements rather than the authored source tree; inspected CI prepares its toolchain on the runner.", + "evidence": [ + { + "resource": "repo://.github/workflows/merge.yml#L10-L23", + "version": "repo-lines-v1:sha256:11ba8f5f2d3ce835ba22f69a31e1b43d578b7c94a7e677068cfbd6350b220411:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJhOGUzODNmZWE4M2VjMDI4ZGE4NTU3ODZiZDVjODAxMzdiNGQ4NTE2MmJhYmUxY2E3OWU4NWViNDNhYWY5NTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEzYmM3OTlkZGY4ZjQ1NmIwMDkyMjZhOGRjMGZhNGFhMTQwNjFmMDY4YjUwMThjY2E1OTk3YjA5OTUxZTJiMzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg4NWY5OTdjY2Y0MDIxYzNmNWYyN2Y5YjQ5YzE2MzdlMzRiNDlmMDBiNTk5NjIxZjFhNTJlMmUzZWMyMDFiODYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJjMThmMTdkNWY1MjFhODI4MTBlZDBlYmYwYjJlYzY0MzFkNWFkNmNhOTVjYWU5ZDAxMDFiODA3YzE5MDFiYTQifQ" + }, + { + "resource": "repo://.github/workflows/pull_request.yml", + "version": "repo-file-v1:sha256:ab2d94a14754095e30394af009c769acad0193ea609c92644e1643ab8d158696" + }, + { + "resource": "repo://Dockerfile", + "version": "repo-file-v1:sha256:c87caaee112c7ba22a6ee47aa7954ab96f2428153e28a54bd6713d117563601c" + } + ] + }, + { + "id": "claim_9796a5ebffdc4848983cbc4cc99023a8", + "statement": "The docker-directory Dockerfile instead builds the nginx serving image from staged dist files; nginx listens on port 80 and serves static HTML with internal 404/50x error pages, separate from Sphinx's redirect map and configured notfound extension.", + "evidence": [ + { + "resource": "repo://conf.py#L29-L52", + "version": "repo-lines-v1:sha256:04472cd4861a63ef0ae1fa99f9446e151cf4168f8ee37b6ba08865f1dcadda21:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYwNzJlYWFmMzZjZWM5YTc5MzMwM2IzZWIyNmZkMjg1NTUyNTkxYTU5Yjk1MDVlZjg2NzdlMDRmM2NkZjc4YzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJhZDlmZGMwNDM4NjJlYTAzZmJhYzhkNzIzNjQ4NmRhZTUzMDVmZmI4YzM5MDZmNWNmMDBkNjdkNDgwNjRkYjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA1OTEwNDlhNWRlMmQ4N2Q5ODViZDRkMTVkZTJiZmQxMTE2MWYyMjk1MGY2YTNjZmM0MzE0YzQ0MWVhMTJjNzcifQ" + }, + { + "resource": "repo://conf.py#L327-L328", + "version": "repo-lines-v1:sha256:cf0f14de6b8a2a82b9979eebf96b27c9ae5c73f6ef62e6ddad880734dd21b9d9:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiY2IyYzM2ZmNmYzY4OWM1YzIxN2Y3YmU3Yzg3NTk3N2U3YjVlYTQwMTczNzU1MWUxZTI2NGMzMDQ2MzRmZGIxNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDA0MjVkMTQ4NmIwNGU3YjExYzM0YWQwZmVkNjkxNjIyZWE1MDJlZjljZGMwMmQ2ODk2MzEyYmRiYTkxNzlhNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2VmMjkzYWRhNDFmMzBmMzdhNzBlYjYyMzcyZDRlNGFkMWVlNTBkMzM0MTU1YWExYzFiMjg3YWM5OGY2MDdhOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTc2NTRjNzIwMTM0ZmZlYzIwZDAxZTBkOTI3NTE0NmMwOGJiZDM4MTk2MjY1ZWQyNjdmZDlkNzU5ZjgxMDJkZSJ9" + }, + { + "resource": "repo://docker/Dockerfile", + "version": "repo-file-v1:sha256:e86d76564d9af15211c147a84d88268c446180ec2824df4626576e121f058dc2" + }, + { + "resource": "repo://docker/default.conf", + "version": "repo-file-v1:sha256:8e777107dcb0263888c4704133cd5a462a98adfb0b0b2b8c4903a96fe873073d" + } + ] + }, + { + "id": "claim_923fc1849c7942ce91b8e26ec32258d2", + "statement": "Managed OpenWiki updates run daily at cron 0 8 * * * or manual dispatch with content/PR write permissions, full-history checkout for update diffs, Node.js 22, OpenWiki 0.7.2, and optional Mermaid/jsdom validation dependencies; provider/authentication/tracing settings are environment inputs.", + "evidence": [ + { + "resource": "repo://.github/workflows/openwiki-update.yml#L1-L49", + "version": "repo-lines-v1:sha256:60a92b29b0082d61611abf5a0167fe34139e393d24a605a26eb5c2c58fb21634:eyJzZWxlY3RlZExpbmVDb3VudCI6NDksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2MDI3ODdhZjZkY2MwODM0ZGUxMjFjYmIxY2I5NWY5NDU5YjcyMWVhYjAzNDlmMTA1MDFiOTk2YzFjNzdmZmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI4ZjhiODAyNzQxYWZjN2ZiMzg0MGZlY2RjNDNkN2Y4ZTQwMjNiYmZjYjViN2VjNjVlZTA4ODc5OGQ4NTE3MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU0ZTc5NGRkZjMyYTNlMmRhYWFkODgyNjMxM2MyNGY0ZTRjZGE2ZjYxYWJmNDE3ZTQ4OWJlMzlkNWI5OGE1NTkifQ" + } + ] + }, + { + "id": "claim_df6a2a9285364ad8b8616a186312b2b1", + "statement": "OpenWiki update automation deliberately continues after update-command failure, removes transient .run.json, creates a scoped openwiki/update PR containing wiki/managed-navigation/workflow paths and conditional CLAUDE.md, preserves completed-page progress, then propagates the failure unless cancelled before the relevant steps.", + "evidence": [ + { + "resource": "repo://.github/workflows/openwiki-update.yml#L33-L89", + "version": "repo-lines-v1:sha256:5aaf3cfb89aff3ba65d3b3f25fbaba5b8691dfec30fb9ff48ee42ecb225a86d9:eyJzZWxlY3RlZExpbmVDb3VudCI6NTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjcwZThmOWZhNDBlN2JkMDQ5OWQxYzBkODNmZDc1OGFhODViMzA4NDJkYmQ2MWYwZWE2YjdhZTEwZWZlYzc2ZDAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM2NzE4ZjA2N2I1ZTVjMWYwOTkxYTZlNzQ3MjZmZTJhMjNkMjY0MzQ1ZTA4ZTRlYWQwNGZhZjczYzI3ZWQ0NDMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhiNDRjZTgyMmYzMDY4MTljZmQ4Y2FmMjRmNWI5MDViZGFlNDU0YmFlYWRlMTFkZTM3ZDY3NGMzN2M3YzE5Y2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_2dced642a9314058bea353f2d5c914e5", + "statement": "AGENTS.md makes the generated wiki optional just-in-time context and directs normal contributors to update source code/docs rather than hand-edit generated pages unless explicitly asked, keeping managed wiki updates distinct from authored Sphinx maintenance.", + "evidence": [ + { + "resource": "repo://AGENTS.md#L5-L14", + "version": "repo-lines-v1:sha256:965b11a851738f08a591fcd7200331a525a9902e67b614ce6d86c6a4283402a5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFkYjQ2MDY2MGY0ZDUwYTI1YWNhNzc5NjEwMDJkMzk3MDVjNjQ2ZGMyNmE4YmZhNjZhZTZmNjkwOTU5YzY5NTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFiNTM5NTNiZmI3MmMxMjYyYmJhZTJlYWNhNzJjYWJmMWFmNDk5MjdhMGJiYTExNTdiMmQ1YmRiMjg1YzRiZDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFhZmI5NjA2ZjViMGQ4ZjYzNGIyNjAzNzhkNmVjZTI1M2I1YzE0NDdhOWJmMWQwNDkzNDk0NDBhOGI1ZWJmMDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoyLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMwODlkZjkzZjhiYTU3YTRkZGJmZDhmMDEzOTYyYzM5NzhjZTRkYjY4MTk5YzRkYTY2NjY0OWIwOTk2Y2VkYTkifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/workflows/dtl-joins-and-transformation-patterns.json b/openwiki/.claims/workflows/dtl-joins-and-transformation-patterns.json new file mode 100644 index 00000000000..fd2a73cc8bb --- /dev/null +++ b/openwiki/.claims/workflows/dtl-joins-and-transformation-patterns.json @@ -0,0 +1,636 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:64a4ca0aebb6f09eace36fee9ffa5df06d2e1636a92ea6f7fe70724ab4ad0acb", + "claims": [ + { + "id": "claim_778c922dab1545529b4940b0906239a7", + "statement": "A pipe's optional transform configuration is one object or a list forming a chain between source and sink; transforms can reshape, filter, and construct entities.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms.rst#L6-L14", + "version": "repo-lines-v1:sha256:8b604dcad1b39b3c6d9108615e5bb9bd670163f50190f233671085a57b58c155:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODQ5MmIxNjdkMTZlNjQ4ZWM5YTYwODVkZGFhODg2MTZiNWNjMDQ5ZDIwNWIyN2RkZDMwMGQ5NzE4MWRkNGI1NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTM2ZDk3ZjU3NmZmODdhMWRjMjkyNDM5YThmOGNiZjRlMTZhZDIyZmYxOGQ3MjgwOWRmNDQyOGExMmUzMDczZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWFkNTc2MTIzMTFhODE4Y2UzZDZiZjM4NWIxMmIzMmIzOTg0MDlhM2I5ZTZlYmZiYzYzZjU1ZWExZTY3OWE2NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTE5NTBlZGE4Y2MwZWYyMGU0MWJlMGM4ZDAzYTg2YmYzODc5NzJmYWQxMzllMzhlZjhiNzBlODQzMGFlMTcyYyJ9" + } + ] + }, + { + "id": "claim_f1a04ee5e7b64b34a1a3e5b98f9b7365", + "statement": "A DTL transform requires rules.default as the rule applied to source entities, and other named rules can be applied through apply and apply-hops.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst#L23-L27", + "version": "repo-lines-v1:sha256:3827ce86a4c0614af5c827694e2ccd057b1c8c1a183ee856b7dc9aabb33e65d0:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjU5NDhlMmVkZjZlOGYyNjA5MGVmM2I3YWM3MGEwNGNiYjY1ZTkzODE1ZDY3M2EwMTNmNWExZTgzNjcxYzFlNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjBkOTZhNjk4MWRmOTIxM2ExZTliOThiNWI3MGY4MTgzMmYxYjY5YmMzMjZlZjRkZTM3MTczMzQ3MGYwYzMzNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjA3OTY2OGNiYTNiOGQ3OWNmODlhOTRjYTZmMzkwZTZjODYxMjAwNGE0ZTA0MTg4ZWJmNGQzZjJkNWM4YWU2YSJ9" + } + ] + }, + { + "id": "claim_672f25b9dbd1404ab63cd5c61ebd8c5e", + "statement": "DTL _S and _T identify the current rule's source and target; apply makes each supplied value a nested source, while _P contains the parent source and target context.", + "evidence": [ + { + "resource": "repo://hub/dtl/variables.rst#L9-L55", + "version": "repo-lines-v1:sha256:f288c4a6ad2278ece1f40780e2fb9e432a78b18419c1e84711fe5b862974b458:eyJzZWxlY3RlZExpbmVDb3VudCI6NDcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNmZTU1OTJjY2Y2MGNmM2QzNmRkY2E4M2RhOGNmZjU0NTdkZTE3OGU0ZjBiYjU1NTg2ODIwMWZiZjUwZmUyMzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg1ZTgwZjIwZTY2MTAwMWQ0NDMwMWM0YjY5MDMzODg5ZjMyN2MyYWQ0MjY3MzU4Mjk3ZDBhOTBmNjkzOGM3OTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE1NWY3YzZhMzk2MzQ5MTk4ZDNhMzhhMDA5OGI5Yjk1MTVlM2MyZjhlMDM3NDI1ODU5NmU4ZTY1OTMyMDg3MWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY1ZTg2NzEwZTMwZjQxMGI3OWMzOTI0MzJmMzkxY2MwODkwNzQzZWRiN2Y2NWYxNjFhYjNkOTcxMjNjZTgxNmYifQ" + } + ] + }, + { + "id": "claim_9764deaf8e114c5b971a0a43bf4293b5", + "statement": "Recognized DTL joins use value overlap for scalar-scalar, scalar-list, list-scalar, and list-list comparisons, including functional join arguments.", + "evidence": [ + { + "resource": "repo://hub/dtl/joins.rst#L25-L44", + "version": "repo-lines-v1:sha256:6f139fdf39330e735bbb4edcf11e2735840db3ef0d45da25cdac7139e29249ca:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwOTlhYThmMTYyMGFlNjM2OWM5YTMzY2Y5YzMzODAwNWViNWY4YmQwZThlODljYTA0ODVjMTIxOTc2NjE2YmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg3Zjc2MTQyNDQxMDE4NTI2MWZiNDQyYTkyMGEwZWM4ZjQ0Nzc4MDIzMDk3ODY0NDI0NjZkZDRmYWNlODFjMjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI5ZGMyMGIxN2ViMzljMjVmZmMxMTc0NmJkYzY5NjE2ZjdlMDEzMzg3ZjhlZmRhMDg3ZmZmNjYwOTUyYTgwMjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg0NjdiODcyODcyZDNhYTAxMzZlZjRhN2M5ZjgyMmYyOTlhMmI0NDQ0ZTE0YzU2MjkyNDE1ZmViM2ZhOGRmYmEifQ" + } + ] + }, + { + "id": "claim_a8743e3c74964585badeebdace310555", + "statement": "Ordinary eq coerces arguments to lists and compares them exactly, unlike join eq which uses intersection; intersects is the ordinary predicate for overlap.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-comparisons.rst#L16-L39", + "version": "repo-lines-v1:sha256:427d692ab9b13e0b2e0cc8bd9445f5fadfbadab6ab61a23e35d54881d696cff2:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4OTVjNTBiMmJiZTBjYjk4NGZiY2ZiODVjN2U5ZmVlZjg2NzNiOWI4NGRlMDAxNDRmNWRjYTQyMGU0NDY4MGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxODEzZTNiMWNiNjFjZTI2ZDUzYWQxMmEzYmQ2ZTBhZjgwY2FiNmNmYWRiZmFkNDc3ZDZkN2NhYjdiMjJhYWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY0YTc4YWQ1YzBlMzRjZjllMDMxZDgyNGI2ODZlYjhkMWIxZjYyOGQyZGVkNmFmMzYyZTQ2NTZjM2YwZGM5ZjkifQ" + } + ] + }, + { + "id": "claim_fef144821b3a4f05be9fd01e585861ae", + "statement": "The in expression requires all values from its first argument to exist in the second and returns false for a null or empty first argument.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-lists.rst#L333-L383", + "version": "repo-lines-v1:sha256:e275cf9e05a59d8e5d7062f547e32ece47655e96b0c9d2689e9834fbd5e1b7f7:eyJzZWxlY3RlZExpbmVDb3VudCI6NTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRlNmJhNzdlMjdiNmNiMjBmNWEzY2JmMDIyODhmMGRkZGE4ZWE5NTRiNmMyOWUyZDQyZDc1ZDkxYmY0NGE3ODkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1NGZiMDBjNGEwNDRkNzZlNTFlZTQ0MGUwZTBhNzRiZWM5ZjY1Y2JhNTAxOTUwNjQwZTFjNDc5MWI2MjllNTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM0NDZkNzdkYTU2NzNkYWJiMmViMmMwZWQ4MTFlNTAxOTNhMDY4MjQ1NzBiZDZhYjJkNTBjZDA4NGJmZjM1OWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNkZTNmNjg5N2Q1M2I1MzAzYWNhMWU1MjQ5MWZkODA2ZDFiMjg4ZTkyMmNmNjJkZTM1NGRkMWI5MzViNjkwOGUifQ" + } + ] + }, + { + "id": "claim_f94c7efc5d6a4f0888e025ee2975f8f5", + "statement": "Null values and deleted entities are not indexed and therefore are not traversed by joins.", + "evidence": [ + { + "resource": "repo://hub/dtl/joins.rst#L48-L50", + "version": "repo-lines-v1:sha256:b022b18aff150ebec1adf63ef873e2d322e45b9a6907b63356976b5a7539a525:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2E1NTc0YTUyYzM5Njg3YzI0YTBhNzk1ODhhZTUyOWFkYzcwZDUyNTUwMWY2ZTU3ZTM1NGY0NDE5NDlkNGUxOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjNiNzI5MzJjZjFjNzRhZDI0NGU2NDFkYmVlNTY3ZDZhN2E3NGMxNzM3YmYzMmMwODM2NWFiYTRjN2Y0NjcxNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODQ2N2I4NzI4NzJkM2FhMDEzNmVmNGE3YzlmODIyZjI5OWEyYjQ0NDRlMTRjNTYyOTI0MTVmZWIzZmE4ZGZiYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2JlYWJiMjFhYTBlOGRkNDU0ZjkyN2ZhMjE0MGZlNDM4YmU2OTI0ZDA4NDViZmFhOTNkZGUzMTg4YWU5NjQ2NCJ9" + } + ] + }, + { + "id": "claim_91edfa1e28b941ae8e09fe892ec838d7", + "statement": "The troubleshooting documentation identifies blank-property joins and excessive equality-set cardinality as dependency-tracking failure risks, recommends tuple-based and more precise joins, and recommends rescans for pipes still prone to dependency-limit failures.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/troubleshooting.rst#L61-L95", + "version": "repo-lines-v1:sha256:d5e617710df836f122243d2e85e56350849518ded826f9685818383e54721b70:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM5YmU4YjY4MGY3MTdkYTBjODNmNDg1N2M2YjA4ZWJhNzAxMjJhYTZhNjJmZGVhYmM0YmQ1ZTdmMWRmMDRhODYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEyY2FlZTJjNjc4YTVhZWM1OTA5N2FjZmE2NzY0ZjM5ZDgwZDgyZTU2YTlkM2U5NTRiNDRlNGEzODA4MDIyMTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY5MzAxZWY2MTEwMDVmM2Q3NDE5MTAyYzkwYjQwZGIwOWJiZTkxZTVlYTQ3MWU1Y2JkZDVhZDE1MDJiMWE1MmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBjMTFkY2Q5MWFiMWJhNjdkZjIyZWVlNDNkNGJmY2IwODA4MDVjNmQ0MTZmNjEwMDU3YTVlNTgyM2VkODRmOTkifQ" + } + ] + }, + { + "id": "claim_39c796da74c442f8be44ae9fbf44ea45", + "statement": "Only eq expressions referencing exactly one unique dataset alias in each argument qualify as join functions; alias-to-literal predicates do not connect dataset aliases.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L118-L134", + "version": "repo-lines-v1:sha256:c88983b9cbe1d65c5501f182f1f834cd921985b1436743ef54c809e149145855:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRkZDMyYWJiZDA0MGFlZTYxODA0MjM1NTI1ZWY5NzBhZjUxZWFkMzkyMGYxYWY5NmU2NmYxZjI2ODc1YWFiYzUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU1ZWFiNTFhZDM2NTAzMjI0YmZhMTQ4ZDNlNGVmYTYxYmVkYTljODJjOGU0YjgzM2FjODM1MjY5NmFiMGYwZjUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhjNzkyZDU3YWUyZWVjY2YxYTdhMTdmZGVhMDQyYTczYWY4NDY1NWY4NWZiNGVkY2Y1NzIxMzlmMmE4NGIyZWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIwYmM0Yzg3YTBhMTI1N2E5ODZiNGRmOTJhMjJhODdmNjljYTRiOWJmMDE4YTkwYjNjMDgxMzE1NzdiYjZmYTUifQ" + }, + { + "resource": "repo://hub/dtl/joins.rst#L52-L56", + "version": "repo-lines-v1:sha256:41cd83504175b516234df4adfc8a5cbe33699a75c3f58b632edf1107c6c7a5a6:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWM3YjYyMWIzZWQ0MTZkNjBhY2FmMjNjMTgwODdiYjY3MzM5OTQ5N2FmN2YzOWZjZDBkMjYyNDZlZGM1ZDg2MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDcxOTYxZjRiMDhkNDg4OGYwYWNlZGI4YjJkNTVhMjZkODI1NTIxZjlmMDMyNjA4MDIyNGFhN2NhZGUxMjYwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_a188b2c068b447cfbecc90894e276a1f", + "statement": "Hops declares dataset IDs with aliases, implicitly combines a list of where expressions with and, and raises a compile-time error if every declared alias is not joined and navigable from the source.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L21-L31", + "version": "repo-lines-v1:sha256:a1120be182ba6b0e6260495033b1073d5a9f6ac9f462bff4a6798ec23bcf04fe:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVjNmVjZDUyMjkwOWJiOWNiOTViZWQ5NmNmMDEwNjM4Yzk5ZDY2NTNhMDZmODg3NmYzOTVmYTUwYTJjMDVjZDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVkYmU3ZTVlNDg0M2RhOGFmZGYyY2I2NGMxNTRmNGYyZDMxODExOWNjYjBmOTlmMTUwYWEwOGVjYjczMDY2YTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhYTgwMWY3NDhlMDU4MzFjZjNhNzlmMWQyMWI5MDk4M2U5MWExNDVkY2Q0NThmNDE0NzFkN2FlZDU2ZTI0ODYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlmOGIwNGZkMTk1YjhhZjI0YmIwMzQ1MjIyZWNhZDBlMWY3MzA3NmI2MmNiOGU3OWFiMTFkNWU4NDA3ZmQwYzAifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L93-L97", + "version": "repo-lines-v1:sha256:e130d32e1a7a12d84d8e07e1dd2026da0b52359c9b253d54bd2e86357d51be67:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTAxZDg0NjU3YjVkZmQ4NmVmNWE5OGUzMmRiYmY0NGUzMGY5ZjFmMjU0MDVkNWE5ZDcxM2Y2NDM2NzBiYzVhMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTFlNDI0NWNlYWMxMTdmMDcyZmU2MmYxNTdiODdiZTBjNzAwMDcwMjkzNjg3MjlkNjYwMDNhNWVjYjBkNGYzMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGEzMmNiNzcyNTg3MjNhNzIxNjBkMmEyNjg4Y2I2NTRiYTdkMWVkOTExOWU1ZjIyZTNjODRiMzA0YWE1ODBmMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGRjYjk3YWQyZDBkNWIxZjU4ZWFiY2M4MTRhNDEwYmRjZjAwM2IwN2NiMjk1NjJiNTk0YjZhZGNjNTI0YWU5ZiJ9" + } + ] + }, + { + "id": "claim_be6fb609a3fe4726b102a2cfa5952e1e", + "statement": "The documented DTL compiler warning says that with multiple join expressions between the same two aliases, only the first is treated as a join and the rest as ordinary equality comparisons; tuples can combine them into a composite indexed join.", + "evidence": [ + { + "resource": "repo://hub/changelog.rst#L1764-L1791", + "version": "repo-lines-v1:sha256:4a79b0e2307de5aa7b8c03de2b41aac94e342a4c71852f208e01fe632db4b002:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1YzZkYmQ3NjBiOTA2ZTRlODIxMGEwMjJhNjU0NmYxNjMyYzZiNTJhNDdjZjBmMGI3NWI5NzQzZGY0NzVkYTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZlYzJjODU4ZGY3NWUwMWQyNTIwM2M2YWQ3ODU0MjU1OWRhN2VkMTVmY2IyMWNmNTgzMGM0Y2JlZWI2NDI3ZDQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVlZDg4NDRlMzRlZjE1YzA1YWVkOGEzODlkNWQzY2Q0MThkMTJmODc1NTExMzZjZDM4ZGRmMmVlM2UyNTc5NTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUwZTVmYmU4OGZiZDlmNTc1MGVmMzYzNDVhYWY1Zjc4YjIxMDcxY2ZmMDg1MzdkNWU4ZmM2YTY1ZWZkM2U1ZTEifQ" + }, + { + "resource": "repo://hub/documentation/operations/troubleshooting.rst#L89-L93", + "version": "repo-lines-v1:sha256:6d7d56fa543289c2ffa8ecdeaf78d2660b7f1a10c406ecf413caa2697f6c5bb8:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzRkMzQ2ODlhNGQ3OWZlOGY2Y2QwMjNiZWE4ZDJiYWI1MjBkMTcyNTkxZWNkMjQ2NjYzZjA2Zjg5MGJiMGEzYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWRlYTA3ZWZlYzE1OTQ2OWZlZjJlMjc0NWUxZmY5MDczOGU4YzM3OTg2ZTVhM2RhNTM0MjljM2NjNTcwMWFlMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWFhYjE0NTRiNWY1ODBhMWFkMzM2ZmZlNGRjMzZjYjgyM2QxMTgwMjU0YmY2OWMwOWExNzU3ODE0M2Q3MTQyNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmJhNTRmZjY5NGI3ZWFlMzJhNjJiZTQxOGU0Yjc5ZTYyOTU0ZjE0NjE2OTVmMGI2NmVjNDU2MWM1OTU1YTM5MCJ9" + } + ] + }, + { + "id": "claim_05008559bab5474787e08b98e906d6b2", + "statement": "Tuples constructs the Cartesian product of argument values with tuple length equal to argument count and ignores null values; it is intended for composite join keys rather than positional zipping of lists.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-misc.rst#L128-L165", + "version": "repo-lines-v1:sha256:62d44fc9cd34d63cbd88e5cafccaa41834976e4b0d9d88587ba1412341fcd04e:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg4YmUyNGI5OTY3ZWU0OWUzMDBjYzY4MjJlZmZmNDlkNjY1YTQ3YTZiZmMyMTMxM2U2NTNhMGVmZjhlNTdmOWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwN2U1MWE1M2Q1NGI0YzhkM2RmMTA4NGQ4ODkzNDhkNWE3NTQ2OTAzZDlhZGRlOGY0NDMyMzQ3ODBiMTI5MTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFkMzljYWMwMmM0Mjk0NzhjNmFlOTNjYzE1Nzc0M2QxZmJlMWFmZjRjMzBhY2I2YzViNzFjNzZiZTdlZjJjYTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjcifQ" + }, + { + "resource": "repo://hub/dtl/joins.rst#L46-L46", + "version": "repo-lines-v1:sha256:6fdf332acd7124e4ffb34f55615e4324baf3d2900339aa362e8db8a86171ad02:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmZkZjMzMmFjZDcxMjRlNGZmYjM0ZjU1NjE1ZTQzMjRiYWYzZDI5MDAzMzlhYTM2MmU4ZGI4YTg2MTcxYWQwMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmZkZjMzMmFjZDcxMjRlNGZmYjM0ZjU1NjE1ZTQzMjRiYWYzZDI5MDAzMzlhYTM2MmU4ZGI4YTg2MTcxYWQwMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmNmMTgwZDQwMzIwNzA5YmE5MjRlNzk4ODI1NmY2ZDliN2FjNTYxOGZiMGNiMTcwYzc3M2RkYjhlNjE1NjFkMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWY4ZGZmZjEzMThmMTM3ZDI0NjAxNzQ1MGI2MjcyODU5NjlmMjI5NTYxZGY5OWJiMmViNTFkNTcyNTY3YmIzZSJ9" + } + ] + }, + { + "id": "claim_4da4d619ad7f402a98a47c45bb6f9123", + "statement": "Dataset secondary-index maintenance is automated; indexes are implicitly declared by hops joins and subset definitions or explicitly declared through dataset sink indexes.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/datasets.rst#L17-L22", + "version": "repo-lines-v1:sha256:4d9492c457665a0015fc301bb767c068bdbfba4281c3b6bd9a9cd0139085d682:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDBlYTRmMWQxMzhlNjAxZTJmNDhkMmYyMDk3ZjJkMjM3OTQzYzY1YWI5MjYwOWJmYWYxNmEzYzllMDFlYTEzOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjZmNTJjNTE3MmVhZDQwZTE4MjNkZjk5N2Y3ZmJkNTZmZjFjOGQ1MjhlNTIxMzZhZDFhYzY3YTdjNjY0N2YxYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYWI1Y2EzYjE1ZTYwMjNlMmQwYTRmMjc3Mjk0OGE3NWQ3MDY0NTZjNjM2OTdlNGNmYmMyNGRjYzFkMGM3MDFiZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmI2NDMzMjM4ZjYzZDA1YTE5M2E3ZjZiOWY3Yzc0NjAzOTExOGFiOTc4ZDkzOTliZjM5NmJmNjBhODk3NmUwNCJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L65-L75", + "version": "repo-lines-v1:sha256:c8964b9df210679b3defe846065782ec7d9d00494fc3abd03866aa408983aa31:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkNjdmMWMyZTM2YzM4MzlhZDEwYWY3MjMxNTJlMDhmYWI3YjgzYzUyOTgzZjdlOGY3NTI2MTQ1MmVjYjVhNzAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY1MDcwODEwOTVjYThkNDQ2ZGU4NmE2MTlkZjQ0MmZmODllN2RlNzdlYzg5NzE2MGFmOGNiYzE5OTM0NjU1NWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVhNzRkZmVhNmVkYmNiOWM0MGU0YzUwOTQzZjA2M2RiMjViODY5NjQxMzExMWU4NGQwM2E1YTJlM2E0ZWYzZTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAyMmJhOWJlMzRkZjM5OWMxNThiZmY2YmQ5MGEyYTRhZDY2MjhkY2YzYjZkM2RiNWJiNzVmNGFlMGZiZjQ4YTgifQ" + } + ] + }, + { + "id": "claim_38565b9a5415403bb2410753bdebf127", + "statement": "The dataset documentation warns that orphaned indexes currently must be removed through the user interface or API.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/datasets.rst#L24-L26", + "version": "repo-lines-v1:sha256:263167554f5e768ad553b3c0f1583911e5cb81a810a565bdf377100f85a72b26:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTM3OTA2MDY1ODdiMzNjN2JjZWQ5Yjc3ZTFiZTg5NzAwMTY3NzEyOGMxMjZiODBjOWU2YzJhNDg0NzUyMWJmMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGI5YjVlOWY1YzI0ZmFhYjgyOGY0MzNlNTA3ZWRmMzZhYmJhNjViNDVjZGNiMGNjMGMzZTQ0NzU4MDFhZTAxMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTA1ZWZjMWNiYjdmZWE4MTZlODJiYjQ4NmY5ODA3YjUwMDgzNzUzNzQ3M2E4NjI3OTgxZGEyZjM2OGE2ZDI2YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2E3NjA5YWMxYzYwMjM5YjdmMmY2NmRhNmEwZWUyODRiNWQ0NjI4ODEzNDZlNmI5ZGU0MmI4NzQ4YjExNzRhYyJ9" + } + ] + }, + { + "id": "claim_7e2f1640515242ec9246bbeb988b4edc", + "statement": "Dependency tracking reverses hops and apply-hops traversals when referenced dataset entities change, locating entities in the pipe's source dataset for reprocessing.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L11-L11", + "version": "repo-lines-v1:sha256:7738951777d98b7c1c751a64c462a9bdb9d07c34867b6cd3a05c195aa14459e3:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzczODk1MTc3N2Q5OGI3YzFjNzUxYTY0YzQ2MmE5YmRiOWQwN2MzNDg2N2I2Y2QzYTA1YzE5NWFhMTQ0NTllMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzczODk1MTc3N2Q5OGI3YzFjNzUxYTY0YzQ2MmE5YmRiOWQwN2MzNDg2N2I2Y2QzYTA1YzE5NWFhMTQ0NTllMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTZkM2Y1NjlmZGNjZDk5Y2UxOWU4ZmQ1YTcxOGQ5ZDE1NDFmM2YzODgyNjNjOTI0ODI3M2QyMzYxMGRlN2M4MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjgwNmNiMmI0ZWQ2M2ZlOGQ1YjhjNzkyZmM0YzZmMTNiNWViOWU5YzRmYzcwYjU3YTYwNTBjMjBmOWRiOGExMCJ9" + }, + { + "resource": "repo://hub/features/dependency-tracking.rst#L8-L10", + "version": "repo-lines-v1:sha256:c72c8aa0c47791e1b192d80c8bbe07e13eeebdcbf64a6e8c95af3fd5894d7313:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUzN2VjNzZlZmRiZDZlNTU3ZjQ4MjFkNmEyMWM4Y2E3YjBjYTdkNjdiNmNjNzIxYTBjMjI0YjU1ZmM2MDMxZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGExYzE4ZjFmMDJkN2Q1MzQ1YTY5ZWQxYjM3OWYxNDAwNWZmYmRmZjZlZTEwODY1ZGFiNjk4NDY2YjhhMzMwMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzI0MGVjZWQ1MDEwYTQyZjEwZDcyZjFhMDU5YTA3ODliN2NhZDVlN2E1NTA1MTFkYzYzM2FkYWQ5OGU3OTQ0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2JlYWJiMjFhYTBlOGRkNDU0ZjkyN2ZhMjE0MGZlNDM4YmU2OTI0ZDA4NDViZmFhOTNkZGUzMTg4YWU5NjQ2NCJ9" + } + ] + }, + { + "id": "claim_6b558c85bcc44fbe8c9b1a69a48c1402", + "statement": "Dependency tracking supports only pipes with a dataset source; a merge-source pipe using hops or apply-hops must be split with a dataset boundary to obtain dependency tracking.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L9-L9", + "version": "repo-lines-v1:sha256:0317247381f14f68a0bf596da8d57ac2d9f4e89e9b1b24b2fd2918e111cf6618:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMxNzI0NzM4MWYxNGY2OGEwYmY1OTZkYThkNTdhYzJkOWY0ZTg5ZTliMWIyNGIyZmQyOTE4ZTExMWNmNjYxOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMxNzI0NzM4MWYxNGY2OGEwYmY1OTZkYThkNTdhYzJkOWY0ZTg5ZTliMWIyNGIyZmQyOTE4ZTExMWNmNjYxOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzc0NmY5NjM5ODUzY2I2ZGZiOGMzOWYzMTZiZDQ0ZDg4YjYyNjc1NmMwZTM2OTI3NzM0NTAwNzNmOGNjYjg5YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWVlYzA0MGVlYTJmZjliMWM3YTA3MmRjN2ZiNmQwNjY3ZDE1ZTY5ZGU1Yjg5MmVhZmRhM2NmYTRkODQwMDYyNCJ9" + }, + { + "resource": "repo://hub/features/dependency-tracking.rst#L12-L14", + "version": "repo-lines-v1:sha256:575522e2ead826951cfe9c2e534169ad7008885b7a3ff1e59df8a3d5f0b2b530:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzk1ODlmNGU1NmMxZmRhNGQzNzBmOWRmM2UxZTgxMDY0ZmI5MTgxYTJlMjcxZDJmZTgzMTQ2NGMxNzc4Y2VhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDYwZjVhODVlZmEyYmE5NDM1OTViYjFiYmQwMTZhMDVlMzk4MTljOWZmNGNjMjFhZWQwNTM3NTdiNTc4MDUyZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzBlYjY2M2M0MjgxOTdkOTYzMzM1NDFjMjRlZTI4ZGQxODZlZGFhZjk0MjVmZjU4ZDI5YzA4ZDdiYTg5NjFkNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWUxMGM2MDA1NjAyNjMyOTgzY2QxMTJiYTVjZWUxZWIwODkwNjYxYzczNDk0NWNhZjllMzVjM2QyMTk3MjY3YiJ9" + } + ] + }, + { + "id": "claim_fad5e274bf54416b9c4d7a65cea3c16b", + "statement": "For hops in a DTL transform later in a chain, dependency tracking requires join criteria to evaluate to the same values as on stored source entities; preceding transformations must not change the source properties involved in those criteria.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L13-L13", + "version": "repo-lines-v1:sha256:eb5380bf17c2eaf9414afcec15dc10a616e2bb31a5bd3420ee159b38f98aa7f3:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWI1MzgwYmYxN2MyZWFmOTQxNGFmY2VjMTVkYzEwYTYxNmUyYmIzMWE1YmQzNDIwZWUxNTliMzhmOThhYTdmMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZWI1MzgwYmYxN2MyZWFmOTQxNGFmY2VjMTVkYzEwYTYxNmUyYmIzMWE1YmQzNDIwZWUxNTliMzhmOThhYTdmMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWVlYzA0MGVlYTJmZjliMWM3YTA3MmRjN2ZiNmQwNjY3ZDE1ZTY5ZGU1Yjg5MmVhZmRhM2NmYTRkODQwMDYyNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjc0ODZjOTIzMGMyOWEwM2RlM2E3ZDBjZmY1NjA0MDE3ZDY3NDYyNTljMTJkZGM5NDc4OTc0ZGFlOTIyYTUzOCJ9" + } + ] + }, + { + "id": "claim_9d88c95b9d674ed79def079f4912b893", + "statement": "Add_namespaces adds identity and property namespaces before the first transform, which can invalidate inverse dependency joins because they match stored dataset-source entities rather than rewritten transform entities; the caveat calls for effectively stripping namespaces again where necessary.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L15-L15", + "version": "repo-lines-v1:sha256:f67c1f0a1bf342fb143c2e71e84ca80c7edde11218faaf086bd804dd7130983a:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjY3YzFmMGExYmYzNDJmYjE0M2MyZTcxZTg0Y2E4MGM3ZWRkZTExMjE4ZmFhZjA4NmJkODA0ZGQ3MTMwOTgzYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjY3YzFmMGExYmYzNDJmYjE0M2MyZTcxZTg0Y2E4MGM3ZWRkZTExMjE4ZmFhZjA4NmJkODA0ZGQ3MTMwOTgzYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjgwNmNiMmI0ZWQ2M2ZlOGQ1YjhjNzkyZmM0YzZmMTNiNWViOWU5YzRmYzcwYjU3YTYwNTBjMjBmOWRiOGExMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjIsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzI4MDk2NjdmNTAyZGZlODQ4MDcyOTgxMjhiMDBhNDBlN2YzOTdkZDUxNzUxNTM5ZWIxYmJhODg4NTY5MTZlYyJ9" + }, + { + "resource": "repo://hub/features/namespaces.rst#L79-L84", + "version": "repo-lines-v1:sha256:299d357b87e2589cce04d23719419bcb73406b2722d90c86c62b9924f6768bde:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWE5NmExNTRkY2ViYzlkYTcyZGRkYTczYTJiZDQ1MzhiMDk4YjMxMGZkNDkzYmY2OTQyMDkzYTkyZjYxYWIxMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGM0MzcxNTYwYjZkMzMwYjc1ZWVlMWY5MTQxYzc4MmQ1YjhkZWFlMGY3MGExYjMyYjk4ZWFjODdiZDgxODA0YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDJhMzZhMDJkNDFmZmVkN2Y4MzVlYjA1MjY1MGQ2ZWE5MmJmZjcyZmIyNWUzYzFhNWUxODZiNGYzNTJhYTliMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2FlMTMxNWM3ZTY2ZmI3MzZkYWNkZTdjMGVkY2FiMDM2NmM5OTNhNGVhNWQ2Y2Y0Nzk2ODZmMWI0ZjUzYTZjMSJ9" + } + ] + }, + { + "id": "claim_e27c8d7621ac4cdf9757234a5c379b50", + "statement": "When namespaced identifiers are enabled and a source entity lacks $ids, dynamic _S.$ids includes _id wrapped as an NI with the pipe's identity namespace, which can interfere with inverse dependency join criteria.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L17-L17", + "version": "repo-lines-v1:sha256:00f8dacf8ef774fb298c7d44128942ee9e6b9c81ac155dcf2bf40109e259b384:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDBmOGRhY2Y4ZWY3NzRmYjI5OGM3ZDQ0MTI4OTQyZWU5ZTZiOWM4MWFjMTU1ZGNmMmJmNDAxMDllMjU5YjM4NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDBmOGRhY2Y4ZWY3NzRmYjI5OGM3ZDQ0MTI4OTQyZWU5ZTZiOWM4MWFjMTU1ZGNmMmJmNDAxMDllMjU5YjM4NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjc0ODZjOTIzMGMyOWEwM2RlM2E3ZDBjZmY1NjA0MDE3ZDY3NDYyNTljMTJkZGM5NDc4OTc0ZGFlOTIyYTUzOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_f63a5681a9634ad2a71c3c6c0bae6925", + "statement": "HOP_SPEC track-dependencies defaults to true and can disable dependency tracking for that particular specification.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L65-L68", + "version": "repo-lines-v1:sha256:c446769fdc9b5114136499d75c51b2797afaec9c0b529e4114e7e22be04cc34b:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWQ4ZDZjNTYyNzk5NzUyOTMxN2RjMDc4MzUxMmJjNmIzNTg2NGEyOWZkYmJmMDgwMTAxOWEyYjJjNTMyMTdlNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGFmZTBjOGQ5YjRjYTgxNGJmYzQ0YmZiNTYxNDVmM2QyOTgxNDllYjhiNmQzZWQxOWJlMmQ0MTZkYzhlNTc1OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2ZiNDZmMDFiZDcyMTQyMWEzYjY3MmI3ODI4YTBlODkwNDk4Yzk5YjQxY2VkZWZjMmYyOGVlMWFhMDMwZWM0MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjQ3ODNjOGQzOTY3YTRiY2EyN2I3ZjI1ZDgzODVhMDVmZjMwZmQxYmM5MTNkNzZjMjIzYzQ4ZGM2MGYzNDk4NiJ9" + } + ] + }, + { + "id": "claim_b8ce2d3527314ecfba42563fc1e0b84b", + "statement": "Lookup-entity retrieves a dataset entity by _id, requires the referenced dataset to be populated, returns null when the entity does not exist, and does not automatically reprocess output through dependency tracking when the looked-up entity changes.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L173-L200", + "version": "repo-lines-v1:sha256:d14bab3df9a4c3366addbea9bfac10fcb4822ca568300ac92af3a2fa06ef7862:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA4MzBmMDBmMzVmYWUzOGY5OTdiNDc0NDFlNDE1ZTAyODMzMzc5ZDU2N2ZhNmFhODg0MzRiYjQ4ZGYzYzNkZTEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI1Y2E1ZjVlYTNhYTFhMGE4MDViOGFiZTVjM2Y5YjExYjNkYmYwY2FhYTY0NDZkOTZlOTA2NWU0OWFiMzg1NjciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ4NWRlYWZhZDIyNmY1YjA3OTkzMmNiODZmYTE3YWNmNDFkZGY1OGY2ZjE0NTRjMDIwNzlmMjFjMDM1YjRhMjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_d2a33cbe21ce4df8b0997be723a2de64", + "statement": "The entity model identifies _tracked as a marker from an older dependency-tracking implementation superseded by a mechanism that does not require modifying entities.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L124-L134", + "version": "repo-lines-v1:sha256:ec396663ffedd310efc2e71ab2c5a7f929ecece32fd40d805e5e2528baad0403:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY3MWMxOTY2YWExMjA5MDZjNjNjYThhZmVmYjgyZTZlZDJiMmUzODY0Y2JiNWQ5YmQ2ZjMzNmU0MjYyMDk3ZTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliNWU0MzlmMjY1NzU1NDU0ZWQwMTBlN2M0YzU5YWZhOTI2YzVlMDQyMjdlMDNjNzZjODQ2NTRkMDcyODQyYzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU2MDU2NTIwNDA1OTAwMWQxMGUzNzZjMWQ3ZWM3MTllNDRlZWVkMmExYjI3YTdmMjE0ZWFiYmExYjkzZDBjMDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImViN2NjY2I5MWE3Y2RlZjg5NjZmMmMyNWIzN2EyOTIyODI2NzQ2M2YxNzdlYmE3OGRiN2IyYmMyMzJmNGNjN2MifQ" + } + ] + }, + { + "id": "claim_e425bd7c5d094191a58e405f4bd0b6de", + "statement": "Apply-hops evaluates hops and applies a named rule to the result; calling apply on a rule containing hops or apply-hops is not allowed, and apply-hops is required to preserve dependency tracking for such nested rules.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-dictionaries.rst#L405-L469", + "version": "repo-lines-v1:sha256:8d4524c9bcfbf5d84fceaa57608c8deb08c38048068f7163b1e09a24ed9cdf9e:eyJzZWxlY3RlZExpbmVDb3VudCI6NjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI5ZjE1ODk1YTMxYjk4ZDQ3ODNmOTg5NzQ4Njc1OWZkM2U3ODc2MTQ0YWJjYzIxYmMyZmE5N2Y3NjYyYTFmZWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkZDM5ZTQ1NTZhZmUzZmUwYjJhYmEzYzFjMGMwMzEzMGZmN2JkMmY3NjIzMjVjMDk1YjAxNmQzZjAxODhhNGMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU1OWFjMWQ4YTMxNjViNzFiMmZmM2M3Yjc0N2VkODM0ZmUzMmJmMTc5NmFlYWQxMDYyYTExOGU4ZDRhMDUzMjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_604ea2c8488a4a539160682ccf9a1094", + "statement": "Hops subsets maps declared aliases to subset eq expressions with an index expression on the left and a subset-selection value on the right, replacing the deprecated prefilters property.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L157-L171", + "version": "repo-lines-v1:sha256:64b6f23c70d1ffaebaa2528006de391016c0765854957d6d80743d39b5dd92e6:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxNzFjMGQxMTNhN2VmM2Q5MTVmNmJlMTU1N2Q0NmIwZWI2NmZhZTllMzI2MzVlYWU1ZjQ5MzAzMjdhY2VjMDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjMTJlNWJhMWU4NGQ2ZDg4OGI0Zjc3YjlhMmNiZTc3YmExNjQ4Yzg2MDRlZDQzZjVhY2VmYWU1ZTRhNDc3N2MiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZjMGFlYzM4ZWJlY2JhOGVjN2U5MjMwMzhjMzc2NTg2ZTJiODgwZGViYTk0NTA0MzNkOWI3M2Y2MWRmMWM1ZTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIxYTA4YWEyY2IwOTYzZWNhNzM2ZDRlZmVlYTkzMjU4NzM0MDk3YTYwOTFjMTgxZTVkNTNkMTJiNTk5ODc3ZDAifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L80-L86", + "version": "repo-lines-v1:sha256:20f8a1caf0a227e8f616e426428e31cb964f9ff015d09ac44a0a6a12191fe4b3:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDM3NDUzM2Q1NTczMTI0YjUwZGY3OTU1M2I5NmI1N2MyZGNjZTAwNDYyZjhhNWIyYzY5NzU3ODQ1Yzg3NWJiYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGVkNGVhNDljZjZiZmZlNDNiNmIyMWFjOTBmYzFkYzE4NjQxMTg0ZTlkNDE3NjRmZjNkZmRiMDNjOGY1MTdlYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjdmYTAxNjAxMTI5Y2RlZWRlZGNlYTcxNGZmYzA4ZThmYTgyNGRiYjMzOWI3NjRlMmQyNDgxNjRhMWE1NDdjYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTBlMzZlNjZjNDM4N2FjNGZkZTc3ZTM1NDg5NWQyZmFiMGI3NzFiODU2OWI3MjZhMjc5MDc3YWI2ODc3MmFmOCJ9" + } + ] + }, + { + "id": "claim_8e879b1cc005472bba97bdfc4a356e8f", + "statement": "A dataset source subset reads only indexed subset members, uses join-style overlap eq, requires a literal right-hand argument, and requires version-2 indexes for delete support because version 1 does not support deletes.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L41-L49", + "version": "repo-lines-v1:sha256:dcbbc90dcec0546dbdaee717ab484e6768f95fb92f3f2d746686384e4e04f185:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWQ0YTQ0NjY4NzQ1ZDBlM2E0OTFjOGFhMTY2NGZjOTU3NDQxYTdiNmU4ZjA3MzdmMGQxYWQyMTcwNzkzNmQzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzE2N2NjYTNhODczMDdlMjkzZmQwYWNjMGFhZjhiMDU1YzAzZTkzOTNhNDdiYjg5OWFlYjVlMzgxZWE3MjZlOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2Y3ZGJhNGQ2ZmFiNjU4ZmI2YzBjMmJmYTQ3MDJhNzJmOTRiZjI4MTA5MWQ3NmIwNDVmZjYxMGU3ZDQwZWY2ZCJ9" + } + ] + }, + { + "id": "claim_2bd6088697654a2982c0dd2232bc2ce8", + "statement": "Dataset subsets behave as dataset-like slices backed by secondary functional indexes, supporting almost all expression functions except non-deterministic ones or those referencing other datasets.", + "evidence": [ + { + "resource": "repo://hub/documentation/building-blocks/datasets.rst#L28-L37", + "version": "repo-lines-v1:sha256:e5635dd8b480fec5a5bedac32e611791c72429a7cb49b17ce0c04eb7b784b10f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2OThkYjNhMmExMjRkODc0ZGQwZjQzZmU5NDJiYzUyOTJkZWIyMjhmMjAxYjk2ZTkwNzM2ZjZjNjY2ODdmZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY4YmZmZmZkMzYwNTI1MDgyYTI4Nzk5OWUwNmM0MmZmYjQxMTY0ZmI2YmU0YjljNDQ4OTViMGU5NmRkNjQxODgiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRlNGQ2Njc0M2Y5MTZmNzJiMjdlYTlhNmJhNjNiZTg2ODg2MThjZWZkZTg5ZjM5OGJjNzc1MGEzYmZjZDRiNDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_25d6cf672912448481d2e7f396f22b35", + "statement": "Hops produces an internal table with one column per alias and projects a list using return; return defaults to the last alias, can select comma-separated aliases or an expression template, is allowed only on the last HOP_SPEC, and cannot be combined with recurse.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L53-L63", + "version": "repo-lines-v1:sha256:821dc65b7cf7c65e2e904c2297158642e27952f7d44834b8ab7a94e1ad74de39:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlYzA2ZWRmMDI2MWMxZTdmNjZlZGU3MjkwMWNmZTA3ZGI3YmRlYzZlODZhYzJmZWZiYjk3NzM5OTIyZWY5M2IiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE5Nzg4OTk5OGM1YWJmYmMyNjU1OGE4MjU1OGQzYzhkY2NhN2M5YmI4MWQ5MDc4OGE5YjgyM2ViNzQyMDM1NmQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMmViYWJmOTAyMGFmNWVlMzUwYjYxOGU1ODg2ODBhMjhkMzY4MjM3N2RjOWQ3Y2M0MTQxNDgxYjU3OTAxNTMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJiODlhMDU3OWYzMjUxNjNhNWQ0OTJlYzQxYWI5ZmYwM2Q3YzFhOTc0OTAxYWQ0Y2YzMzI3YTBjNmU5Mzk5NWYifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L99-L108", + "version": "repo-lines-v1:sha256:b4a92877b241f0d453e3396aef24e8d0d1e5c839bd059b8d43dfb7883ae856c3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgwYWY0ZmYxOGQ1M2EyY2E1ZjgwZjJkOThjMGRmZTc3Nzc3OGVkNThhMWE1ZDQyODE1MzlmNDYwMTI2YWVjMWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI4MmIxYTU2NmEzOGVlOTkwNGRlZjRhY2RkYjQ3YjU4ZDVhZjk4NGFhN2MzNmQ4OGUxN2NmMWEwYWMxM2NmNWEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc5MTA1NzE4NjlhNTY0OWNlNzRmMTU4OGJkYTk5Yzk5ZmUwYzUxYjBjYzcxY2NhZWI0ZmZmNzdlYmQ2OTEzMjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBhMjg0NDg3MjhkMWQ5MmRiZjM1YjA4NjQwMmFiOWE1YWFiMTMyNmQ0NmQzMTZiNjFlOTAwNTY1MGI0OGI3ZjIifQ" + } + ] + }, + { + "id": "claim_557a2006ca5b4984b57631fcd7982504", + "statement": "The hops reference guarantees deterministic result order based on entity _id values for identical input entities, but requires an explicit sorted function for a particular property or projected-value order.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L104-L108", + "version": "repo-lines-v1:sha256:d0e6d02c03dd48cf6313627a2d23575ac90829cf384a6727b40368b22a7b3ee7:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGJlM2Y0YjNmMDRiMWVkNTdlOTJhNTIxZGQ4ZDkyOWVlNDAzZDNkODExN2I1OTc3OTUyOTg4ZWY1ZTIwN2Q0ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjgyYjFhNTY2YTM4ZWU5OTA0ZGVmNGFjZGRiNDdiNThkNWFmOTg0YWE3YzM2ZDg4ZTE3Y2YxYTBhYzEzY2Y1YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTAzMWI2MDdmOTg3YjhmMzBkZDNlNmJkYzJkMDQwYTU5NzRlYmFhNzE3MDljMGI2ZWFmZDc1NWU1ZTRlNDEwMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGEyODQ0ODcyOGQxZDkyZGJmMzViMDg2NDAyYWI5YTVhYWIxMzI2ZDQ2ZDMxNmI2MWU5MDA1NjUwYjQ4YjdmMiJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L151-L154", + "version": "repo-lines-v1:sha256:eee2c5b87339fccfb6d63ced0331960f0f2ab8e85b7078774f42248045021f65:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTBkNzg2YjZhYWE5OGZhYjdmYjZiOTVjMmM4ZDRjMDdmMDEzYTY1MjJiNDBiZWQ5MGUzMDk0ODVmZDllNDQyNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYmY0ZTI5MWVjOTVhZmE4MDI4NTIwOTJhYjhhNmFjMmMyMWM4NDgzZmZmMjAzMjEzMTFmOTEyMjkxMjZiNGZhOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2E2MjBiNTc5Y2FmNjhhZmQxMjFlNTE4OTRmZDZhM2JjNTczNGU4YWRjMTNmOTIzZDI2MmVmZGE4OWZhYTc3MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGJhOTE0ODQ5ZjRlMTk2M2VhMGRjY2Y1ZTBkYTgxNGI3NDI4ODI0NmI2MmQ4ZmM4NDdjYTc0ZGMwNzQ3N2JhZiJ9" + } + ] + }, + { + "id": "claim_7da5cbcbe9dc4a648eaa2b43ad4e0df5", + "statement": "Sorted and sorted-descending support per-value key expressions and return the original values in the requested order without removing duplicates.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-lists.rst#L845-L945", + "version": "repo-lines-v1:sha256:2baba55489ae75ad41af020f07d7318f19346a25d7d1077906b6b699b8e9da4a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAxLCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiIwNzMwNjBmM2M1MjFmNDNmOWIxOGZhYjdiYzg3NmEwZDA1ZTlhOTM2YjA3ZDYxZmQ3ODY4N2E0MjNjN2RlNDg4IiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiJiMzI5NDg0OTQ0NmEwYjA0Y2VlYzMxMjcyYzQ4Zjk3NjIyYTllMjZmOGQ5NjUyNDlkZDUzNGJlNTcxYTliNDBmIiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI2MmZlMzY3YTMwY2U1ZGRiM2ZmOGZiZjVjYWZhMTI0NzczYzVkNzBjNzNlN2I2YjdhOGIwZDI0ZDQxOGJiNDgyIiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiJmNmMzOWVhOTBjNWU1NGNmNTkxODgxNWMxNGY1YWI4ODQwN2MxZGUxMmMxYjBjYmUzMTQ1Y2E1ODU2NTJmOWNlIn0" + } + ] + }, + { + "id": "claim_83636054ea7443b5a5b9e56d1f6b1809", + "statement": "First returns the first value, returns a non-sequence input unchanged, and returns null for empty input; the troubleshooting guide warns against assuming a first hops result represents a unique entity.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/troubleshooting.rst#L76-L76", + "version": "repo-lines-v1:sha256:2ad6d5817e54ca70724e22f7c43378b6a5bcc64106b2942dd3a7fe12ca3be0c4:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMmFkNmQ1ODE3ZTU0Y2E3MDcyNGUyMmY3YzQzMzc4YjZhNWJjYzY0MTA2YjI5NDJkZDNhN2ZlMTJjYTNiZTBjNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmFkNmQ1ODE3ZTU0Y2E3MDcyNGUyMmY3YzQzMzc4YjZhNWJjYzY0MTA2YjI5NDJkZDNhN2ZlMTJjYTNiZTBjNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTg4MjUxODg2NmQxM2I2YWE0OTY0ZGQ0ODVkNTQ0YjU0NDEzODlmOWVjZjQ1MDM2ZjQwZWNmZDMxN2EwMGRjZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTBmOTI2NmEzYmZiOTI1OTY5YzlmZGM4MWE4NDlhMGYwZDVmNzBlOWI1YmNiM2UzMDMxNTJkNWUyMmI4MDU3YyJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-lists.rst#L176-L204", + "version": "repo-lines-v1:sha256:7f8f87ebb193f1ccc078ee00b0082b3aaa4eedd1fee6e6a88e539d9f9c622acf:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBhNWZjOTg5YTJkZGM0MzVlMWIzNTVhOTg5ZjQzYjZmMGRiZjgxNDNhNzMwYTkxY2JhYzQ5NzZiZmMzOTFhNWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVlOTNmNjQ5YWNjOTQyMTViNzcxZmNlZWU2ZGU0YTZlYzBmYjMzNGQ3ZmEwNzMyNTA0YWY0MmRiMWIyYzUzMjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRiNTAxMTc1MTI0Y2ZhNzcxYmYyOTY2NzA5MzQ0ZTZjOTJkZTIwZDBiMjUyNDkxNzViMmIwYTgwODcwYjZjZmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM2MmFkNjYxYTRkNzk4ZGQ2ZWU4MGViZTc4MTZiYjNmNjA3OWZjMTNjMTY3YjFlYzNlMTE5MmFlODk5ZDk4YTAifQ" + } + ] + }, + { + "id": "claim_f97baaa75d9d4ecdbcb62636b76dd5db", + "statement": "Recursive hops feeds output into subsequent evaluations until exhaustion or its depth bound; recurse defaults to false, max_depth defaults to 10 with null requesting exhaustion, and exclude_root defaults to false and controls original-input inclusion only for recursion.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L33-L51", + "version": "repo-lines-v1:sha256:dad61681257284ec2c1a3d62017d9e549b0acaf58ef898e186b7316eaae82689:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1MmQ3ZjUyMDYwZTZjNTY0ODM4NTJkODcwN2Q2ZDVlZDE0M2Y4OWQ3ZjZiMzA2YmRmYzFhNDE2MTE2ODY2OTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFkNjczYTI3MTJhMjZmOTk5NzdmZTU1Nzc3MmEwMjQ1M2NlMTQ3Njc4NDdmODllZGRhNTIyY2UwNmQ0YWY3YjAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjcxYzU4MGFlN2U0YmU3ZDMxOWIwYTFiZmM3ZDBiMDk4MGJhOTNlZGQ4NTJkNTY0ODViMWU3YzYyM2M3MTlkNTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY2Y2NjZmE1Y2ViMWJiMmI4NmY3ZDU5OGI1MWNkMDg1YzdkMjFlNzhiYTI0YTFlYjc4M2FlOTYzMzYwN2QyMzUifQ" + } + ] + }, + { + "id": "claim_490dd7f04e884381b970801b6f1b4056", + "statement": "Multiple HOP_SPEC arguments pass each specification's output to the next, supporting a recursive phase followed by another lookup; the hierarchy pattern recommends an explicit max_depth to safeguard against never-ending recursion.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/recursion-hierarchy-pattern.rst#L1-L7", + "version": "repo-lines-v1:sha256:9fec516aa32947ff16971c9a5b40d8ba2e4c73b235c61e8c2675b5728e502c80:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzgwODQ0NGM0ZTNmODk1ODcyZDg2ZTg1NDhhZGEyODkzZWIyM2NlMTRjNmEyNzEzZDI2OWIzMDI1YmQzYjYxMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjNiZWM0OTRlZmU4OTlmNGYxNWEyYmVhOWI5ODFkN2ZiNDgxZjAzNDMzMDI4OThmM2IyMWZiMWFkZDY0YzU2ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L88-L91", + "version": "repo-lines-v1:sha256:931652b6289431c6f472d9a81885e8db4e9a20fb5af7363ee704582e17f0d981:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWY5NDIwYTJkYWJmN2E5YzMxMWM5ZTk5YTRmZmUzYzU1MzQ4NjgyMTI5YWU3ODZlNjAwNjFhYWE2YjZiYjQyOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmMxNWRkODA2OTZmMGQ5NmU2YjdjYWQ4YmFjYTcwM2I3Y2VlN2JlNzE2ZGYyMDZjZDNlZjNlMTE3NTJiOWRhOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOTBmMGNmNmQxMmUyZjRlNzBmOTljMDY2MzMzMDQ3MWY1ZGQxNTVlZTI3NDNhMTlmZDFkMTlkZDY1ODFjM2Y4ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmZhOWNlOWQwNWEyOWNmNGU5ODFkNDVhODU4Y2VkMGFlM2NmNzNiYjAwMGVkYTY0ZjE2ZWU1Yzg4NWFlOGM3MiJ9" + } + ] + }, + { + "id": "claim_803785b710164b79804b17ed095d506e", + "statement": "List-expression filter returns only supplied values whose functional predicate evaluates to true, with _ representing each current value, rather than acting as the target-emission transform operator.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-lists.rst#L149-L174", + "version": "repo-lines-v1:sha256:2209e9e146c3b4ec271305f773a6d7b0756b1cea873ae8eec78409424e3811ac:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEwMDUyNTdiYzk5N2Q1ZTVmOTE5ZTdiYTRmY2Y1ZWZjMDU1ZmYzYWM5Nzg0YmM1NzBkMjRkZDJjMzI0NDg4YzAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdiNjgyNWVmM2Q4NWExNTQ0NjhjZWNmMjcwNjkwNGJmMDE4N2E1YjMzMGY0YjBhYWJhMWVhMjE1M2NmNzgzNTUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE1ZDg4OTY2OTYwOTY3MTk4YTYxMGY3N2E0Mjc0MjY0OWYyMzcyZjU3Y2I3NjgyNmMwMDFiNDJlOGQ0MzEyMTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU1NDk2MDk0OGM4MWQ3ZWNjZjlmY2JkZDllYjllMDJlN2RiMTY5NzFmNTk1ODlhNDgwMTY0YzMxMGI5NmNkZjAifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L573-L595", + "version": "repo-lines-v1:sha256:5f244497bef90a360d6640691371b801fa2c10a19f6d32eb4a67a7eaf7a5398c:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU5ZTYwMmIyNWYxNmM1NmY4ODI3ZmNkZmI0MmQwZDVhNjlhM2YyZDIxYTI2YTY0NmMyOGYxNGI1N2UzMWFiNDQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFlNmQ2NTRkZDc5YTk4NzBmY2JiZDE1Yzg5ZGNlZDE1NTUwNTU4YTQ1M2YyY2VhMDhkZGJmMDY3Mjc0YmNiNTcifQ" + }, + { + "resource": "repo://hub/dtl/variables.rst#L93-L105", + "version": "repo-lines-v1:sha256:a7d27050989724e8d7e9000c5882084ea0aea91db2dbff47c69e383cafaac349:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYzMzY2FlYzJmODY2NGRjZDBmYjA1NjdhYmEwOGM4NzUwYzM4NWJjNDg3MjY3YjZmNTRmOWQ1YTUzYjEyOGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk2YzViZTI5OWM2NTlkYzUwZDliYTY5M2IxMmIzYTQ3OTIwMmJhNTFiZGVlMGI1MmUwN2FkZTI1NzQ0ZTllZGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI2ZTE1YjE3OGQ1NDFlYTU3ODU5MDE5YzFhMzZkMmM3NDY3MThmNDI0ZWExYWEyZTc2ZjViZTM0MmUzMzE3OTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_80be0d1f4eda4f5f8cd8a3cf0ce32526", + "statement": "Transform filter stops further transformations on a false or omitted condition; for a dataset sink it emits an _filtered target so an existing non-deleted entity with the same ID is deleted even during incremental synchronization, while sinks without support discard that entity.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L113-L121", + "version": "repo-lines-v1:sha256:95c243f019475e68797591a4e93e297c67063758f4363e381114aa886bb78a79:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTMzNTQ2OWEzNjlmYzViZjlmMGZiMzRjYTdiYWVjYWI5MjBiMTNlNTY3ZjNjZWZiYjY0MjZjMDQzYmU4YWRhMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDZkY2NmMDJlZDk4OThjYmQ3ZjM2YjMxYTExMTA3NjczMDg4Y2U5YWRlOTdjYjk2YjRmMzNlMjc0ODMxYTMyNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWM3ZjM3NjMxODMxYjg3OGUzODVkZGJjZTZhNzg3N2VhMDlmYjc5ZTIxOTcyMThkODk0NWZjZGQ2MjI3MDc5MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWVhMjlkOWMyNjQ0MjdiMTE0NzE0ZThhMGQxMThhNWE3ZTdmZjUwY2Y0MDM3NmI0MmViNGIxZGMxNjdlZDU1NCJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L573-L603", + "version": "repo-lines-v1:sha256:264e62f32e88406cb624272e24b7e3e9233dbe1e6fa24e84db1b7d37df5b84b6:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5YzhiM2ZkYTY4MWNmZTBhZDM2NmVkNDg3ZDFhNjU4NWI1ZTE3NGM4YTUxN2YzOGI3ODdiYzQyZDU2ZmZkYTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEyOTFkNzQ5MDY5ZjExNTA0OGFkNjJmYmQ1OWI5ZDIzY2U1MTQxZTI4Yzg2N2U4NWQ4YTJjODYyNzE4MzM5OWQifQ" + } + ] + }, + { + "id": "claim_17de12a0f7e0451b90c71472ee498072", + "statement": "Discard stops transformation on a false or omitted condition and drops the target without a sink deletion signal; the documentation warns to use it only when the same ID has never previously been sent if stale sink entities must be avoided.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L514-L558", + "version": "repo-lines-v1:sha256:f84e2bc284951494f02cd900b32171a2c4085e8594eff7e32077bfd593048060:eyJzZWxlY3RlZExpbmVDb3VudCI6NDUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE0ZTljYjU4YTdhNjkwYmZmYWI1ZWMyMDY4MzExYzhkYmVlYjc1OWE2NDg0NThjY2FiY2U0MjMzNWMyZDFhYmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ5M2U0NzZjYWJlZmViYTIyNmM2Y2Q1ZWU0ZGUwYTcxMGUxYjU2YWUwOTg0N2Y1ZGJjNTY0YmFkZjc4N2I3OTQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNmMTczNmViNDM2MGNhYmYzMGM2NzU4OTEzNDkzNWUxM2VkODVjYjg4NDE1NDkxYWEwMzIzN2FlZDI5OTE3YTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyMjkzZDEwMzk4NDAxM2IwYmI3OTk1MjM3ZWFlMDQwNzhjYWNiNjQwZjVmMDc4MGEyN2EzNDQ2YjFiN2ZiMmYifQ" + } + ] + }, + { + "id": "claim_a63c5d5d403a434bba05e858aedbfe12", + "statement": "Create emits additional entities directly into the DTL output pipeline; the troubleshooting guide warns that using create without rescans can leave orphaned children.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/troubleshooting.rst#L82-L84", + "version": "repo-lines-v1:sha256:85df337894285ae4b2c519827107e67f535991648bee09e1a57bf193aee6f75b:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDAyYzEwOGUwNGI5MzY4NGU2MWQ2ZjNkNzU0MzkyMDA1ZjU3MGY0MGFiMzNjZTRkNWIxM2FkNmY3ZmZmOWQ0YyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTViYTA1ZWE4MDA2ZmNhZGZlZjExYjUyOTJjN2IxYzgyOWU2ZjVmY2VmMmFkNDUxYzY2MmFhZDY0YTU3YjljNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2E1MTNhYzMwZmY4NGNiNGY4ZTUyNTU5M2Y5NTA2MjY0YjNkNWQxN2RhZjIwYTkwZDRkMTVkZTI2ODdmOThiOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjkwZjljOGUxZTFkNTc0Yjg5YTYwZjE3YzUxZDI1ZWY0ZWZlMTk0N2NhMTFiNTllYjFjOTQwYjNiODRhNzUzYiJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L365-L381", + "version": "repo-lines-v1:sha256:a93ad45a6ac170e519e4313300e3399228f393d3be01db255bdb909620978603:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJiYjZmNmI3OWE0MzA1Yjg5NzU0OTlmYzZjOTU3YzcyZDk2MmVmNDJlMjVlYTdlN2EyMTg3MDE0YTkzNzY0YWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU2YTI4OTA0MWU2NDJhOGNjZTEzMTFhZGY1ZDIxZWQzMzZmNjIyZjU2NjFiZmNhMDJkMmZkN2Q5ZDMxY2VjNTMifQ" + }, + { + "resource": "repo://hub/dtl/variables.rst#L37-L41", + "version": "repo-lines-v1:sha256:7f02f586a0d6943219b5c893611a2e3f60c259e509cb924788e3cf8a1180ddbc:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzFhNjA1ODJhODllZTYyMGE1MTczODc0YjhhNTc3OWZmZjJlZDhhZmY0ZWQ0NzViZWQxYTZjMmJiZTYwODVjNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzg1ZmIwMTA3MWE5YjBhYWZiOTM0YTEyZjA5Yjc1OGYxMTM3ODNmMjhkZjYyODEzYzgyMWQ2YWM3ZDk2NzhjZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWZjYzlmYTk4MGU4YjM0Y2M5N2ExMzQ2MzdkMGQ2ZDdiNWIwZjZkNDgyNTQwNzU0MzQyMmNjYzUxYWU3ZjY1NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNThkNDFkMTZmOWNhODFmMzNmM2QzOGRhNzQ2MzRlMGMwZTJkMDZlOTg1NDI5MjAyMzNlYjY0NmJmNjIzMjU1NCJ9" + } + ] + }, + { + "id": "claim_75b1fd4bde404bd3b50f2e508d3dce12", + "statement": "Neither filter nor discard cancels entities already emitted by create, so rejection must occur before direct creation when it must prevent all emitted output.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L533-L537", + "version": "repo-lines-v1:sha256:ae32e7694bcd69874fcc030d7195522ace609cfbf242be668946501c376bce53:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGMxZWYwN2Q0ZWE2ZDBlOWZmMTJmMGIyYzA5ZTZmMWMyNGJhYjJlMzQzYWM3NzFiZTJmYjU2ZWU2NjJjZjkyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWUyZmVjNzgxMTFhNmFkNDNlZTYxNWRiYmQwMTQ3MzI5ZTE1MmQzZjAyNzRmNmZjMmJjMzdhOWM2YTQyNDIzZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTE1M2NmZjUzMmY2ZjUxNGRjMTdkMmY5ZTRhYWZlNWY2ZDhmNTlkOGVkYzQ3MWVmNjg3YmI3YjU5MjVhOGUyYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTFmMWU5YWZhZmZkYWU2MWY3OTg0ZmUxMmMxMDk1YmJjYTVkNzY0ZDI5M2Y0MWIyNGY3NGRjOTg1MDBkNDNhZiJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L576-L580", + "version": "repo-lines-v1:sha256:99bc1cfe8c8efe0d624cfe2d09a43c34634eea29c09ec18a2e5cc6088ad66239:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGMxZWYwN2Q0ZWE2ZDBlOWZmMTJmMGIyYzA5ZTZmMWMyNGJhYjJlMzQzYWM3NzFiZTJmYjU2ZWU2NjJjZjkyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDk0ODA2ZTY1ZTJlZWYwZjQxMDVkYTU1MmY0Nzc4NzBjNzM0MWExYWFkZGZjOGFmNDNhN2IwOTk4MDhjNTdmOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjNiZTM5NDE0NzVmMWRmNGU4MTZlZmUxY2NlYWQ0ZWZiYTFiOWRhNTlhZGNiMjMyN2ZhMmJkNmI5MGYxMzk2ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWRlZGEwZDM1NGM5ODc0MWEyZGZkMTc5ZjJlZjI4MjVhZmJmN2JlMDdjZGMwNzQ0YTdiMzVhMGJmNzc1YmJiNCJ9" + } + ] + }, + { + "id": "claim_8704850493ca4fb2bd68dbcca7bb6bef", + "statement": "Create-child adds entities to the target's special $children property and is intended for dataset sinks, which can compare it with the previous parent version and add deleted-child information before storage.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L395-L417", + "version": "repo-lines-v1:sha256:86d1fdb86b127a607610828e057660e82816291ed4e5c2a06376b5ad24d2dfb8:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZhMGI0MWI0ZmMwYmYzZTg2NzQ2NjllOGI4NTE4OTliMTMzOWRiNDFhOTRhZjc2YTVlZGE0ZjMyYjU4NGI5YjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImIwOWE3MGIxMDQwZWZjODU4NDIzNTVjOTVlMTU0N2JjOTc4YzlhMDliMjUwNGFjZmZkY2MxZWEyMTEyMGE1YTIifQ" + } + ] + }, + { + "id": "claim_556fe9d32f6547a581d949aebf60d0b2", + "statement": "Dataset sink track_children compares $children with the previous entity version and updates it with a delta immediately before persistence to detect removed children in incremental synchronization; it is inferred true when a transform uses create-child but can be explicitly overridden false.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L78-L93", + "version": "repo-lines-v1:sha256:ad6fb55d97566c397623de989bd93ab4d0a209f80cdafd718bff19af24ecdc37:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNTQ3ZmIxYTEzOWFlMjRkZTQzYWNkNzBlODI0NWJmMmRlYWY0NTk3MzYwZmMxYWY1N2Q2YmNmMjJlNmUzZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkYWQ3YWJiNTc1OGU4OTBmMmE4NWYzZmM5MmE1ZTZhOGUzMDkzMjFlYTM1OWVjMjA1OWMwMzJlNGMxNWZjYTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ5MjVjOTVmMzQ4Mzk2ZjJmZTZkMTQ2NjY2YTI1ZjE2YmNkODRkODAxNGM3ZDQyNmVlZWYwNDMxODMxMDkwODMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5NzdlZGU3NjY4NzZjYzgwMjE4MDE2ZDIzNzg3MTkyZjcxODJlMjZkYWU5YjlmNTMyYzNlYjhkMGY3NWM1MWEifQ" + } + ] + }, + { + "id": "claim_e94adfa9ca844de9b7781d2af3439d4c", + "statement": "Emit_children emits children in $children having an _id and omits the parent; it must be used in a separate pipe because chaining it removes the parent from the sink and prevents deletion tracking for emitted children.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-emit-children.rst#L7-L17", + "version": "repo-lines-v1:sha256:453fee2f4f0c210d54ebf2f612e3ed587c08829687d049f04261ba4854c6861d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI2ZjU4YTczMzMxMWMyNTY4YzhmNmI1NzVkYTFlNWRhMGVmNTU2OWMxZjkwZTQzZDVkYzc0Y2VhNzYwOWQwYmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU2NDg5YjE0YTI4M2Y4OTQ4ZDI4OTY2MmVlNjlmZTc0OWI3Y2IyN2Q0MmU4YWRmMGUwMDZiNDBjMDMzNWQ4ZDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRhMDIxZDQxZjRjNjlkY2Y3MTM3YjIxNDJiZmU3ZGQ3YTYxZDkwMzg0ODRmOGM2Y2ZlNjAxM2I0ZDBiODEwOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjRiNjcxNmZkODg4ZGM3MTkwODFkNThjNjdkZTI2ODBlYjRiOGUzMmU0MWZmM2ZkMGZiODI4NmRmZWY5MDcxZDAifQ" + } + ] + }, + { + "id": "claim_35f19639f7f04b26be69f34e38e6ac30", + "statement": "The splitting-sub-objects pattern recommends create-child followed by emit_children and including the parent ID in the child ID.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/splitting-out-lists-of-sub-objects-pattern.rst#L1-L3", + "version": "repo-lines-v1:sha256:1465ffcee2a63235e4792ccf23b3536fc653544d2c04259ea9711ad2724a0311:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjRhNTc5YzIyZjMxYjc0MzQ0Nzg0YmE3M2MyZWIyODNlYWFiOWE5MTYyODI5ZTBjYmIyMjQ3YjFiZGFkMWFjMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDZiODU4NGM1Mjc5ZjQ5ZDA3ZDI4NzhhYmFlNTIzOWExNWU2MTdjOWFiYmQ0NjEyYTRiZjk0ODdjMDQ2ZGVmNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_3a9e966077044b18a3875a7fc2e51352", + "statement": "DTL id_required defaults to true and fails on a missing/non-string target _id or invalid create/create-child values such as non-dicts or missing/non-string IDs; setting false instead ignores invalid values.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst#L29-L33", + "version": "repo-lines-v1:sha256:a3e79fbe316d0d702677ecafb014eb9c734b1126e3a6f1f25510a3cde738f1ef:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDRkYzdiZWUwNTk2NjNhMzNkZjM3MGY3ZWI0ODc1NTQxZGE5YzM4MWRjMDBmZTk5MDM1MTFkZTI1ZmYxNDgxNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGU0ZTdjNDY2NDY5ZmI3N2UwMzljNDAyNjc0ZTdhOWU3YjdiMTY1Yzg4ZGM5NzI5M2ZhNjM4NzI5ZTI5ZTQ5ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZmYmNhYjVlMWQ0MDZmN2U1ZDQ2ZjhlMTJmNDE1N2E3MzZlZTk3ZDlmOTY4YjQ3MzFkYWQwNDE0YjhlOGViYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDA5YjdjY2ExM2M0ZDFlY2RmZWJiMjQ0N2VmYjlkMzAxM2YwYjVmZjY1NTZiOGQwNDgzNTZmMmE1NTZhYjBiZSJ9" + } + ] + }, + { + "id": "claim_2a0887d0d9ba43ecad953630287b7e75", + "statement": "The transform reference recommends explicit _deleted rather than filter for controlled deletion, and the documented filter guard against deleted input is restricted to dataset sinks where _id is not rewritten.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms.rst#L62-L64", + "version": "repo-lines-v1:sha256:134e7272cbb331c3353f4a0285ba81f8ca79459bd45fc983d06d37615667fe71:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTM3OTA2MDY1ODdiMzNjN2JjZWQ5Yjc3ZTFiZTg5NzAwMTY3NzEyOGMxMjZiODBjOWU2YzJhNDg0NzUyMWJmMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzNlYWRmMDNmNDAyMDdlM2RlODExNGJlNzhjZThkZGIzNmZhYjExNmUzYTJlYTJkZGM5NzUxOTNkNjZmYzJjOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjZlZGU2NTc2Y2IxYWNiM2ZhNTA3Yzc4MWY4OTI5MTcxMzYzMTg3ZGM2ZmI5MzA0NDgxOWNmMzE2YWM2NTY5MiJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L601-L607", + "version": "repo-lines-v1:sha256:97faef703832427f28626964f41d6b6b32c93d34a4058039aad8befb6f2940ea:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTJmNzRiYTI0Y2I2ZTJiYzFlNGVmZWE4NDYxMWZhNTlhY2EzYjQyOWVmODcyNWM4OTYyYWYxNTU5MTM4ZThjZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTMwNWUxM2Y4YWZkY2RiOGJiNTEwMDJkYTIyMmI2NTg3YTJjNWY3YjhiOGYxNzA0NWJhM2FiYzU0NzViZWUwNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDE2ZDU0NzU2ZGEwYWE3ZTZlNTliOTI1YTUyNDc0M2ZlMDc1M2UxOTcyNDBhZDIwZmM4YmY1ZTQ5MWI3Y2RkYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTU3NGMxMTRmY2MwYzhmMmE0NzE3YjQyZThjZmQ0N2Q4MjdhNDllMmZjOTMwZjRhYmM4ODUzODI4ZGYyMjMyYiJ9" + } + ] + }, + { + "id": "claim_6339566da4e6476283248d42641c070a", + "statement": "Dataset sink deletion_tracking defaults to true and, after a full run, deletes entities that existed before the run but were not seen during it; this is separate from incremental filter deletion signaling.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L140-L154", + "version": "repo-lines-v1:sha256:4660c0413816fd340ada65a8913903b61ff8d82e72f4e2a94ff2dc9105e7ee3b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY4OTE3ODg4ZmI4MmRlZTk4MGJmMmFhMjMwMTkxNWQ5NzA0NWJhNzUxMWFjZWMzYmExZDI0ZGNhODk1NjFmZjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA4ZDNiOGRhNmMxNWU3Y2QwNWEyYjZhMmE3MmNmM2VlZGIxMTQxZTc4ZjVhNWJkZjg4ZDIyNDRiNzA2NDRkZTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhkYTMyNjE2ODUzMWIxY2QzYzJiYmE2YzVlYTdlYmQwMWQxMTM2ZDhmM2ExYTA2Yjk3NWY4NTE0ZGU4Mjk0ZDAifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-transforms.rst#L585-L599", + "version": "repo-lines-v1:sha256:000ef6a5392524912aa2d48af9818fea3d1c18f0fe5ef9fd2fe9f65963ebdfed:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY1ZThkZGFkZjJhYzUzNWI1N2JhNTkyMTM4MjdiNTc3NDA3ZDU1MGMwNWJiMzAyMDg1YTViMDNiYTQ4NDM4YmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY1NDhlYTkyNTU4MTZmNDgzMDMxMzljODIyM2M4MmRmYjVhNGFjMDRjM2E3MzlmMTEzNjFkNjY4ZDc3ZTU5NWQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg0ZjMwNTg4ZGY3M2YxYjRjZjQzMDBhZGU2ZWNhZmJjOTVhMjRjMmZkMmE2MDg5ZWNmZDJmNTFlYzdmYzJkYWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEyYWJmN2YwYmNiZjMwMTVjOGRjMDkxNDFiMWU3N2I2YzQ5OGU1N2ZjZTljZGIwNDZjYzBiY2MyMmZiMjcyYTAifQ" + } + ] + }, + { + "id": "claim_b9ea0596d1d446f9ab1b4e86c3b9efb9", + "statement": "Dataset sink suppress_filtered is an early-suppression optimization that should be used only when output produces exactly one version per _id, with a documented special default for full synchronization from a latest-version dataset source.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L170-L174", + "version": "repo-lines-v1:sha256:22a3ddd0e5f466b6ad6a15446337a715c1f1311ef82d3c42515d6460415e98dd:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjQ1YTE4ZThiNDNmYjBjZTRjMjczNTY5ZjRhNDQ4M2I3OTUyN2JmYjJlOTcyOWEyZDk0ZGE3ZTk1NThhNGVhMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWU1ODJlMGExMTQ2MzcxMzZjOGI5ZDllMjkyNDA4MzRjMjk0Mjk3MTM1MTM2MmNmNjM2Yzg0NjAwMGFlYmRhYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjYwYmIzNWI5OTllZWZiZjU1MTM1YmQ2ZDk5YjNkYWM0MThlZmFkNmViMGY2YjQ5OTUyNzNhZjg0NmNkNTAwYSJ9" + } + ] + }, + { + "id": "claim_e85d27e82d0c4ef6b57a5235749d11fd", + "statement": "Hops trace uses a unique string on the last HOP_SPEC to gather maximum join-statement cardinality statistics available in pump-completed and pump-failed execution-log entities.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L70-L78", + "version": "repo-lines-v1:sha256:9405af1d05bbdadcdbd0f4e9f36164043a013c2e058e2bba5914ba9e5aaec35e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMGEzZGIwODEzZDlkODZkZjRkYWUyY2EyNDI1N2MzM2ZmZmZkYjdjMTQwYmVhNTk5YWZhMjc3ZmRkNzk4OTgyMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDc5YTQzMGU1YWU0M2RjOWJmZjRjMWNhYWZjZjg1MTExNjVhMjA3MDYwMTExMzVhNjU0MDk2MGNjMjViZjllMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDJkOWY5MTExNTdiMWNkYWU0ZmZlZDllYTgxMmY0M2UxODU4ZjgyZWNjNGQxM2UwOWQ3ZWE0MWM1NThjMmY4ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDQ3ZmE2OGEyYTU2MGQ0MjViNGFkYjAyNDQ1MWY1YTk3ZWU4YTViOTVlNzMxMDg1NzhiZTFmYzU5YTA2YjI3ZiJ9" + } + ] + }, + { + "id": "claim_54d9cb56b51c40b49ee62559e3499f21", + "statement": "Pump execution history is stored in system:pump_execution:, is not a stable public application API, and exposes hops maximum-cardinality and total-row metrics, with each row potentially containing entities for several bound aliases.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L1-L13", + "version": "repo-lines-v1:sha256:ece7c4449f76a01e3d7e86ebd43975b694ff34b70887b423333806a8134f0251:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzZmFjMDAwYzI0ZWNiMmRmYzBkZjA1MzI0ODkzZDc0OTcxZjhiNWQ4ODVlOTAxNjQwYjc1ZTZhMTA0YzA5ZDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM0MmVjZmIxNWRiZTkxZjQxZDViMmEzOTljYTg5NDVkOWVjZjdjYmE2MTc3ODgwYmE1ZGM0Njc3NzNkNzkzZjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA5ZWI2NzQwYjJiOTAzNzgwNjljOWExNGY5YWQxMDc1MjM2NTk1YjQ1MjkyNjE1NmIwMTQzYTE1NmRmMzY4ZDMifQ" + }, + { + "resource": "repo://hub/documentation/operations/pump-execution.rst#L711-L721", + "version": "repo-lines-v1:sha256:a8eb2aa26f7970f1923791a44ba71e90689726517d1e932fa2e155a3054e2124:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjczMzdkYmI5YmE2ZWUyZTQyNDgyYWJjODQwNDI1NzM0ZTM4ZGYxNDc5NTIzMmMyMjliZTlkYzIzZjg3YmJkYzkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJkOWFhY2VmYWYyMmVmMmVkNDYzMTMyMjRiZTIzODc1YmZkMjFmZDY2YWM4NzQwMDZiYTczNzg2NDY2ZDc1NGEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg1NzgxYmE4YTI0YWRmZjc5N2ZmZmE5NWVlOTdiYjBkYmIxNTBiYjZjMTE3Yzk1ZmJiNjdkNWQwOWU3N2NmYjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI0NGM3NDZhZDI5OGQzY2EzNzY3ZGZiNGQ5M2QwZTJmODk1MWMzOWIyNWNjNDRmZGFkODEzZTMxZWQ2ZjZjYzUifQ" + } + ] + }, + { + "id": "claim_c570f17f8532459f83e9646f540165d1", + "statement": "Pipe dependency_tracking count and byte thresholds inherit defaults from service metadata, log warnings at warning thresholds and fail the pump at error thresholds; excessive error limits risk memory use, and enable_hops_thresholds applies the same limits to ordinary hops and is recommended in development.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L206-L233", + "version": "repo-lines-v1:sha256:0ded7eb1db2773717757fab01fa3b7dd3dd5d688d6308ddebdf7c75110db967f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNjNTAzZjYwYWNjM2MyYmVkNDkxYTFhYzIxNGM4YzZjOWJmMDAyYjA5MmRiZDJmZTAyMzY3NDQ1Zjc0ODZkZGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM2OGQ1YmQ5OGRmYTFiZTdlNGY0MTQxN2MxZTQxYTZmNTU2ZDM4M2NhN2QzY2YyNmM0NzU2ZmM2MGRkMmQzYzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ5ZDljNzY1NTI3NDQ0ZjQzZjAxOWMzYWMyYTk3YmY3MTM5MzlmNzNkODMwYzE3MTZkMjk4YjcxMjRhYjk5NTUifQ" + } + ] + }, + { + "id": "claim_5ef2c2c08d2742c3838ae181916c89e9", + "statement": "Hopping to the pipe's own sink is discouraged; batch_size must be 1 to guarantee visibility because unflushed batch entities are invisible, and sink set_initial_offset must be onload to avoid waiting for its own population.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L46-L60", + "version": "repo-lines-v1:sha256:6a70484c5f3e8b8e11c620da768637e3aa50e54aff71191506e805c2e1970f56:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVkMDEyZDU3OWEyZjMzYWFmZGVmOTE1MzczYjk4YjIwMzBmNGI1NGEyNzYyYjEwNjIxYTIzYTM4MjlhYzAzOTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFiN2FhOGZiYzk4YjhiYTBmNzhhNTIwYWNlZjA4ODE4ODJkNGM2NGI3OThiMWFmM2M0N2IyZjI3ZmRmMDk0N2IiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU2NzBmZjUxM2MzN2Q0NjU0ZDk1OWVmMjk0YWM1NmE0NTBmMDZkMmU5MThkMGExOWZmMzBhZjgzNzc1Mzk4ZDkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU2YjQyYTM5ZDRkMTU2OGZhNDYzMTgxNDZjMjhlNzYwN2ZkM2NmNjkzNGM0ODE5NzMyNDI1MGJhMDY5ZTdhYTYifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L110-L114", + "version": "repo-lines-v1:sha256:8d32ec827f5f7dee45c45cd4f3852bef552101f13596fa6b3bdb4442a3e629b5:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGJlNDE0NDRiZTBiNzM5ZDgxOGYyNWQ3Yzg3MGNjMWU3ZWE3MTU3N2RhOGViYTgzZTM0OGFhMmY1ZGFiODUyNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTU4ODgyZTcyMDE3ZTA1MzhjNmUyOThmNDhjNmU3MThkYjkyYmM4ZDBmNTVjNTMwZjFiNDRjNzNiODA5ODRkMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODNkNDc5MjQwYjBmOTc4MzQ1ODQ1OGY0NTJmZTU1ODYzNzVhY2FiOWM4MzE0ODZjOWY2NWU1YThkODJiODY2YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGM3OTJkNTdhZTJlZWNjZjFhN2ExN2ZkZWEwNDJhNzNhZjg0NjU1Zjg1ZmI0ZWRjZjU3MjEzOWYyYTg0YjJlZCJ9" + } + ] + }, + { + "id": "claim_f01c26f0e56346bb8948173e8268230c", + "statement": "The documented local configuration-test workflow drains pipe queues while output pipes are disabled or unable to send externally, compares endpoint output to expected files, and uses expected/.json plus expected/.test.json descriptors with pipe, file, and source/before-transform/after-transform/sink stage selection, defaulting to sink.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L91", + "version": "repo-lines-v1:sha256:cb5714a06383fc4b8f600f642b4174c551a732bf39857e6949303f674581d519:eyJzZWxlY3RlZExpbmVDb3VudCI6ODUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMzMjExOTAwMjM3NTFhM2M5MWVlYTM2ZTUyN2UwMzRiZGRhZmNhMGY2NzFmMTE4NzY5NWViNDI3MmI4NTAxM2EiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4YjkzNDE2ZGQzNWQ0Zjg0MGQxMjk4YzZhYTYyNzZiMDNmNjcxMWY0OThhN2UyYTViY2MyMDdlYmE1ZTNkZTAifQ" + } + ] + }, + { + "id": "claim_bf69a3ed34574a1c92adfdc7ebe9be83", + "statement": "Sesam -vv test is the documented local test command and reports missing endpoint tests or expected-versus-received output differences on failure.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_a7ad4e2537ca470dab199a696aaa19ef", + "statement": "The local-test documentation says internal properties other than _id and _deleted are removed from comparison output, so normalized comparisons alone cannot assert markers such as _filtered.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L113-L121", + "version": "repo-lines-v1:sha256:95c243f019475e68797591a4e93e297c67063758f4363e381114aa886bb78a79:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTMzNTQ2OWEzNjlmYzViZjlmMGZiMzRjYTdiYWVjYWI5MjBiMTNlNTY3ZjNjZWZiYjY0MjZjMDQzYmU4YWRhMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDZkY2NmMDJlZDk4OThjYmQ3ZjM2YjMxYTExMTA3NjczMDg4Y2U5YWRlOTdjYjk2YjRmMzNlMjc0ODMxYTMyNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWM3ZjM3NjMxODMxYjg3OGUzODVkZGJjZTZhNzg3N2VhMDlmYjc5ZTIxOTcyMThkODk0NWZjZGQ2MjI3MDc5MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWVhMjlkOWMyNjQ0MjdiMTE0NzE0ZThhMGQxMThhNWE3ZTdmZjUwY2Y0MDM3NmI0MmViNGIxZGMxNjdlZDU1NCJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L141-L150", + "version": "repo-lines-v1:sha256:c2662fb7be75e233b9932769e022d534efa796261d761533d05eccaf78646003:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEzNzUyMjMxOTRmMmM5ZGNkZTgyMTI0MDhhNTUwZmQzNGJmYmU3YTZiOGM0MzJjOTUwMjRhN2NlYWY2MzYwYmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVkOTBiMWUxZjMwZTk3ZjQ1YWRiMmY4ZmE3YmUwN2VmZmQxYjBkOGZhYzNlZTEzNDQyODNkMGI4ZGUzMDJhNTkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA0M2Y3YjFlNWJkODM2MWI2N2RhZjFjNGZiOTU2NWMyZDFhN2JkNTU3NTAxYzY0OTRiMWZmZTJjZDgwMWJlMDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY4YjkzNDE2ZGQzNWQ0Zjg0MGQxMjk4YzZhYTYyNzZiMDNmNjcxMWY0OThhN2UyYTViY2MyMDdlYmE1ZTNkZTAifQ" + } + ] + }, + { + "id": "claim_054103697d15498ebce6559a516a4e5d", + "statement": "Configuration CI uses a designated test node, requires serialized test runs because the Sesam client overwrites configuration, and must prevent writes to external systems, including withholding outbound secrets as a minimum safeguard.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/continuous-integration.rst#L7-L24", + "version": "repo-lines-v1:sha256:2bca9d22996e089efc3c41270a559bc9639ef5c0894312477915e1887d36bdc1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk5NWQ0OTIyYjgzZGRlZTFkODI2ZWNhNWFlZGYyNTUyNTVhYjZhOTlmYjljZTBhNTcwYTE4MTFlNjZmZDQ4ZGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkzZjNhYTU3ZTRmM2M3OGRmZDVkZjRhNzQ5ODJiYjQyZTNlNmE3NDllYTlhMTgxNmU1MzkwMjgxZTgyOGNhZDQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU4MjMyOTcxYzUwMTJkZjU1ODc2MDZiOTRlMjVhOWI0Y2VlOTA4NDQ1MzUwODlkNTEyZjkzMTk5YjA0MDQwY2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImFiZWYwNTRiMjAxMjEwNGZjNDE1ZThlMmNiNTcyYmRkMzZhYzBiYWQ4MGE4MjlmYjI5YjYzZGE2YTQ0ODZmYmIifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.claims/workflows/master-data-management.json b/openwiki/.claims/workflows/master-data-management.json new file mode 100644 index 00000000000..6416e862f8a --- /dev/null +++ b/openwiki/.claims/workflows/master-data-management.json @@ -0,0 +1,912 @@ +{ + "schemaVersion": 1, + "pageVersion": "sha256:bc4c07381ec2e344a95213f35a14a58401032f3874a64b62234d2d5dd0299d3f", + "claims": [ + { + "id": "claim_80f8ee86364540c8b55f343fac60a079", + "statement": "Global datasets group data about the same business concept across sources and can contain unmerged records or selectively merged records; membership and cardinality require business knowledge rather than a fixed universal global-dataset recipe.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L750-L800", + "version": "repo-lines-v1:sha256:84af2a70f0d102701a2d35f95a51fa8b8448ccdc4d79fe11a947031f9e42f9d6:eyJzZWxlY3RlZExpbmVDb3VudCI6NTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZkNTMxNWJhODk3ODBkY2IwM2Y4YmNkNTMyNzM1MGQyZDgwMTIyNzZiNzMyNmJkMzgyZGUyNGI4NGYyNDNlZDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNiZmI3MDI5MDRkNjliMWRlZjUxNDhjMTI4MjRjM2Q5NTA5OWMwZTMxY2ZlNTE0ZjJjYTk0ZGRiMGM5ODdiNzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU4OWFmZjYxM2M3MDMxYzcwYjUxNmIzZDg2Nzg4NDRiYTkzZDhjNmE5YjQ5MGExMzU5OTU0OTE3MDA0NGRjOGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIzYjI3NzdkYzFiNGU4OWVlODNjNDczMzNhY2FmZDEzMGM5NGRlZDhlNDI1MGFkZjM1YTJlYTQ4MjMwZmUzOGMifQ" + }, + { + "resource": "repo://hub/features/global-datasets.rst#L8-L16", + "version": "repo-lines-v1:sha256:986be1e2797d0c15f2667803eb24d33be43f71155873bb275cb07d4750662dfc:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjllM2QzMTNiZmZjMzc0ZDIyNjU2YjM3NjJkMTg3ODA4NjA2ZWEyMmFjN2Q1NDA4NWZkZTgyNTc5OWQ1NjgwNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjg0YjllZTJiYjhlMjM2MWFjNjMwNjAzNjQ4MTU3YjBjMjVkMjdmMjRjNjRlYjFlZjQ2OWQ0OGNhNWE3NWQwYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmY5OWZmNDJhOGM5YmNhNmI1ZDU4MzcwZGNkMGU5NjM5N2FjYjQ0MGI4YjM4NTM4NzQwMzA1M2I5YjRlNmUxNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDU4OTEyZWY3ZDlkNGQ5MzA0MzgxOTM0N2EzNzE2ZjFlMTk4NjBkNjIwZjYyNzk1MzA2NDVkYzdhMThhZjM2YSJ9" + } + ] + }, + { + "id": "claim_15a384c040d347ddac557e9a9eb6ee8d", + "statement": "The documented data-management workflow recommends comprehensive, faithful collection, routing imported data into concept-based globals, target preparation in separate pipes, and sharing with little logic so prepared outputs remain inspectable and reusable; these are best-practice recommendations rather than requirements on every pipe.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L19-L31", + "version": "repo-lines-v1:sha256:a170b1e96d2484855fa4c5fc970736ebe43cb26b7dfe45159873c6dce6baaf01:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI2MTQwZTU3NTA3NTZhNzJmNzk2ODE2Yzc2OGVjNTczNTExOTAwZWJjMDU4NzYyZWM4OGY5NzAyMmQ3M2IyODQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxY2FiYzNjMmNiYzMyYzY2MThhYzYwYjIyYzVmNzFhNTRhZmVmNzIwZjU1NjM0MDU0YjY4YWM5YzE1MTM3YzEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY5ODQxY2RjNThjMDYzNTBjZGIxZDIyOWEwNDE5MTNhOGIyNzBmODI1NzdmNWE3ZTk4YzU3OTZiMzA3NTMzZmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImY1M2ZjYjViYzVhZTNlZWUzNmZhYzczYjAxY2FlZGZlMWMxOWNmOTY4YmYyMDdjOTdhNmZkM2Q1YWQzNzRhODMifQ" + }, + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L252-L269", + "version": "repo-lines-v1:sha256:a1bc76883acad49363ac578be170d2c5582745aa5d18d893591211ba6cd7e35f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYwOWMzYWYxYzY4NDA5MTliZjM1ZmY5ZDA0MTJjODQzNDBmZWIzMTUwNzQ2NmY0NmIyZTZhNjU3MTAxMzkzMDciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZiNWM1MmUzZTk0ZDZjMDhkN2YxODE2ZTgyZDcxNjdkNWNiMTczZjBmMzkyN2M1OTVlODEwNzA0MmVjZWJjZTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBjYmEyZjk4MjhjODBhMmMzOGUyNDk2Njg5ODRjZGNiNjMyZDc2M2Q2OGZhZGRmOGZlNWU4ZWMyOWJkMzRlZWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhYTEwN2I0MzVlM2E0NWQwOWNmZDBiZmZjN2ZlMzBiODk5MjFhZmM4NjQzZmVkNTFkNTMwMWYzZDFkZmEwMjgifQ" + }, + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L784-L800", + "version": "repo-lines-v1:sha256:d2e61feeac3716917e61a4aacb3fa504302bf4020bd610af513b808b8ef0b6d9:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjllOTIzMjdjZmU2Zjg2MzM3YTg2MTk3NDc2ZDc1MzM4Yjg0YTFlMDNiODA2MzYxNGIzZDczZWVlMTg3MjhiOWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNiZmI3MDI5MDRkNjliMWRlZjUxNDhjMTI4MjRjM2Q5NTA5OWMwZTMxY2ZlNTE0ZjJjYTk0ZGRiMGM5ODdiNzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZjZjk2YmE5ZjFkYmQwODBmMTY2MGQxZDI4MzkxNGExMjgwZDcwOGRhOTE0MTcyYjk2Mjc4YmZmYmVkYzExNGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIzYjI3NzdkYzFiNGU4OWVlODNjNDczMzNhY2FmZDEzMGM5NGRlZDhlNDI1MGFkZjM1YTJlYTQ4MjMwZmUzOGMifQ" + } + ] + }, + { + "id": "claim_e459acbe320b4465bcdfe64359650f9b", + "statement": "metadata.global marks a pipe as global in the management graph, while an omitted sink independently defaults to a dataset sink whose dataset id is the pipe's _id; global metadata does not replace merge or transformation configuration.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L432-L460", + "version": "repo-lines-v1:sha256:40aee21a7d571548ff1c41990df774f5262639c70a4337b7e46f70efa89e9330:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIxMjBjNjY2YmE5OGY0YzUzMjQyZmNhOWMyYTYyZjQ5MWU2ODNjNzE5ZmVhZGQ4M2YzMDJmYTc3ZjJjYzcyY2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhkMDU1YTIyM2VmNjVhMzE0NzJjMDI5MmQwYjBlYjU0N2MxMzkzYTliMzM4ZDM0NzViYThmODU3ZTZjNzNmODQiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRhODM2ZTcwMDQzYTFjMGZlYTM0NGMyNDQwMzJkNWU1NzQ3NTk3OTFhM2IwYjAyZTkzOTI5ZjE4NDExZjM4NzEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhkYjIwZDFkOWRhNWNkNzIyM2JjMzNmZWYxNjllN2M2MmEyNjc2YzViNzI4MDNmMDE1NGVkZjI4NWUyM2NmNDMifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L165-L184", + "version": "repo-lines-v1:sha256:a6e89e33c88cf591dfc2b7d4e3e388973d4272b8c78188a59878714777e02fa2:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJlMGJiNTZkY2U1NWM3M2I2YjA1MDM4OTU2N2I2MzA4OTExOTlmM2RmM2I5OTVjMjYxMjAyY2Y2NWM5NTAwNjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjczMTlmMjgwOWEyOTRhZTM0NmY2MWMyOGRkMjA0MjA3ZDhmMmYzMmEwZDcyODYxMTI1OTFlZDMwMTc2MGQ1NWMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + } + ] + }, + { + "id": "claim_48de7a0c26d6484e91df70cae9820951", + "statement": "Namespaces preserve the source context of same-named properties when entities are merged and support mapping global models to target models through late schema binding; source properties can coexist with selected global properties.", + "evidence": [ + { + "resource": "repo://hub/features/namespaces.rst#L8-L10", + "version": "repo-lines-v1:sha256:4b058feae7cc5a4fe4d0969db69fdfcaf3cc840df9f5e87f4d6bd7c2c56f372e:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTg2ZTU1ZDcyYmUyNzE2NjIyMWU1NjA5MzBjM2VlNTIwOWRkNDQzYzVlMzQ1NDAyZjU5ZTFhNzViOWRhMDhiNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGEzM2U0MDZmMjk2MGI3MGZmZDZjODg0OTMwZWVjYjg2ODFlZWNjNGI4MzVlYjdkOGQ0NGIzZTZkMDljNGQzMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDJhZmUwZGFhYzM3YTIyNzE1NTU1OTIyZDRhNzc4ZjY3ZTRlMTMzOTdmODRiNWM2ZmRmOGExODQ2ODJmOWFhZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjMxN2UxOTZjMjk3MDY2ZjkzYjc1MGEwN2FiMTQyZTI4Nzk0NTc0MGJkZDNiYTM1YTYzZTI4ZWEwYTRlOWE4NyJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-connect.rst#L46-L96", + "version": "repo-lines-v1:sha256:12584561e171558d0a890c5018bd8421d31314053d01482019c7a27113078364:eyJzZWxlY3RlZExpbmVDb3VudCI6NTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4OWQ1ODIwNzBhMGRiZDI0Y2ZlZjE2ZjBkZjNiMGZhODE0YjBkYmQ4YmMxYTg4Y2NhYWFlZGZmNzY2N2M4MjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJiNTI3ZmM1ZjUxZDZjODdiMzdmYjcxZjgzYzBjY2NjYTQ0MGIxMDk1ZTNkM2E1ZGExMzM0NzU4YjQwMDVkMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhMGYyOWJlYzgzNTY0ZjQ0MDEwMTM2ZDZkYmQ4NTRkZmI0Y2QxNmUxN2I2YTZkZTBlYmI3NmRiN2E4YWVlZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMxYzRhOTY2MjI1NDE5ZTFjZmJiNmEwNThhODA3MDVjYzExZWQ0YWZjZDUzZjhmOWNkOGI5Y2Q4NzNiZTMzNjgifQ" + } + ] + }, + { + "id": "claim_884a16e8524442b7ad90558da552c59b", + "statement": "namespaced_identifiers enables namespace defaults and defaults to false if not specified in service metadata; namespaces.identity and namespaces.property independently default to the pipe id and can be set explicitly for enrich pipes.", + "evidence": [ + { + "resource": "repo://hub/features/namespaces.rst#L61-L76", + "version": "repo-lines-v1:sha256:513f8213dc790cb5f249628111e93456450bd3e9495bedd1d3c8ae478dcd006a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlkZWEzNThiN2Q3MzFjZTQ2MjJjYjg0MGE2MjAyMjRkNWU3NWNjZmE1MDEzZTI5MmI2YjRhNzM2NThjYmNhZmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1ZmNmZjY5YmQ4OGQ0NTUwNmE2ZTE0YmJkMDRkYWEwMzlkZTE3ZGNjNTQ3YTE1N2IwODhmNTBmYjdlYTgwZjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVlMTY3YTBlYzk1OTg4MzA1ZDJiZWYyMDIwMDMwZmYzNGIxNTJhMTczMWY3NDhkZDRhNThkZTIxNzk1MzJmOTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZlZjgyNWZlZmQzODYzMzE1NTM2YTQxYjMwMTMyMDUxZWM3ZTliZWY5ZDlhYzQ3Y2U2MDQ0NTA5ZDZiZGE5NDEifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-enrich.rst#L63-L67", + "version": "repo-lines-v1:sha256:fa0d916a7997f3006b7caa3d440caa2f2265a8fb51eaa4b962309a4ac8903eee:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjliOWU5ODE4MTcwOWMzZmM2NmVjYzljM2MyNDA5MTZjMzc4OTk5MjdjM2ZhZTU1Y2I0NTM5Njg4ZjZjYzc4ZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWI2MmY2MGQ4NTkwYTU3OWNmNDZmOGQ2NzM3OGM0YzU3MmI5NjJjZWNjZGI5MGM3YTVmN2I0MmI5NjA3ODJhNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmRkNWZhMDZlMGNiYjcwZmZjMDE5MjI5ZDE1NzIxOWM1MGY3M2JiZGY3NTViMzhiMTQ0ZTI0Y2M4NzBhNTQwYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjkxOGJjZjg3MzFiMzQ4NTk0ZDYyN2QxNDA0YTA1NzNmYzgyOWYwMGE1ZjRlZDRjZjdiZTkzZWRkN2I0ZTEwMCJ9" + } + ] + }, + { + "id": "claim_94106ef9114c45baa8c16ef8a42c8e54", + "statement": "add_namespaces adds identity and property namespaces before the first transform, whereas remove_namespaces removes namespaces from _id, properties, and NI values after the last transform; source and external-sink defaults depend on namespaced_identifiers being enabled.", + "evidence": [ + { + "resource": "repo://hub/features/namespaces.rst#L79-L92", + "version": "repo-lines-v1:sha256:9e6bc1d03bb7142ef5394b21549a6d998663f9d12dda9c29a0d82a99fe831e7a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlhOTZhMTU0ZGNlYmM5ZGE3MmRkZGE3M2EyYmQ0NTM4YjA5OGIzMTBmZDQ5M2JmNjk0MjA5M2E5MmY2MWFiMTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjViZDAyZGY4MzRiMTMxZjBjNTdiZGU0MzE3MGI4MTZkZWVhZDdkMjJkMzRmOTdhY2Y4NTdmYWFlMWIxNTQwZWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQyYTM2YTAyZDQxZmZlZDdmODM1ZWIwNTI2NTBkNmVhOTJiZmY3MmZiMjVlM2MxYTVlMTg2YjRmMzUyYWE5YjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBlNGU3YzQ2NjQ2OWZiNzdlMDM5YzQwMjY3NGU3YTllN2I3YjE2NWM4OGRjOTcyOTNmYTYzODcyOWUyOWU0OWYifQ" + } + ] + }, + { + "id": "claim_62d09f04e8b24d7295e507e64bf5eb13", + "statement": "Namespace-aware DTL functions generally match unqualified property references across namespaces, so qualified property references are needed when selection must be source-specific.", + "evidence": [ + { + "resource": "repo://hub/dtl/namespaces.rst#L6-L21", + "version": "repo-lines-v1:sha256:f9fa5b54c7276782d1b018c3ce5c28686a04d7acfcbeae0bdcd89738d1c5733c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk1Njc2ZDhlNmNlNWJiMDYxZDYxYjhkMWRlZDM5YjExYWZjNmQ1ZjdkMTNkMzdhY2FjNDAzNzdmYWQyOWRhMjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAyZDZjYjJhNzBlNDM3ZjYwNGMzZGU2Nzk1M2EyZjdlYWQxOWI5MmI4ZTFlYjE2M2Q0NGE0NWZkNmYzN2ExZTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg4NDk2ZWNjMmY3ZDM5MDRlYTVkNjI0ZTI5N2E3NGU5YTlmNjFmZjYwMTgxOGFhZDNkODY2ZWQxMmEyYTIyOWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcyOGM1NmNjMDljNTJiYjg3N2Q4NWRiNDEyNTZmNGI2MjM4MGU1N2QzYzg2N2ZkN2YyYjc5ZjFjMTdmYzQzNmQifQ" + } + ] + }, + { + "id": "claim_aac00ab65baf4ea59e6ccc0d83af04ef", + "statement": "NI values are distinct from plain strings with namespace-like prefixes: ni constructs typed namespaced identifiers encoded with ~:, and semantic enrichment uses NI references such as those created by make-ni to relate source entities and match identities.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L255-L255", + "version": "repo-lines-v1:sha256:54729e40a758cf471b01e94974bc518782698bc2543d32f9695cb3200b405ad6:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNTQ3MjllNDBhNzU4Y2Y0NzFiMDFlOTQ5NzRiYzUxODc4MjY5OGJjMjU0M2QzMmY5Njk1Y2IzMjAwYjQwNWFkNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTQ3MjllNDBhNzU4Y2Y0NzFiMDFlOTQ5NzRiYzUxODc4MjY5OGJjMjU0M2QzMmY5Njk1Y2IzMjAwYjQwNWFkNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDE3ZjM0Zjk1NTIzODBlYzY1ZTEzYTU3ZDc4OThiNTBkZWFlODU5ZGEyY2FjOGE5NjMyOWU3YzRiY2UzM2I3MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGMwYWYwZmYzYjFiNGY0NGM5ZGYyOWU3NTVjMGJkNzBkMzEwOTllZTRhMDVjNTkwYTQ3YzllZTg3NDNjYmM5MyJ9" + }, + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L73-L99", + "version": "repo-lines-v1:sha256:f6e91665a1068eb26f36a667cd2f376a43fd81a1031b8c342da80d5988aa28f1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE1OWZmNTYwZDNlN2FkNGM0NTY0MzkzMjNmOGUwZDUzZWMzYzExNGFlNjU4MzM5NjI1YmY2NTRiNDgwNmY4ZjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI0MjIzOWIxYmQ4MmI4NWVkNTBjMThhYmU2YjhlOTk3ODc1NWRhYzZmZDgwNDA5MjRjOGE4ODBjNTJmMDY1ZDIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA1ZDcxMThiYzhmYzU3NGQ3NGVjNjRhNjg1ZjA3OGI0ZjhlNWIxNzg2YzI5ZmZhMmEyY2ZlNGFmYWExZjM4ZWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk3ZDg2MzJlNTRlOTI5OGFiYjk1ODcyN2UyZDUxNDA4YWJhZjEzNjYwMzUzNzkxMDE0MGFiZjY1YjMwYWI2MTMifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-namespaced-identifiers.rst#L19-L28", + "version": "repo-lines-v1:sha256:32a50ae84bbd419cc6d2069b5e16d63317849f185754862df0a7fd178f6dee74:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNjMzRlOTEyMTYyYjY5ZTU0YWIyNDIzNzk4YWMyMDJkNjRmMTE2YzEzODQ2OWZiNzNhZjM2MDM1MjZhYThmZDYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1NGZiMDBjNGEwNDRkNzZlNTFlZTQ0MGUwZTBhNzRiZWM5ZjY1Y2JhNTAxOTUwNjQwZTFjNDc5MWI2MjllNTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMwMDYxODRjMzgyNDI5OTgwZWEyYzY1YWE0ODI2ZTQ2ODg3YmQ3NzUwMTBlOTY5MWMwNjAyZjFkMDc0NTAxZjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhlMzQzMTUxYmZkOGNiMGE2Y2Y3Mzg2NzFjMmRhNzlkOWQxODY4OTRjMzE2MmY4ZjhiNjljMzE5MTM1YThhYmYifQ" + }, + { + "resource": "repo://hub/dtl/dtl-functions-namespaced-identifiers.rst#L50-L76", + "version": "repo-lines-v1:sha256:fcb933e375a76fea30fb47b3cb6419d1e4790162eaefbaa5231ad5b4407d0d1b:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxNGZjNTliZTQ2NjAxZmU4MGYxOGJmNzAyMmMyYmIyMDc1NWQxNzEwODlmMGI3ODAxZjYyYWQ5ODliN2U4ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY5ZDcxOTY4MzE2OTQ2NWQ3N2JmZjhhYTc5MDUxZGJjOTgxZjNkMjM2MWE1MjM3ZmRiZWY2ZjljNjI2MWM2ZGYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNhYWViN2VmMjYwYTE0ZjFkOTNjM2VkY2M3NGMwMWRkZmM4YjlhNzhmNDdjZGJlYjJlOGUxOWU3NTEyMWUyOGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdkMmI4NTQyMDJhODg4MGFkZjgyMTAyMGNkODU2ZGM0NTU5Njg2ZjE1ZjIyNzJjZmQ1M2UyOTQyNThjMjQxNGQifQ" + } + ] + }, + { + "id": "claim_54fcafedd6fc46249d7b66221510f5ea", + "statement": "The type-information enrichment pattern recommends adding rdf:type or $type so relevant subsets can be selected from global datasets later.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/adding-type-information-pattern.rst#L1-L3", + "version": "repo-lines-v1:sha256:d7b50c9a048a9722594ba8fca31a6a03ebe407c95fda2cf93719f67c79941204:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmFiOWY5NTllYTUzZjZmMDkwMDc5ZjA4M2NjYzFhZmZlNTBlMDJlYTBiNmNjYzJmZDlkMDRiNThlNWVkZDhhMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiM2RjZjYwMTMwOGYzYjYyYjJmNTU2YmFmMjQ1ZmVlOTY3MzY4NWJlNGNlNWFiYzJlYmVlMmQwYmE1Mzk2MjY2OSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_9a2e71bb78e34e259410a0493fdda038", + "statement": "The reference-enrichment patterns recommend extracting reference or classification values into separate entities that can be connected across sources, and keeping foreign-reference namespaces local to the source's controlled data rather than pointing at uncontrolled objects.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/extract-foreign-references-as-extracted-datatypes-pattern.rst#L1-L3", + "version": "repo-lines-v1:sha256:c3620e58a5086023aad82f1b3376e0c58dd49470c7ce165236dd96fcc17a5c2a:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiM2QyZGZkMDU2YmNkOWQzMDMyM2U0NDg5MzIxOWFiMDc2ZjA0ODQzMThmYTRiZmRjZTM0Y2M2MGYzMzc4ZTljZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDdhOTI0NDgxMTQ4ZWU3ZTg3MzFlMmExODAzZWM2NjYzYzcxYmY1MWI4ZGQzMGVkMzg0ZjcxNjY5Y2RkM2Q1YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/data-management/extract-reference-properties-pattern.rst#L1-L5", + "version": "repo-lines-v1:sha256:9adf95ee33325f1bccc5dcc107af31df88c3a3e7739aa820fd93f9f7a2a3d9b1:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDlkZmRiZTdjZGZiYWQ4YjFlNWJmYzM1OGRjMDg3MzQ3OWMwYmI3ODczNzhhMWQ0NzQ4ZDg0MzVmZjUzMmZkYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjliYWI3ZjFhMjhiNjJiZjg4M2RhMWJjZmMzMGQyNjY0NTJhNGU2MmFhOWNmODBhYjg0YjNmOTY3ZGY0ZTAyMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_14be9f14d6bb4ea9b4801b1d910c064c", + "statement": "The sub-object splitting pattern recommends create-child and emit_children for independently meaningful child objects and including the parent id in the child's identity.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/splitting-out-lists-of-sub-objects-pattern.rst#L1-L3", + "version": "repo-lines-v1:sha256:1465ffcee2a63235e4792ccf23b3536fc653544d2c04259ea9711ad2724a0311:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjRhNTc5YzIyZjMxYjc0MzQ0Nzg0YmE3M2MyZWIyODNlYWFiOWE5MTYyODI5ZTBjYmIyMjQ3YjFiZGFkMWFjMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDZiODU4NGM1Mjc5ZjQ5ZDA3ZDI4NzhhYmFlNTIzOWExNWU2MTdjOWFiYmQ0NjEyYTRiZjk0ODdjMDQ2ZGVmNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_15a3522ca45e43d5b4992b1879bb3a3a", + "statement": "union_datasets tracks each input dataset through its since handling and reads them in configured order, exhausting one before moving to the next, rather than resolving equality-based domain sameness.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L6-L10", + "version": "repo-lines-v1:sha256:e742c9ea582e15ed1628e88f995be73c55a3cdd6c0200d53dff0e8f7ed4b8976:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjRmMmJlOTdjNDRjNDNmYjg2MGYwMThkNmU5ZWQxN2IyMzFmY2JjODY2ZjU1MmY1NWY3MDllODc2Njc3OTI4NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2NlOTFjNGU2ZmM5YzUxY2JmMmU0NDQzMDhmYzMwMzQ0Njg2MDA5Y2RiZmE4N2Q4ZjI3NjJhZDMyZjBjOGRkNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWU2NDNiMzVkOGQwOTljMDcyNWM4YjgzOWRiNjg5ZGQ1N2VlYmQ4YTBlZWUwODU2MjNkMTI0OTE3YTlkNTZjZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTNiOTQ3YTE1Nzk5NzNiZjg0OWIwYzYyMWUzNDZiZjAwMmJkMTdjMzk2ZWYzYTUzNmViYjc1YjI1NDA5NDA5MSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-union-datasets.rst#L6-L9", + "version": "repo-lines-v1:sha256:a766bb1f6c523527023f6daeb7ef8f31b588b4252fdf5bc35427dfc7fa8e4fd7:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWI0M2ZhYTllZDExYzc0MmRlZjFiZWEyZTVkZjIzNThlMDZmMWQ2MDAwMjUxNjU5N2RiMzcxMjdkYzdmNjM3ZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDQwNTNmOWYxOTk1NGI3OTkxNmI2YjQ0NWM2ZDJkNTM2NWNlOTdlN2I1OTc4ZjU4OWExZGI3MzU2ZTc0MmRiOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTYzMDQwYTkxYjA2NmUzOGExZjFhMmQwYzI4NWMwMWJhZDNkNjI2ZTljYzk0NDFhZDAzNTIzZTc3YThlY2RkYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2Q4ZjQ3MjljZDNjZTUzM2JiYzhhMmY0YWExMzQwYjJkYTUwNDZmYzVkYjdjNGU1YTkxYzU5YWE1ZGFmMzBiMyJ9" + } + ] + }, + { + "id": "claim_2ceea9be44144dc88308d9323333303f", + "statement": "union_datasets prefixes input _id values with the dataset id and a colon to avoid identity collisions by default; prefix_ids: false disables that prefixing.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-union-datasets.rst#L11-L15", + "version": "repo-lines-v1:sha256:eb34f8b21b1dbae3d84059b029572537babe7b25edb53a1de5997cb2b13544f4:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGIxYjI3NzdjNWYwOThkMjYxYjFmNTI1YmQwYzJmNTFhODNmN2NhMmE4ZTEzZGRmMTBlYzNkZWFhNWNhNzIzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTc2MTExZjA5MTYyOGJiYzI4NzQwMDcwZDdhMmRkOWE1YmZlZGI4MjczNGFiNDNkZjgzOTQ5YzdmYjMzZWFlOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTIzYTdmYzM2ZDkwMzQ5N2YzMTI2OGVlMGJlMzg0ZWUyNjJjYjFiODQxZGJhNGU3N2ViMzEyZjEzOTdiODFjNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjdlM2NjOGZiMjE1ZDM0NTk4MDRlZDQxMzlmOGUyMjFmNGNlYWM3Yjg0M2Y4OTU4YjlmYjhiNDBkNzVlNGNhMyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-union-datasets.rst#L99-L102", + "version": "repo-lines-v1:sha256:c1e8ba618a5d4c5b4aabb0188a7d85078b2897014f538a56e113e67274561274:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmRjNzJmNDU5OTZiYjM2MWY1NWE2NTdjM2FiZjRkMjNjZmIyMDZkN2RmNDI5NDdkOGE5NzM1YzI0NDJmNDE2YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmQ5OTlhYjkyY2MyM2RmMDY2YzdiZjQ0N2RjY2I1YTVmZTRkZmM5YjIxYzM3YjQ1MmEwZWFiYWQ3NGI1ZWZmMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzYyZGQ1NDRjZmQ4NDNlMjViZTQ3N2NjMjA4MjljOWViYzZjMzk3N2I1MWJiZGJmN2NjY2RlNTIyYjg0ZTAyZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2RlMWJkNjUxY2M4MWQ0ZjRhZmM2Y2Q0NWU2MTM2ZTg2YjE4ZTNiYmY5ZjBjNmI0ODRkNzg3YTE3ZTdkMTIzZSJ9" + } + ] + }, + { + "id": "claim_9fc1246f2d3e463da38ec3124e848638", + "statement": "union_datasets defaults include_previous_versions to false and returns only the latest version for each unique input _id in that mode.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-union-datasets.rst#L75-L80", + "version": "repo-lines-v1:sha256:0e09b058abfe8cf7e536e3561c31945270d9688efc055cffe8708156d7ba1c8c:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTdlMDU0OTNiMGZkN2M4NTVmMTViODc4M2ZkMGM4MGJlY2UyMjFmZmE5NjNmYWQ5NDljY2YxMGUyMmU3NmIxZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjAxNTY4MzE3YmNlNTM4YmI0MTNlOWQzZGUzMzcwMWMyY2MwYTYzYmM1ZjNhZmUyOWUyMWM5MzJmYzcwYTk0ZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDhjOWU4YTI2NmQwOWViZmQwZmZhMzNhNThmYTc3MjZlNThiY2FiNjUxZDM4ZTcwYWJiYTBkZjQ5Y2I3NjVhMCJ9" + } + ] + }, + { + "id": "claim_eed06608798448b7ac588accf4cabf12", + "statement": "merge_datasets leaves entity ids unchanged and combines already-shared identities across inputs ordered by _ts: latest chooses the newest entity version, while all returns the latest per-dataset versions keyed by dataset id; this differs from equality-based merge and per-property timestamp selection.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/time-based-masterdata-management.rst#L17-L19", + "version": "repo-lines-v1:sha256:05d3d9d8a555569ad5015bbead022f7d9ee52e2c89d0600d84575e84814362b0:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjY4YWYyODExMDAzNjA1N2M5ZjczODI1MjM5MDVlMTFmMGMzYzhkOTU1MjljYzNlZjMwYjYzYjhlYjk0OTFhNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTI0MDBjOWRjMWQ5MmQ5ZTI5N2NhZmZiNWI2YTRhMWM2OTZiOGVkN2QwMGViOThiODFiOTM2MjZkZTJlMzJmZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjJlMDUxMjgyNzkwY2MyMWEwOTAyYmY4OTJkYWU1ODA4YWIyZGQyN2Y2NTJkNjc5ZDcyZTFhODZlYzNmN2JkNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzc2OTgwZTkxNGZiOTc4ZjhkMzE4NTVkNzE4OTBlZWUzY2I1ZmVhZTFlYTgzZTkzZTJkZWMyOTgyZTBiMTg3NyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge-datasets.rst#L6-L14", + "version": "repo-lines-v1:sha256:5f32213bc3a5b86cface87c5083663f48918c9746e51a9cfe3fcc15c6d3363b9:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTM5Yjg5OGZiYWUxYzY1NzAxODA5NGM3ODFkOGE4MzM1ZGI1Yzc4YjQ1MGJlMGUzNmIzZTI3ZDY3MTdiZDljNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDQwYTkzZThiNTNiYjJmNjJmNzcyNGZhYjk2NmMzMDg2MTNmYzRiYzU3MjU2OWE0OTRkMGQ0OGFiYzBkM2Q4OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODkzYTNkZmYzMmIzZDU2MTU3MmZkOTcyN2NmZTFhNTNkYjBjODljYjA2NTZjNzU5NmE3YTA1NWQ2NjQ1ZjRjNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjdlM2NjOGZiMjE1ZDM0NTk4MDRlZDQxMzlmOGUyMjFmNGNlYWM3Yjg0M2Y4OTU4YjlmYjhiNDBkNzVlNGNhMyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge-datasets.rst#L75-L90", + "version": "repo-lines-v1:sha256:8ad6b17cdabc3056a1523bf8fc0eb185f9676df3aaaacb0439d5ed3cb884d0da:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM5ZGE1NmMzNzVlYTQ5ZjM3N2E4Y2FlNDI1OWIwNTQ2NjdmMTIxMTBkOTEzMGY1MmQzMmVhMGIwM2EwOGJjMmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5Zjg1YTU3MWQ0ZTkxYzI2Zjg5YTNjMDE5MjQyZmUyODkwZjU5NWVmMjI0NzI2ZWRlNzMxMzYyZjRjYjU1ZmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNjODAyMWMxYzg0ZDE1ZWUxNzJkODMwYWQ5YzBiZjA1OWYyZjNkYzcyNWUwNWRjNWUxMjQ1NmZmYWEyYjBmNWYifQ" + } + ] + }, + { + "id": "claim_0319909cc9114569a057b952cb790969", + "statement": "The merge source infers sameness transitively: if A matches B and B matches C, all three form one merged entity even without a direct A-to-C equality rule.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L6-L10", + "version": "repo-lines-v1:sha256:e742c9ea582e15ed1628e88f995be73c55a3cdd6c0200d53dff0e8f7ed4b8976:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjRmMmJlOTdjNDRjNDNmYjg2MGYwMThkNmU5ZWQxN2IyMzFmY2JjODY2ZjU1MmY1NWY3MDllODc2Njc3OTI4NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2NlOTFjNGU2ZmM5YzUxY2JmMmU0NDQzMDhmYzMwMzQ0Njg2MDA5Y2RiZmE4N2Q4ZjI3NjJhZDMyZjBjOGRkNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWU2NDNiMzVkOGQwOTljMDcyNWM4YjgzOWRiNjg5ZGQ1N2VlYmQ4YTBlZWUwODU2MjNkMTI0OTE3YTlkNTZjZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTNiOTQ3YTE1Nzk5NzNiZjg0OWIwYzYyMWUzNDZiZjAwMmJkMTdjMzk2ZWYzYTUzNmViYjc1YjI1NDA5NDA5MSJ9" + } + ] + }, + { + "id": "claim_8f6ff9663a164b2182c937a4d74fd27d", + "statement": "Merge equality uses DTL join matching, where any overlapping values suffice for scalar/list and list/list matches; null or empty-list equality results do not cause merging, and the join guidance recommends tuples for composite-key matching rather than separate individual joins.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L22-L30", + "version": "repo-lines-v1:sha256:aa1d41fe9324fee5e082f91848ddbde769d206487450aa8acae6695335572340:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmJjMzIwODY0MGJmMzFjNGNlNzgyNmUwODZkYmZkODFiMmJjMDRlZjVjNWM5OGFhZTA3OTkyMzdkODQ5ZmQyZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzJjODBiZGIyZWQwMmQ0M2JiNzBhYTE3NjA2N2JlOTdkODg3YjQxMzM1NTcxNjllNWJlMGM0NThkMTYwZmY2YyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2Y2MGMxMjJkMDcyNTMxNzgyOGZkMmI1NDUyNDFmYzkxMzZmMWM2NjdmNGViNzM0NjU3NGM0YmEyMmY5NmUyMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2Q2MTI3MTQ4OTlhNzU2YzUxMzJhNmQ1ZjY5YmEwYjU4ZmQ0ZDFjZjkxZWU4ODVjYTdmNzYzY2JmMmYzM2YxNiJ9" + }, + { + "resource": "repo://hub/dtl/joins.rst#L25-L50", + "version": "repo-lines-v1:sha256:45c0a2173bd231406f1fabf6c4036b1d104330d590e998926e17e84779199297:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwOTlhYThmMTYyMGFlNjM2OWM5YTMzY2Y5YzMzODAwNWViNWY4YmQwZThlODljYTA0ODVjMTIxOTc2NjE2YmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYzYjcyOTMyY2YxYzc0YWQyNDRlNjQxZGJlZTU2N2Q2YTdhNzRjMTczN2JmMzJjMDgzNjVhYmE0YzdmNDY3MTYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI5ZGMyMGIxN2ViMzljMjVmZmMxMTc0NmJkYzY5NjE2ZjdlMDEzMzg3ZjhlZmRhMDg3ZmZmNjYwOTUyYTgwMjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNiZWFiYjIxYWEwZThkZDQ1NGY5MjdmYTIxNDBmZTQzOGJlNjkyNGQwODQ1YmZhYTkzZGRlMzE4OGFlOTY0NjQifQ" + } + ] + }, + { + "id": "claim_39dd4e730e5d475086d817602f35bdab", + "statement": "equality_sets is the preferred grouped syntax for merge equality expressions but expands into ordinary equality rules; both properties can coexist, and overlapping equality sets can connect into one larger set without a configuration warning.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L146-L158", + "version": "repo-lines-v1:sha256:c123b3e8d7f2bf0bacefed9a4a568aa9de72a937665f743e7cc5c79b6f189cd6:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFlZDdiZDQxOGEyNjc1YTI2OTkxMDllYzRjNTI3M2M4MzAzOTc0NmVkNmEyM2Y4Yjc1MmMxMmIxMDAxMGFmZWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjYxNmU4OWVhOGU3ZDYzMjRlODY2NGU2N2MwOWYzNzYyMjYzMmNjNGJkMzk4ZGE1MjBlM2U2NzY3MTIwZDUxMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE5MDQzOGNkNDg5Y2ViNGJhMjc2YTA2ZGRmNzYyYzg3YjhiN2YzZjNmNDA1NzI0NjU4OGFmZDJjZjcwODA3YWUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L272-L325", + "version": "repo-lines-v1:sha256:e2fb13d971a4eb24efc902ee2697367eb6b28ee1e2ee941124b0d33e309fc737:eyJzZWxlY3RlZExpbmVDb3VudCI6NTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3ZWQzNWM5ZDBjZDAyOGNhZTZkOGE0NDQyNTQ0YjNkZDIxOWQwY2IyMTE5NGFkOGM1YWE4NWE4ZDkxMzQ5NWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM2M2Q1MzVjZTM4MDYzZDZiNGM1MWQ4YzM4NmE3ZjliM2U1ODBhMTRhMTBjMDdiMTk4ZGZhZjE5YzkzYTNiZmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUyMTE1MzFmMTk2YWNjYWYwMmMxMGI3NmFjMDY4NjU0M2ZmNTcyY2UyMWMzMTU4NjVmYmMyYjg4N2FkZTdjYTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjliYjgzMTFkMTIyNDU3MjVkNDg3YzNhNDkxOWMxZTBjNDNlZDlhNGI4MTk4OGIwYTk4M2M4NDFmZDc4MjVlM2IifQ" + } + ] + }, + { + "id": "claim_3e1d0126995946fbbaac095ad74fd7ff", + "statement": "Merge output identity is ordered by dataset position and then input _id: composite is the default and combines all ordered ids with dataset offsets, while first uses the first ordered input id, so identity depends on configuration order and group membership rather than arrival order.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L160-L187", + "version": "repo-lines-v1:sha256:982b22595ebb27c855372fca289cddc4520ff4610828933e9ce9ca87bc61737e:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE4YTJlYTc3YmU0MTM3OTcxZGMzNzQ1ZWY1ZWQ1Y2E4MTljZDBhYzk0M2Y2YWVhN2Q3MTJiYzBjZjc3NTI4N2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdmN2RiYTRkNmZhYjY1OGZiNmMwYzJiZmE0NzAyYTcyZjk0YmYyODEwOTFkNzZiMDQ1ZmY2MTBlN2Q0MGVmNmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgyODQ2YzIzZTVjYmIxZDRkNDFhZDEyNjRhMzM5YTFhZTUzOTE4Njk5ZWI1MzY4Y2MwMGIwNzQ2NGE3MzlkZGUifQ" + } + ] + }, + { + "id": "claim_734a4695c5fb4cd5a98a7caa1554cb03", + "statement": "Merge collects original identities in $ids; if an input already has $ids, its intermediate merge _id is not added as another original identity, allowing downstream merge layers to preserve the underlying identity list.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L151-L156", + "version": "repo-lines-v1:sha256:a17f50b3df6dacaeb59862b97c2864ce4614aceefa80da5775365ae178e4135a:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDk4NWRjZTMxYmFlYWNhZTgzYWNmYWQ1YzM0MmNlNmY1YzlkNjMxMzE5NzA1N2U0NjMxMmIyZGQ4NDdhY2UwZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWEyMjczMTE0NzRiNjA2NDBjZTllYzBjZjVkMjZiZWY3MDZjYTdjNWVkNzA3MTg2MTkyY2VkYmU1ZWMxOGFlNCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjdiNTNmMmFiMzlmYmI2ZTNkNzhjMzg0ODY2ZmE4Yjc4NjI5MGNiOTY1YmU0OWFkYjRmODQwZTM5NjEwZmU0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzdlODk3ZjlmZjJiNDU3ZDUwYTIwMDA1MmQyOWRjMmMyMTk0MjhiNjg2Yjg1MmJlZDFjM2NjYjkwMjI0MWZiMiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L431-L437", + "version": "repo-lines-v1:sha256:73e0c9ded6abb42916c3ec8a4ed8b559bbb819ee8097a60ecbeb9dbaf7a47da2:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjY3OWU3Mjk1NWUyMzM1NmI5ZmYwNzk4NTQwMGNlZmUyNjU4MjZiY2NkZjlmYzA4YzZlMWZlNWRhNzhlZTczNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWFhOWY1ZTA3ZjQ5ZGYxMzMzNDFkZjg5ZWVlMTQzMzRlNGEwOWQ5ZTFlYWU0NjhlNWM0MmJmMzUzM2NhYzg0MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNmMwYWExNTcxYjgyNTU1YWQ4YjA4OThiZDQ1NmRhOWVjOTBhOTU1ZmU5YWJhMTlmODRiODljZmMyYjdmYTc1MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_a1bcca0faac848348fad6de1993aef13", + "statement": "With namespaced identifiers enabled, _S.$ids dynamically wraps _S._id as an NI if the source entity lacks explicit $ids, using identity-namespace rules; this rewriting can interfere with inverse dependency-tracking joins.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L15-L17", + "version": "repo-lines-v1:sha256:bf0ec01c5c56657ee3dc601fbe6150cfcf4006bf0371ff70722617b97bf5acd0:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjY3YzFmMGExYmYzNDJmYjE0M2MyZTcxZTg0Y2E4MGM3ZWRkZTExMjE4ZmFhZjA4NmJkODA0ZGQ3MTMwOTgzYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDBmOGRhY2Y4ZWY3NzRmYjI5OGM3ZDQ0MTI4OTQyZWU5ZTZiOWM4MWFjMTU1ZGNmMmJmNDAxMDllMjU5YjM4NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjgwNmNiMmI0ZWQ2M2ZlOGQ1YjhjNzkyZmM0YzZmMTNiNWViOWU5YzRmYzcwYjU3YTYwNTBjMjBmOWRiOGExMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_5213d8364f5645cda1707e57f1c758ee", + "statement": "When changed merge membership makes an old output id inapplicable, merge emits a delete for that id with $replaced set to true.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L167-L173", + "version": "repo-lines-v1:sha256:6c482e6bb444e324bca75249c2606467d7f546dd13912faaa0f5b95347d130eb:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTI4ODdhZjRmNWI1Y2FiZTQ4ZGE0MmJlNDIyMTAzZGM1ZTg1ZjdmODhmNjQxZTY4YzRjMjcyNjE1OTRkMmM5OSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWMwNzBmOTQ0M2ZlNTE5ZTg2YzgyMjk1Njk0ODJlODg4NTk4OWI0NTZmMmNlZWQxMzY1YmJlZjNmZmUwNDk1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmFkMDhjNGQ2YzhiOGM2M2ZhNzg1OTc4YTM0MWY1YzkwOTQ3ZmUwMzQ3YTljNzYwMDMwNThiMDBmYzJlMWVmOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTZjN2RjYTZmNmFhNWRhYWVkNmY5NzZmYzU1MzY3NTRiN2I4ZGUyNTVlN2I2OGM3ODQ0OGRmMjQ0OWI5YWU5ZSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L12-L16", + "version": "repo-lines-v1:sha256:834f38e9d156d3198d777e8e46350b746f8c68776c67d081cb17bd9523155eb7:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODUwMWUwMWJhNzYzNjg3MjdmNGExNWJhYzA1OGY5YzFhNTY3YWYzYzA1ZWY4MGNhNGEwYTJiNzU2OTc2NDY2NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzRiZDQ3OWIyNWI0MWE5MTBjMGM2OTFkYWFkZWU0MGRjOTNhMjcxZmIxZjBiYzk0NWMyMDg4YWY0N2IxNzk4YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDA2MWZjOWI4NGE1M2U2MjE2YjM3ZTU1ZGYwM2FlNjk5MDIyMDA3ZmFjMjE5ZGQ5OTQ5MzE3MDU3ODEzNjczMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMmU2YmJmYTJlOTQ0OTQ2MGJkZmYyNWIzYThmZmUzYTA3YzUwYTYzYTk5YzBkZGEyYzE2MDgwNjYzNWNkOWJiMCJ9" + } + ] + }, + { + "id": "claim_3cb74fd36c544cdf8d2eea8cc8af3f75", + "statement": "Entities deleted in a merge input dataset are not merged with live entities but are emitted as standalone entities with _deleted: true.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L18-L20", + "version": "repo-lines-v1:sha256:0cee48225e0460b0800ff5142192196e627a04bc7cd6555143397de54e3a9704:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTk3MmE5N2Q5ZmI5OTFiNGFhNjVmYzE3MzBlNjE4OTljYzM4MzYxODg0Nzc1ZmE0NjI5YTU2MDA2NWYyNzI0MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNmQ2MTNmYWE0MmIwNzBhNzZlMGY2ZDhmMzUyYTM3MzJhYzA5NGRkYWIxMmI5YzAxYmU5NTExZGJmMTRhNjRjYyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGZhMWNiZDYxZjhiYzg4OTZhMzUzOWIwMjc5ZWU3NzBjMmZhM2I0YTAwMDEyNDZiMWU0NTI5MjYxYmJhZjkxNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTU4MzkxNjQxMzgxMjIyN2M2NTAzYjUxYjFjYzA4OTJhNjIyOGUxZTVmYmMyZWMwYmNjZTZmMzhiZWY2NDJiYyJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L412-L414", + "version": "repo-lines-v1:sha256:5f6814ab9340e1088f78255e8cf71ac499d9a08b17ae51b0a3ef90b067eeb89e:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTg1OTg1NjQ2MjE4M2YyOGUxYTY3YjkyMDIxNTI3YTRhY2NiZDc5NmYyNjhiMjc3NzgzYzMzNTU1Mzg4MDJjMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTBiMDA5MTJjNDJkYTUxNWQ4MzU4YTM2NmY1NjY5NDNhZTZiNWFkOTAxMzBhYzU3M2Q0ODBhMDE2ZjY2NTUwOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2ZiZmE1NzZkODZhN2E4ZGNmNGZmMTA4ZDVmYmE3OWU5NDhlMmVhNTFjMjU1NjhjZDBmNmViMDE2NGJkNzA2MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2I4OWU2YzNkYzBjZWM0YjkyZTFmNTc1OTIxNzg2NzhmNjAwOTczZWUwOTQzMmY4MDQ2YTM2NTA4ZTgzYmY0MCJ9" + } + ] + }, + { + "id": "claim_59439a5349ff4a628f5bd9b19c3be23d", + "statement": "Merge version 2 with identity: first supports overlapping input entity ids only when equality on _id or $ids covers all datasets with overlapping ids.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L32-L38", + "version": "repo-lines-v1:sha256:15d61ed6dd4b06613aa45a4b70e93d5d007dfcb46a04cfd00e1b241fd85dd11e:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTAwNDAxMjJiMjNhMzk0YjI2ZGE3YTdjODBkYTZhNTE4ZmE3Yzk0MjI5ZDJmOTk0Y2E2NWRjYjg5NGY1OWIwZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYmJjYWY0YjI2NWEwYTAxZDVjMmI3M2U0NDAzZDQxMzQyYWZhOGJlOWQ3OTEwZjJhN2ZmZjlkNjViMzY3YTk5ZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2Y2ZThjNmJlMTM0ZjJkZTUwOWRiYWYxNWUxZGFhMTQxNDkyNThiMDE2NGJjMmUyYTNjZDI1MDIzN2JjZmFiMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiM2Q2MTI3MTQ4OTlhNzU2YzUxMzJhNmQ1ZjY5YmEwYjU4ZmQ0ZDFjZjkxZWU4ODVjYTdmNzYzY2JmMmYzM2YxNiJ9" + } + ] + }, + { + "id": "claim_f3c04be410f74f79b43b9c958f116570", + "statement": "Merge's default strategy unions property values without removing duplicates, while compact removes duplicates, drops empty-list properties, and converts singleton lists to scalars; these strategies control representation rather than business source trust.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L189-L209", + "version": "repo-lines-v1:sha256:fa8c8ea81210f332d5c43d9fbca91b0a358f534f2df3e243dcfad9f9de0f901a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM5ZGE1NmMzNzVlYTQ5ZjM3N2E4Y2FlNDI1OWIwNTQ2NjdmMTIxMTBkOTEzMGY1MmQzMmVhMGIwM2EwOGJjMmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjEwYTY0YTVkMzZhMjRlMjc4MDE5YTA3NzYwNmJjMGE0NWJlYTA0NTBlY2U4Zjk3YTQ2MDgyZGVjYTk1ZDdjYjMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkwMTlkYzJjNzExOWVjNTA3YzkxYzE5YWE5NThmNzE4MjZiMGRlMjE3ZWNjMmIxZDAzZjE4OWJkMTQ4ZWEyYWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE1MjlkMGM1NjA2NDQ4MWVlMTBjZWQxM2MzMzdmNzZlZjMzMDg1YTdiOTRjOWNlNDRjMjgyN2RiZWEwMTNmMmUifQ" + }, + { + "resource": "repo://hub/tutorial-getting-started-connect.rst#L88-L96", + "version": "repo-lines-v1:sha256:93555b7207447cdbd011f810a9e6dda7404b3fbd47d6c434d7524122fc28975d:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjkzNmM4YTViOGE1ZDFjNDg3M2E0YjY3YjZkNWJlZGJkMzhmMTQ1YzVkNTMwOTUyZDNiNzc2NDY1Mjg3NmY3YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmI1MjdmYzVmNTFkNmM4N2IzN2ZiNzFmODNjMGNjY2NhNDQwYjEwOTVlM2QzYTVkYTEzMzQ3NThiNDAwNWQxMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjczNmNjOGM2YzI4MzNhZjYxMDkyMGFkNzZmNTQzOGI4MThjMmE5OGQyODJhNTRiZDYwYTA1NWNmNTM5NTAxYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzFjNGE5NjYyMjU0MTllMWNmYmI2YTA1OGE4MDcwNWNjMTFlZDRhZmNkNTNmOGY5Y2Q4YjljZDg3M2JlMzM2OCJ9" + } + ] + }, + { + "id": "claim_df24927b58e940b187959d2082ab578e", + "statement": "Merge strategy list exposes the contributing entities under $merged for custom combination, excluding internal fields such as _ts unless include_internal_properties is true.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L211-L228", + "version": "repo-lines-v1:sha256:5172b8c55bd5e6e5199bba50edee3a2d657ee9f860dfc494221a17ffef375c69:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI2ZWYzNmQzM2FkZDU3YTMwNGRiYzFhZTkwMmYzZTYyNzZkYmRlYTljZDkxMjUzMmFkZjllMzRmZGNmZGZjNGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwMTU2ODMxN2JjZTUzOGJiNDEzZTlkM2RlMzM3MDFjMmNjMGE2M2JjNWYzYWZlMjllMjFjOTMyZmM3MGE5NGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ0M2I0NTNkMzE0ZThmNTUzMjg2NTliOWM0YTczYjZiNzQ3N2VhM2FhNjkzY2I5YTQ2YmUwMzY0MTZjNjFkMDIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA3ZDc0YzliN2Q3YmQ0NWJiNjQ0NTg0ZTc4ZjgyN2MzZmUxODlmOTM0YThhN2RlZDJkYTQ1NzcwNDY2OWU4MjcifQ" + } + ] + }, + { + "id": "claim_758bacf6525a485cb8a522df54db99bc", + "statement": "Golden properties are explicitly selected or composed reusable global values retained alongside competing source-specific facts; merely collecting data in a global or combining values with merge does not automatically select a business master.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L893-L898", + "version": "repo-lines-v1:sha256:24d52d5b14c736bc86ad6761937fd320eca2e18c7400298ca197d92382557cc8:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzc4Y2ZlZjliY2I5MTdkNWQxMzg2Mjc5YTRkMDRmOTliZDVjZmFhZjM2MmJlNGEwNmVkNzlhZDg4M2Q2YWJiZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWM4MWE4YTRkN2NjZTZkNDRkMmYyMTA1NmFkYzRjYzI0NGJjNTYyOTYxNmU5NDk1Yjg0MmJiMmE5NTE5MDNiNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2YxNGJiZWFkZGMyMjY1OTUzZmQ0YjNiMWE4YmM3YzEzNmQ5NWU1Nzg1NDhlNGU2YzRiNTFlMTkzMzAwMTg2MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjg1NTZkMTMyNzFmZjA2NTcwM2Y5ZmZiZWE4YTM1YWYxMmEyNzM4YjY2ZWMwNWMxMzdkZWVkMWJmOGY3MmI1OCJ9" + }, + { + "resource": "repo://hub/features/global-datasets.rst#L10-L14", + "version": "repo-lines-v1:sha256:98a45867cd21b08d2f67e84485f95dfbeca8e730ef6bfac6769df1c1ba0ab627:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTUxNWVlMGQ5YjdjZWM3MjZhN2Q3ZGMyOWE5ZTIzMTEzYmUyYjRmNTBjNzc1NzMxM2JhYTkwMDQxMGRmY2U0MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYzZmMjUyMmY0Mzk0NjZjNmZlOGRhNmU4OGEzYjQwY2NiZWM5MzU4NThiNmYwOGI2NjU0YmUxZDkyM2Q4NjFmNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmJiOWQxNGVmNmQ4YTZjNTQ5OTI4OTg3MjVjYmRhYTczZjY4ODhlNDQwOTRmMDJjZTk3Y2E4MWQ2ODVjMWI4NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWRjNTdhYTBiMzMwZDQ1NWM3MWEyMzhiNjY5N2FkYWJhMjI1MWM3OTA1MTUwOTFhZDhmNWVlZmI1MWMzYWQ4NyJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-connect.rst#L46-L96", + "version": "repo-lines-v1:sha256:12584561e171558d0a890c5018bd8421d31314053d01482019c7a27113078364:eyJzZWxlY3RlZExpbmVDb3VudCI6NTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE4OWQ1ODIwNzBhMGRiZDI0Y2ZlZjE2ZjBkZjNiMGZhODE0YjBkYmQ4YmMxYTg4Y2NhYWFlZGZmNzY2N2M4MjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJiNTI3ZmM1ZjUxZDZjODdiMzdmYjcxZjgzYzBjY2NjYTQ0MGIxMDk1ZTNkM2E1ZGExMzM0NzU4YjQwMDVkMTIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhMGYyOWJlYzgzNTY0ZjQ0MDEwMTM2ZDZkYmQ4NTRkZmI0Y2QxNmUxN2I2YTZkZTBlYmI3NmRiN2E4YWVlZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImMxYzRhOTY2MjI1NDE5ZTFjZmJiNmEwNThhODA3MDVjYzExZWQ0YWZjZDUzZjhmOWNkOGI5Y2Q4NzNiZTMzNjgifQ" + } + ] + }, + { + "id": "claim_b8823a541e414e77adf2e7bef0ca4c6d", + "statement": "The priority golden-property pattern uses coalesce with candidates in trust order; coalesce returns the first non-null value or the first candidate satisfying its optional predicate, independently of the dataset ordering used to select merge identity.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/golden-property-priority-pattern.rst#L1-L3", + "version": "repo-lines-v1:sha256:7ebea2d444834b6f93f35da2463f5cf1bdd81b87a97157be2816077db997aad2:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzAwY2NlOWU4ZDFiZDcxOTYxOWEyOWUzOGNiNjliZjNlNWVhNmYzZjQxYjUzZWViMzE2Njk1ODliZWNmZjY3NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjBmNjFmNDRiMTUzM2M2NDAzYTBiN2E1MmYyYzllN2MzNjM2OTY2NmNiY2E2MjBkYzAwOTM5ZjE3ZjZlYWZjMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L176-L183", + "version": "repo-lines-v1:sha256:9c6c51c09bf79d9b0d9fb67fffd68ab5a1697ac9d698067d1305fa3205d47c86:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTc4NjQwYTNjYmZhNzY1MjFjZTg1ZTdlMmUyNzllMGJlMzQxNmJiYTg0YTRkODMwYTZkNzk0OTNkMTU5OWQxYyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDliZDc2NDA2NmU1NGM0NGVkYTc3ODNiM2IyZWEwYWNlNDQ4YTUzMGRkOGI2OWY5NmFlZTMzNzcyNTk4ZGQ4ZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMmNmYjIwZGUwMGQwYWQ5MmI4NjYyMTkzZjhmNTk2NTQ4NDY5MTA2N2I4OGFhYzRmM2ZhY2U0MjdjMzVjY2UxNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGYyMzE5NzU5NmNhNjFiMTE0ZmQ2NmI4MDM0MjNmMzg2MGU0YjRmMjkxZmVjZmFiZmRmODc0ZGI0YWJiYmU4YSJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-nulls.rst#L18-L24", + "version": "repo-lines-v1:sha256:6ef1812bfb4a1eab392dc0edd71ecb3151638dea5048ae8a4e62a517f6d62f2e:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDE0ZmM1OWJlNDY2MDFmZTgwZjE4YmY3MDIyYzJiYjIwNzU1ZDE3MTA4OWYwYjc4MDFmNjJhZDk4OWI3ZTg4NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMzNGQ3YmY1ZjI5NWZhM2RlNWI3ZDU5NGUxMTQ0ZWQzMzhhY2Q1MDg5OWNjNmJhZWVmMTg1MjQzNGFmYzQxNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2FhZWI3ZWYyNjBhMTRmMWQ5M2MzZWRjYzc0YzAxZGRmYzhiOWE3OGY0N2NkYmViMmU4ZTE5ZTc1MTIxZTI4YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMGUxMTA0MjhmNGQ3NTNmY2YwNTQwYjkzNTE2OTk1ZGU5ZDA0YjA0OTE5MDJjMjQ4OTI5ZDIxOWU2MDdiZDNmOCJ9" + }, + { + "resource": "repo://hub/tutorial-getting-started-connect.rst#L93-L96", + "version": "repo-lines-v1:sha256:51cd8147548a693f38617f6066af6ef8b7fe0002d4d69a80b66990f41e40ce99:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWUzNzA5YjE2NzM4ZDUzZDVlMDZiY2ExNWY1Mzk1ZjFmZTc2OWQxYzJhYmUzNmMzNjg0ZTRhZjQ5ZGFhYWZhZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmI1MjdmYzVmNTFkNmM4N2IzN2ZiNzFmODNjMGNjY2NhNDQwYjEwOTVlM2QzYTVkYTEzMzQ3NThiNDAwNWQxMiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTEyZTcwYjM1MWIzZTlmYTFlOTViZDIxNTA3NjBhYjBkNjA4YTVkMDRlNjRhM2QxOGYxYjg1NTg1MzJlODNkMSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzFjNGE5NjYyMjU0MTllMWNmYmI2YTA1OGE4MDcwNWNjMTFlZDRhZmNkNTNmOGY5Y2Q4YjljZDg3M2JlMzM2OCJ9" + } + ] + }, + { + "id": "claim_600644e272a8472da3f2ce83de71925a", + "statement": "The quality golden-property pattern recommends normalizing quality scores across sources and selecting the value with the most relevant score; it is custom business-pattern guidance rather than a built-in merge ranking strategy.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/golden-property-quality-pattern.rst#L1-L3", + "version": "repo-lines-v1:sha256:ef14061d1163a3b5a0a1b48d3682f945e890b9bfc748f581cbeb46c59ed63544:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDM0OTQ4YTgzN2I0Yzc0NWQxYWM2MDhhMzEyZTI3N2U1NDBmMjhhMThhYmQyNWViYWQ1MDczMmY1ZTY3Y2E3YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjg2OGMzOGUxOWIzZTNhMWZjNjQ4NTgyNjI3OGU5NTU5MzBiOTBjOWY5NjZkZjJkODQzN2IwMDAxMzUxNzhlYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L189-L222", + "version": "repo-lines-v1:sha256:a4ccd2a27bf091ff045c77f00e56d4885c5aba7c376098f8cf9641bad50a5c3a:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM5ZGE1NmMzNzVlYTQ5ZjM3N2E4Y2FlNDI1OWIwNTQ2NjdmMTIxMTBkOTEzMGY1MmQzMmVhMGIwM2EwOGJjMmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQzOTgxZDM0ODlhNjYzNTk4MTJkMThkNjM5NmYxNDA1NDBhMTVhOTkwNjBlNWYyODFkYWRjNTQyZDJjMmYzMDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkwMTlkYzJjNzExOWVjNTA3YzkxYzE5YWE5NThmNzE4MjZiMGRlMjE3ZWNjMmIxZDAzZjE4OWJkMTQ4ZWEyYWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA1MmZmNmViZGRkMmQ4MmQ4ZDk2M2M0NWM0YmFkNjdiNjgxYTJiMGQ4Y2MyYjYyODBmZTk2MzgyYTY3NzA0NmMifQ" + } + ] + }, + { + "id": "claim_8839a817bed94d2b9b2d722530179714", + "statement": "The last-updated golden-property pattern requires reliable propagated source timestamps, highlights feedback-loop risks when syncing back, and illustrates a per-property $updated dictionary as an alternative time-selection representation.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/golden-property-last-updated-pattern.rst#L1-L3", + "version": "repo-lines-v1:sha256:9328e4bc39334d7999bb435994a974dc2659869ad5a19874532ba2d431c883d4:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTlkYmRkOGQ2ZmEwNDdiYTA0OTM5ODJmZDg3Y2Q0OTAyNWQ3YmFlOTA0OGE4ODBhNDExMzY3ODBmZDcxOTAwMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjhmZDE3YmUwZDc4NWY0MjgzZTc3ZTc3NDdiM2NjMmQ1YTIzZmRmMmQ3MzI1MzQwMmZjYzQwOWNlYTA3NWQyYiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjlhMmM3NmE2YjQ3NzlkMWQzODZmZDQ3YjNkOTNhZjU4NDJlYTljMjc4NjNiN2RmZjc4YjRmMzhjMWM1NzIzYyJ9" + }, + { + "resource": "repo://hub/documentation/data-management/golden-property-last-updated-pattern.rst#L101-L150", + "version": "repo-lines-v1:sha256:64b2e32af98395f2d650c93cea42123735e08c223c24ad325ad8ab9d7b02e319:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYzMmNmMjE1OGVmZTE0NzI5YTVmMTI3N2YyZTM0ZDBiNDJiZDNhMWI5NDQ2M2ViNWQ4ODk2ZTBkYmU1NzgxYTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJhYWU4YTBjYTc2Zjk4ZjdiN2RjNzk4NDk1MWQ2M2U1N2RiM2M2NDU1NzljYTUxYmFkNmE1MzlkNjE0ZWRiYmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImIwMThkZDczNTM1MGQyZDIxMmNkYjgwNDM1ZDU2YWY5OGRkODU0NGVmNjJkMzU2OTZjN2Y3ZTBiNDU5MDIwNGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMmViZmNkMzEwNmQ1NWQ5ZjVlZjg2NzBlZjk5MWY5OWEyYTkwYTEyZjg3ZjE2YTk0MDYxZGI1MDRjM2FmOTUifQ" + }, + { + "resource": "repo://hub/documentation/data-management/golden-property-last-updated-pattern.rst#L23-L53", + "version": "repo-lines-v1:sha256:3c9acf570d3713274d2906306586e7bcf24566b693a33206ae64758db56b77d6:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYzMmNmMjE1OGVmZTE0NzI5YTVmMTI3N2YyZTM0ZDBiNDJiZDNhMWI5NDQ2M2ViNWQ4ODk2ZTBkYmU1NzgxYTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImUyYmRhNzI3MWQxMzZhNGNhZDIzY2VkYzlkMDI2NmVhM2QzY2EyMDM1MThmMzcyNmYyYjE1YTRiMzFmMjlhZjEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImIwMThkZDczNTM1MGQyZDIxMmNkYjgwNDM1ZDU2YWY5OGRkODU0NGVmNjJkMzU2OTZjN2Y3ZTBiNDU5MDIwNGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFhNzdhN2VkOTBhYTY5ZTQ4NTkyNDBmOWI5NzE5MzdjY2ZlN2QwMTEwMzVmZDgwOWZhZjg1NzkxNTAzNzEyZjcifQ" + } + ] + }, + { + "id": "claim_975e152c1c6a401bb7dae957e6c33712", + "statement": "The claims data pattern enriches a property into a dictionary containing its original value and metadata, while retaining the raw source data separately; time-based MDM can add $last-modified and end-time to describe property changes and claim replacement.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/time-based-masterdata-management.rst#L17-L29", + "version": "repo-lines-v1:sha256:ac8f904508a686728b317c9405611285eb790e90d2960bd33b29a03011b46c40:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2OGFmMjgxMTAwMzYwNTdjOWY3MzgyNTIzOTA1ZTExZjBjM2M4ZDk1NTI5Y2MzZWYzMGI2M2I4ZWI5NDkxYTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI4N2U1MmRiMDA4NTYyYTFkZDBlNDA4NjZiNjg5MzE4ZmUxODRlYTUzYzgzYTYyOTRmZGMwYzVmOTE0N2Y3NmMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIyZTA1MTI4Mjc5MGNjMjFhMDkwMmJmODkyZGFlNTgwOGFiMmRkMjdmNjUyZDY3OWQ3MmUxYTg2ZWMzZjdiZDUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjI2YTUwYWUwZTkwOGUxZDE4NDhhZGMyYTMyMGRlMTk1NGJiOTVhNmVhMzMzMzVjNmMwZTg4MmFjMjFjZjZiZDgifQ" + }, + { + "resource": "repo://hub/documentation/data-synchronization/claims-pattern.rst#L6-L29", + "version": "repo-lines-v1:sha256:039f0e2f647a4994b255542239b357e63f353acb365c6088111ef668dca73ed6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY2YzNkMjU4ZjU5OGQ0YWExYWM1MGY0ODhiMGQzMjJkNTZlM2M0YTFlMzJjZWMwMmIyODg2ZmU4YTA2Y2JlMjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAyODMzYTJlMTYyZDcxY2RkNTc3YzdhZDQwMmE4OWJiYWNhODI2NWFlNTcwOGI2NDc1ODA5YzI0Y2U0YmRkZDUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQwYTk3M2Q4ODlmODQ5OThiZDliZDQ5MDVlMTFlY2Y2NTRmMDJhM2FiMWI0ZTkwOTE5YjMzODYyYWRjNjliYWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ" + } + ] + }, + { + "id": "claim_2930d90801d64f2686003ea80a457212", + "statement": "Time-based MDM guidance prefers source property-level timestamps; if only an entity timestamp exists it initializes from that and maintains per-property timestamps on value changes, and if neither exists it initializes from the collect dataset's _ts and maintains subsequent property changes.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/time-based-masterdata-management.rst#L32-L44", + "version": "repo-lines-v1:sha256:f587a4d737f4e0c4564e5875ec29cf85564edce9bdbd4731c208c3d748059f79:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUzZTA5NmVmZTUyNWVhYzUzZmNkNmVmNmQ5NDBlYzFjYzJiMDRhOTc2Y2Q0Y2JiYmU2MWEwYTRjNjVlNDA0MWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI2NmIzMDY2YzA0YTM5YTViYzA2NWQwODE0ZWY0Zjk2MDQxNDQ5MTYyYmZiMGM5OTcxZDVhYzRmOTEzOTkxOTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVkZWE4MzkzOGEyMjU3M2VhZTI1ZjdiN2E2NWQ0MjAxMDcxODc5N2NiNDQ4MzNmZTgzNGFlOTBjNjEwMTVlOTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQ2Nzk1MzI5MjRlMzVlYmNiZTc0NWRmZjllOWVlYTA4YzM5ZDcyZWE0Y2JiMzFmNjBlMzcwOTViYjFmMzI2YWQifQ" + } + ] + }, + { + "id": "claim_1ba3ef9c24dd4645b30adadae083158f", + "statement": "Time-based MDM selects the newest current property claim by filtering out ended claims and sorting on $last-modified; its fuller history example also guards against incoming data older than retained property history.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/time-based-masterdata-management.rst#L116-L137", + "version": "repo-lines-v1:sha256:c685c386e9224be94b01b70fa0c2f8cfedd00728af0dc0a5cef908ae7e26b5ec:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIxZDg2MGExNjE1Y2ZkMjBlY2M5ODRhZmMwNmVjZTZhZDNjYjBkMjg5NWNjYzlmYTliMWJkMTQ5Nzg3OWE4NTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjljOTU1ODA0MmE5MjE5ZDZiZDRjMmY0ZTk5N2QwYzIzNzIzN2FlZmU4OGQyOTRkNTA3ZGU5YmZmOTFhNjFkNWYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBkNTEzOWI5YWFkNDVjNmU1NzZmYmRkYmNkNDBhNDcxZDkzNjExYzJmMmM5YTlkZWRlZTc1NGM4NDg3ZjVlOWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU0NTQ0YmM0MDg2NGZkMGFjNWRiMTViN2Q0MjlkOWVhM2I0MDM2YmRjOTI2MTUzYzcwYzBhYTAzMjI3ZTlhYzYifQ" + }, + { + "resource": "repo://hub/documentation/data-management/time-based-masterdata-management.rst#L204-L204", + "version": "repo-lines-v1:sha256:5dd93bef340098c42e69520521bbabdc96a67cae92ece502df428033249d4c0a:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWRkOTNiZWYzNDAwOThjNDJlNjk1MjA1MjFiYmFiZGM5NmE2N2NhZTkyZWNlNTAyZGY0MjgwMzMyNDlkNGMwYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWRkOTNiZWYzNDAwOThjNDJlNjk1MjA1MjFiYmFiZGM5NmE2N2NhZTkyZWNlNTAyZGY0MjgwMzMyNDlkNGMwYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYmE5YjYzMTRkNjJhYjM4YzY3NmU4NWE4NTllMjgzNDBjNDFmYmM5NDc1MDA2YWM1OGVhYWQyMDUzZWNiZGM4NyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDRkNjhmMTQ5OWQwNjc0YmFlNTc2ZWMzOTJmMDMyN2FjMjg3NWE0YjExMmJkMGUyZjBlNjEzYmFlZmY3Y2I2ZiJ9" + }, + { + "resource": "repo://hub/documentation/data-management/time-based-masterdata-management.rst#L49-L67", + "version": "repo-lines-v1:sha256:72a145635233fd32de4e8bc74ba6212110dee97235fa58400e981812eb51b9d2:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE0NTJjMTM5N2E3Yzk3ZGEzMmFkYmEyMWFmMWFhOGFlNTJjN2FhM2UzZWZhMDExOGFiNWJjZGQ4MjgwNWE1ZDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMwNjQ4Zjc3ZmQ1YTljNjNiM2NkZDBhZjQ5ZGFhMTI5OTIyMGI3NTQxZTg4Y2ExN2VmZTFhNmExMTRiOWZmMmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgwZmQ4NzYzZDM2NWU5MWRlNjU2NzFkZmFiYzg3MzczZGEwYTY4ZWZmMzY5YTk1YmRjNjBiZDNiMDk4MThjYjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjkzNGYzMDc3YWRkYzY2NjU2MmYwMWYxZjQ4NWY0Njg0MTE4NzA0NzBkMTkyNmYwYTdmODZkZTg4YTdhNDZmZDYifQ" + } + ] + }, + { + "id": "claim_0e3df6231a5144538a4d0f0817f37005", + "statement": "_ts records dataset registration time and is not a business-property modification timestamp, while _updated is an opaque source ordering/continuation token rather than a timestamp field for golden-property selection.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L103-L110", + "version": "repo-lines-v1:sha256:681f8687eb7bd55dfc1d42b81572af8069a01808487091c1176c7c7707537e12:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWUzZWYzMDRjZWQwNTAxOTg3MDhlNmYyMmZmNjVkMzEyYmE2MGE3ZDFkZjg4ZWQ1ZDViNTgyMmU5Njk5NGUwNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmZmOTkyNGQxZDgxNGQ5MmZhNWM3YTc1Nzc0N2QxZTUwNGNlN2Y5NmYxNWVjNjdmOGUzMTI2ZjM3MzUwMzYwOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWM3ZjM3NjMxODMxYjg3OGUzODVkZGJjZTZhNzg3N2VhMDlmYjc5ZTIxOTcyMThkODk0NWZjZGQ2MjI3MDc5MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDdlNDhmYmQ1YjYyZTI3Njg3ODJiNTE3MDQ5MGRiNWRiMGIyNGMxNjg1YzVhODgzMjdkYzFkN2Y3ZTY5MGI3MSJ9" + }, + { + "resource": "repo://hub/documentation/data-management/entity-data-model.rst#L72-L79", + "version": "repo-lines-v1:sha256:ef9d11140cd9b18c16ebd5ffe115f213641977af53a37431b7c1eb326143301e:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNDhkYmQwMTk5MmQ2ZDhmNjRjNjRlYjEyMzg2NzkyYjJhMmYwMjlhYTBmYjNkNWU1OGE1ZTdlNDc3MTQ1YTZiMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDRkNWRkODMyNDM0MTEyNTA1YTlhZTRkMTAyY2I2NWFmNDMyMWIxMmI5YTVjZmQ2N2Y1MWRlNjIyYmM4MDA0NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZGIxYzBjYTdmYjRkYWFhYmNjZTlhZWQ0NTY1N2MxMTQ5YjUyZTk5MDJlOWU2OWEzNjc0ZDZmMTE5MTYxYzZkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjUxN2E4Y2QxNGIzOTM3YjEwODgyMDkzMGI2OTllNTg1ZGRjNjY5MmE4MzYyMWJjNWM0ZDAwMGE5MDYzNjczZiJ9" + }, + { + "resource": "repo://hub/documentation/data-management/time-based-masterdata-management.rst#L17-L19", + "version": "repo-lines-v1:sha256:05d3d9d8a555569ad5015bbead022f7d9ee52e2c89d0600d84575e84814362b0:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNjY4YWYyODExMDAzNjA1N2M5ZjczODI1MjM5MDVlMTFmMGMzYzhkOTU1MjljYzNlZjMwYjYzYjhlYjk0OTFhNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYTI0MDBjOWRjMWQ5MmQ5ZTI5N2NhZmZiNWI2YTRhMWM2OTZiOGVkN2QwMGViOThiODFiOTM2MjZkZTJlMzJmZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjJlMDUxMjgyNzkwY2MyMWEwOTAyYmY4OTJkYWU1ODA4YWIyZGQyN2Y2NTJkNjc5ZDcyZTFhODZlYzNmN2JkNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzc2OTgwZTkxNGZiOTc4ZjhkMzE4NTVkNzE4OTBlZWUzY2I1ZmVhZTFlYTgzZTkzZTJkZWMyOTgyZTBiMTg3NyJ9" + } + ] + }, + { + "id": "claim_05ce009f248b4ae68394e34b9fe5c1f2", + "statement": "For hops targeting its own sink, DTL requires batch_size: 1 to see prior sink writes and sink.set_initial_offset: onload to avoid waiting on sink population; the last-updated enrichment example uses those settings and disables dependency tracking for its self-history lookup.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/golden-property-last-updated-pattern.rst#L12-L38", + "version": "repo-lines-v1:sha256:c2f28fb7b578be726352acdb8f5ed0ae41d9570e6ef9117c2a1ecc5e56c13de4:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNmYWQ3YWNkNWZiYWY0MmNlNzJmZDgxODQ1MGMwYmRkMWFlYjc2YTlkNDFkNmZjZTI4Y2NkMzNlZTJiZjIzN2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdmOWQ4NDMzYzM4MGFkMjI5M2FhNjY1NzE4MDExODg2MDIyNTZiYzMzY2MzMjVjNzRjYWM1ODk1YWU3MDExMDkiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY2YmZmY2U0NmQ4OTBiZmQ2ODcwNzI1MmFhZDIyNjFhNzQ2NzIyMzUxMzRhY2I0ZTZkODNjNWMxYjAwZGE5ODIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNjMmJkN2ZiMDJhN2IzZTFkNTg0MGE3NDU4ZDQ5ODVjMjZlNGIyZGNlMDdiODQ1NWUzZWM0NDFkMjM0M2Q4NGYifQ" + }, + { + "resource": "repo://hub/documentation/data-management/golden-property-last-updated-pattern.rst#L67-L71", + "version": "repo-lines-v1:sha256:6936fa91ed99af683bc837ef6d4b272d1af1d1c5de2fa2890f4598c005111cea:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODgwY2M0NzZiYThhMjgxMjM3ZGU1Mzc0YjYxYWEwMDUwOWUzMzRlN2Q2ODBkNWQ5ZjJlMzZjMTBiMjM3ZTc4NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjdlNTc4OGQ1ZDlkNzNkMjRhODFkYmMwYTVhNzRiZmE4MmM5YzNiM2FmOTllNTJhZjc5NmU5MGI0NjhhOGEzZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2EyZWJmY2QzMTA2ZDU1ZDlmNWVmODY3MGVmOTkxZjk5YTJhOTBhMTJmODdmMTZhOTQwNjFkYjUwNGMzYWY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYzBiZThkN2FjNjIxNmYyZjcyZDUwMDE0NWRmZmFmMWI0ZDllMzVkNmQxMjY3ODVmNmY3NjZjMTAzZjEwYTMyMSJ9" + }, + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L110-L114", + "version": "repo-lines-v1:sha256:8d32ec827f5f7dee45c45cd4f3852bef552101f13596fa6b3bdb4442a3e629b5:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGJlNDE0NDRiZTBiNzM5ZDgxOGYyNWQ3Yzg3MGNjMWU3ZWE3MTU3N2RhOGViYTgzZTM0OGFhMmY1ZGFiODUyNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNTU4ODgyZTcyMDE3ZTA1MzhjNmUyOThmNDhjNmU3MThkYjkyYmM4ZDBmNTVjNTMwZjFiNDRjNzNiODA5ODRkMSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODNkNDc5MjQwYjBmOTc4MzQ1ODQ1OGY0NTJmZTU1ODYzNzVhY2FiOWM4MzE0ODZjOWY2NWU1YThkODJiODY2YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOGM3OTJkNTdhZTJlZWNjZjFhN2ExN2ZkZWEwNDJhNzNhZjg0NjU1Zjg1ZmI0ZWRjZjU3MjEzOWYyYTg0YjJlZCJ9" + } + ] + }, + { + "id": "claim_cbed578c4a61406e95daea10168691ca", + "statement": "Late schema binding guidance maps target views using global properties or the target's own namespace, performs hops on global properties, and uses target-system identifiers; referencing unrelated source namespaces recreates system-to-system coupling.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L798-L800", + "version": "repo-lines-v1:sha256:fa22a5071fe08dd610db254fc1effeba3397fe9f1a4ba64c66b83320d0408b52:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzVlYzZjYmIzYjBlNGZlMDU1MGZlMzgwZTk0YjdiZWZjOWVlNTAwYTAwNmFiMWQyNDAwY2RiZDFhZWY2MzBiOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiY2JmYjcwMjkwNGQ2OWIxZGVmNTE0OGMxMjgyNGMzZDk1MDk5YzBlMzFjZmU1MTRmMmNhOTRkZGIwYzk4N2I3NiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjZkNWE2Mjk0MTljYTE4YTZjZDkxMDU2NDU1MWM3MDFjODM2OGNkZTZmMzkzN2MwZDIwOGQ0ZjJmOGRmZTM4OSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjNiMjc3N2RjMWI0ZTg5ZWU4M2M0NzMzM2FjYWZkMTMwYzk0ZGVkOGU0MjUwYWRmMzVhMmVhNDgyMzBmZTM4YyJ9" + }, + { + "resource": "repo://hub/documentation/data-management/late-schema-binding-pattern.rst#L1-L9", + "version": "repo-lines-v1:sha256:3a93bf0a0c068e8999938d179769ff43499d1719966046c646349c245477f533:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODhmYTE0ODdhNTE3ODhjMGVhMDg0ZjAyYmYwZTFiZGE3N2JlMGE2MzYyY2MwMWEzMzNlODlhOWUxNzg3MDdkZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDUwNWE2Zjg0MzBmNzMyMTdjOWIzYmZmM2ZkNTc0ODZhYmUxYTg1YmQwZmE2YmQ3ODNkM2M5OTA3YTBjNmZmZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjMyNGM5MjkxYjE2Yjk3NzE2NTI5ZTk2NjhlZjg0OWJjNjk0MzY4MjNiNzc5MGQzMDc4NTZlYTE3ZjJiYzQ0ZCJ9" + } + ] + }, + { + "id": "claim_83aafd0d0f2f4ac99b2d3ec8bd09ce66", + "statement": "Late-binding guidance warns that bidirectional sharing may require the original target object when patching is unsupported, and namespace removal may require explicit rewriting of _id rather than passing a namespaced or composite global identity through unchanged.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/late-schema-binding-pattern.rst#L3-L17", + "version": "repo-lines-v1:sha256:7edac0877acc1bdb1fcda191c5bd96b960428824896fae7049c937bf0bf23c6c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE2ZmU1MGM0MDIwNmY3MTc0NmUzODUzMjllZTg3ZmMxOTVjNzM0NGJkNDhlMDE4MGYyZGU2MDYyMTJiNDkyODIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFkZDI0NDU4MmI2ZmIwM2QyM2I4NDE1YWJlY2QzNDZiMGM5ZjQ2NmI2Zjc1MmIwNjgxODljZTdlOWEyZGMzNTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjoyLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRlNzdmNzFiNjc1ODlhYTUyOTRiYzI2ZmMxNjJmYzEyZjRlOGE1MjkwZWY3OTU4MDBjNWE2ZmM0YWNlYjEwNzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoxLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIifQ" + } + ] + }, + { + "id": "claim_73b9fedb55c045428f6be9487e823c53", + "statement": "Identity-rewriting guidance preserves $original_id for tracing and rewrites _id before filters; filters before the rewrite apply to the old identity, and using mutable source or joined values in identities can turn changes into new entities instead of updating the previous identity.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/data-management.rst#L883-L889", + "version": "repo-lines-v1:sha256:98d7cc6f7b170dcec313e6d75e85dae883f103821e1941edaca08c8ece8bddc2:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDQwOTZiNWFiYzhmODc4NjIzZTI5MDhkODAyNWZjNmFlYjg4OThlM2RlMThkZmI2NTQ3MWIwMWIyMTYyMWYyOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjExMTk3MTBhNGFkODdmMDc5ZjFhYzI3MGRlYjA4OWZjNzFiNGJhOTZjMWFmYmRhMzczNzZkYzRmMWQyODhjOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWE4NDhiODM4MmIzZmIwOGVkYTQxNzkyODc1NjhjYmIyNzJhNjg4ZjdmMTRkYmNhY2JjN2I5MWVlODEzZmI2ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiY2YxNGJiZWFkZGMyMjY1OTUzZmQ0YjNiMWE4YmM3YzEzNmQ5NWU1Nzg1NDhlNGU2YzRiNTFlMTkzMzAwMTg2MyJ9" + }, + { + "resource": "repo://hub/documentation/data-management/rewriting-identity-pattern.rst#L1-L5", + "version": "repo-lines-v1:sha256:2195afb903030251526c3cd68b20539a8a39a284531451501f50b071fb00dda6:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDdhNjg4YjQ1MmIxNzQxOGFlZjhiNzgzOTI3ZTJhODRiN2MyNWFhZDQ2Mzc3MzI3MGQwODAwMmVmMmIwYzQ0MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZWEzYTdjMGU3MmM1NjRiMGUwY2I3MmVlYjU0YzU4NzVjODA1YWY4NmE2NGYzNTE2OWM0NTM2OGNmYTUyZGU4MCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_441e3c979cfc4a77b2a82b8f76e8bde4", + "statement": "The documented connector-extension principle favors adding datatypes and properties over removing existing model parts to preserve backward compatibility; it is a design recommendation rather than an automatic migration mechanism.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/open-to-extension-closed-for-modification-pattern.rst#L1-L4", + "version": "repo-lines-v1:sha256:da88618910b2b097874f6765719d30d45291d41cf7e2c30c11e8b3c31f14fd06:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWU1YWU5ZDIxYWQ3NzA3ODc0NzE3ZTE2ZDY5ZmVjZWI2OWE0MjY4OTgwYmYyNjViYzkzODM5N2UxMGFlYTlkYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMmI0MzA0OGE2ZWU2M2VlY2Y4YWYyZWZmNDY5NmU0ZDM0MWZjMzc1NGNiM2QyZWZhMTJjZGE5NmE2Y2ZmNmZiMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_001115a13a4b43dc995be4d1331cb3d7", + "statement": "Sesam data is dynamically typed and schema validation is optional; automatic inference generates source and sink entity schemas, can be disabled per pipe with infer_pipe_entity_types: false, and has a documented default of false for developer subscriptions despite being generally enabled.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L194-L203", + "version": "repo-lines-v1:sha256:e2a88a6c3759bfe9b2d30b74d34e4fc54102f82c6812ee8c7b5c04df558b7d44:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImEwNmQ4ZTA3MDdmNWI1NmQ0YWU1ZWRmOTU2YTcyNmE1ODRjNjU4OTBmZGQ5ZWNmNjUyNDE4NDY5ZWU5NzgyZTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjM0MGIzNjJkODFjZDA4YzE2M2YzNTM3NDU0ODYyN2NhYzRlZmFkZDgwNzNkMmQwOGE3N2RkYTY3NzkzYjVhYTciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYzMGE2ZTA1MzQxMTZiMDVlY2JlYjJhMjQ5ZTA2MTY4YzEzZmI5ZjkxYTMyNmQ5MDMyNmRiZWU2YWQ5OGNkMGEifQ" + }, + { + "resource": "repo://hub/features/schema-inference.rst#L8-L10", + "version": "repo-lines-v1:sha256:2442859eb3530d072d2b8b3fb52d4273af36d35f5236c8adcefe73a9a42b6969:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjg5M2I1YjgwZTcwZjM0MTRmNWJlZWUxNmJlMzg3MGJiYTZhZDJkMGQ5MjgyNzc5MmQyNjg2MjlmYzVlOTMyZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTk2MWU0Njg0ZDMxNjlmOGE2MDU1ODRlY2MxYmU1MGJkMDRlOWZjMmI2YTJiNGQ3M2Y1MDA1ODk1ZDFlN2I5YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjNkMDkxMGIxZTY2NTczNDYyY2Y4ZTA5YWI1ZmM0MmE1Y2Q0ZDYwYmE4NWU5NzU2YWU1NDI4YmI1OGI0YjA1ZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_d1dda834183c4fd5bebda9e4a1363cc5", + "statement": "Schema models group JSON-schema entity types and allow property descriptions to be aggregated to Management Studio property landing pages; explicit models can be uploaded through /api/models independently of pipe validation.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst#L7-L10", + "version": "repo-lines-v1:sha256:fbc9d2a24ba139ee9ca6f68bc0d7aed79c114bd37fa5e973e7695557204faa11:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjY5YWJlNzY3ZGRiZWNmNGE4Y2Q1ZmY1OGUxMmU3MzU5OTUwYTdjMDZmZmIwOGNlMWE3NmJlOGUxYTlhZWRmMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDIzYjQ2MTk2MTcxMzE2MWNkMDY4YzNlMmE2ZWNjZTMwMzJiMzZlZWJjZWFjMGZjZGZjMDk1Y2RkYTA0NDQ3MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODI5MjQyZWVjM2I3OTU1NGZjMzA5OWU3ZjQyZGVkNmMzMWY2N2VhMjNmMjEwYTUxZTRkZDcxODJlZTFhOWNlYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + }, + { + "resource": "repo://hub/features/schema-models.rst#L23-L23", + "version": "repo-lines-v1:sha256:7c245fffa63589061e14fa232208d6cdfe1ed1836db5e9c18655b87b5b0ccc5b:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2MyNDVmZmZhNjM1ODkwNjFlMTRmYTIzMjIwOGQ2Y2RmZTFlZDE4MzZkYjVlOWMxODY1NWI4N2I1YjBjY2M1YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2MyNDVmZmZhNjM1ODkwNjFlMTRmYTIzMjIwOGQ2Y2RmZTFlZDE4MzZkYjVlOWMxODY1NWI4N2I1YjBjY2M1YiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjVlNmI4NjM1YWUwZmM5NTczY2RjMGViNTlkNjlmMjRlMGUxNjkwY2U3YTk2MzgwYzFhZDVlMjE3MzJkZmMzNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/features/schema-models.rst#L8-L11", + "version": "repo-lines-v1:sha256:7ceba87dc63da30d65a6a19dc04c6811f31d78755ef53001171f91f890406003:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGZkN2UxNjFhMmI1ZjRhMDdjOGJmMWUyM2MyZjU3OWY4ZDA4OWVhNTcwN2NjNTUxNjgyZTE4NTQ1ZGVjNTdhYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmFlZjhkODg1OWNlMDJkYzQ2YTFkMDMzZjQ3ZjNmZjE4OTFlZWQ4Yzc1YzZhMzA3ZTllYmU4NjkxN2I3NmQ3MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMDhkNzYxODdmY2Y5MDIxZTU4YWNjODczNjcyYmQzNGNhMjcyZDJjYzU4ZGJiMjlhZWFlNDgyMGQ2YzA5MGZkOCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOWNjOTJhZDk2ZDcxZWY5Y2Q1Yjk5NTgyZDA3ZjM4YWExNGRmYzhlZGQ2MTA3NzQ2Mjk5NTZkOWRmNTRjNjEyOSJ9" + } + ] + }, + { + "id": "claim_a9a1d92f14794e8d8e7da31687e1bc3e", + "statement": "Inferred sink entity types are assigned to implicit Global, Input, and Output models by pipe role and to pipe-id-prefix models; metadata.models customizes model membership, which can be browsed or used to filter entity types in Management Studio.", + "evidence": [ + { + "resource": "repo://hub/features/schema-models.rst#L11-L21", + "version": "repo-lines-v1:sha256:36bc7efece2c6db2aa094d34a30e42691804ebeea12d42acefb9a0fa2cb015de:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhZWY4ZDg4NTljZTAyZGM0NmExZDAzM2Y0N2YzZmYxODkxZWVkOGM3NWM2YTMwN2U5ZWJlODY5MTdiNzZkNzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNhZmU1OWQzNjMzMWY3MDY0MWM3MWIxY2QxMzM1ZmU4NmIyMjYzOTg1NmY3ZDRhYzc5OTQ2MjI3YWVmMTliOTAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5NWM2NmYxOWJjZjE5NGM2MDYzZTI0MzZiMmY5NzhlZGFmNzJiNjhlZTNiNGI5MjQyN2FmYTZjZmJmNjg4MDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjoyLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNjODMxNzYzNzMxNTY2ZTFmNzVlMDI0ZDk2NjkzZTIzZmRlYzk3ZDkxZjkzYjAzZjQ0Mzk0Y2MxNzUzZmQ5ZDEifQ" + } + ] + }, + { + "id": "claim_4f2776b80d164fd89b79aff17c3571b1", + "statement": "The public API specification labels model list/add, model retrieval/deletion, and entity-type retrieval endpoints experimental; GET effective: true merges implicit and explicit models in responses, and instance API documentation is available at /api/reference.", + "evidence": [ + { + "resource": "repo://hub/api.rst#L12-L20", + "version": "repo-lines-v1:sha256:15dd4c71860ff2f67c140456d9129e641f8f74a547177209863967b986aeb568:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZTczZjIxZDUzMTFhOGM5YWU1ZDYwZTkwOGM2ZjYzZGZmOTAyZGRkMzM5Y2ZkZmY3MWQ2ZGNhZTU0NDMyNTI1YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYjRjZWYxNGZkMjA0OWVlYzM2MmI1NWY1YTc3YjllM2IzN2NhYjRiMDQ3NTFlZDU5ZjY4Y2U5Mzk0NDI4MDkzZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWUyZmViZTZiM2E5NTdlZjNjNTNkN2VjOTA0NWRkODQ4OTI4YWMzNTJhZDI3ODUyMDMyZjljZmViMDkxYjMwMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDUxZTZiYTFjMDM5N2Q4YzczMjkwM2FjYTQ1YThiZWEyM2I5ZTEyOTA0ODU4ZGQzOWUzYzBkMGVkMjcxNGU4YiJ9" + }, + { + "resource": "repo://hub/swagger_public.yaml#L6-L143", + "version": "repo-lines-v1:sha256:027bc73a125643c6d5662f022334799c693b55ae6bf57179ab3fdcfa8b397f59:eyJzZWxlY3RlZExpbmVDb3VudCI6MTM4LCJmaXJzdFNlbGVjdGVkTGluZUhhc2giOiIwN2UxZjQ1ZmEzMzBmNDFhNTVkNDllZjhkZTlhNGZmN2E1MjdkMWYxNzFhYjI3MWVjYTY1ZTc3YTUwY2E5ODNhIiwibGFzdFNlbGVjdGVkTGluZUhhc2giOiIzMDk0NTU5MzBiNWFkNzgxMGVjZDUyYWEwMTkwMjA5NmI2ZGZjYmVjODIwYWMxNjkxYmI2ZjNhOWMwMmYxMzg5IiwicHJlY2VkaW5nQ29udGV4dExpbmVDb3VudCI6MywicHJlY2VkaW5nQ29udGV4dEhhc2giOiI3OTJjZTM0MWJlMjRmM2ZiNzU5MmNkNWJlODk4Yjk0ODBkMjY5MTg2NzU5NDRlNmQ3Y2QzZGYxMDlkNDhiNjQ3IiwiZm9sbG93aW5nQ29udGV4dExpbmVDb3VudCI6MywiZm9sbG93aW5nQ29udGV4dEhhc2giOiIyZTkzOWI0YzQ4MzU2ZGJlZmViZDlhNWY4ZmNiZmYyMzI5N2VmM2IxNWQzZDAxMGZlMmI2ZTNjNTFkNDk0Zjk1In0" + } + ] + }, + { + "id": "claim_a066f2220f8545c5b4c78937f2b9c712", + "statement": "The json_schema transform annotates entity validity and error messages using configurable key_valid and key_errors fields, defaulting to valid and errors, rather than discarding invalid entities itself; its experimental trigger_on selector passes nonmatching entities through without validation.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst#L44-L65", + "version": "repo-lines-v1:sha256:b263c1f51a894af6b32bae5bd02922f883b1d254f286a92fa10171de6937da1e:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjZWRiNDU5ZjZkOWY3ZDk5M2M5ZmMyZGY5MzYyNzkzMjQzYmNiMWU0MTJjYTgzYjVkMmVhZTRmMzExNzNhM2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgzYjcyNGIwOGFhNmYxNTExYjMzYmFmZGE3NmFiMDEwZjMwMTY0ZWIyYmM3NjhlNjU5MDY1NjE5YjA0NmUyMzAiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU3NWFmNDhiMGMwNDgzYzkxM2FmOGMwOTcwYWU5ZmJkOGZmYmE0NGI1NzhlYTBmNWIwYmQ1YWQyNDUzYmI1NWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU5ZDJkODdiZjNjMzhkZTBhMjBiOTBlYjM5NDY0ZDljZDVmMmY0ZGQwYzg0ZDYwNzMwYmI3MjA4N2JkMTRkNDAifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst#L7-L10", + "version": "repo-lines-v1:sha256:fbc9d2a24ba139ee9ca6f68bc0d7aed79c114bd37fa5e973e7695557204faa11:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjY5YWJlNzY3ZGRiZWNmNGE4Y2Q1ZmY1OGUxMmU3MzU5OTUwYTdjMDZmZmIwOGNlMWE3NmJlOGUxYTlhZWRmMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDIzYjQ2MTk2MTcxMzE2MWNkMDY4YzNlMmE2ZWNjZTMwMzJiMzZlZWJjZWFjMGZjZGZjMDk1Y2RkYTA0NDQ3MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODI5MjQyZWVjM2I3OTU1NGZjMzA5OWU3ZjQyZGVkNmMzMWY2N2VhMjNmMjEwYTUxZTRkZDcxODJlZTFhOWNlYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMTY4YWY0MGJjZTRhZTM1NGZiYTA0ODYyZTg5ZjkwYTNlZmJlMzE2N2I2MDkyNThiNTIzNzhiZTU1MjUyNzRjYyJ9" + } + ] + }, + { + "id": "claim_7ef2dbbb6cc741329f320f340c7a44fa", + "statement": "Integrated Search indexes globals for free-text search and relationship navigation, increases the documented data size needed for global pipes by 2x, and restricts search results to data the user has permission to read.", + "evidence": [ + { + "resource": "repo://hub/features/integrated-search.rst#L30-L32", + "version": "repo-lines-v1:sha256:4191bf3313681879059d256a6edfa87e788da7632516da779c1f61af1876a0d0:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjA2NGJmZWVmMWIyNjI0YzVhMTIzZmY1ZmE5ZTU0MjMwZjg5MDM1OTg2ZTE3NWZiNGUyZDkwNjA2ZmYxNDgxOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNWE5NjUyZGM0MTY2YTNkZWViYmM1ODg0ODdmMTdkMDgxMDY0NGU5ZGVhYTEyNzRmYmYyYWEyNzQxZjE3ZDgwNiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiY2M1ODMwMTg1YjJhZmI4OTc2ODlmMTkyYzRkZGE0OTBlNjAzYzMzODBmY2QzZjljYThmZTkwMGE2OTZlYWMyMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWU2OThiMmE0ZDIzYjA0M2VhYzY0NmFjMGNhN2JiYTcwYmE4Y2E4ZGJiNDliOWYxMjA5MjAzNjE4ZDYyMWE3MiJ9" + }, + { + "resource": "repo://hub/features/integrated-search.rst#L8-L10", + "version": "repo-lines-v1:sha256:dac1365716d763b8bb58cc66af5279c4d6946d62dc75dbffff2b3b16d03e9e99:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWQ3NDAwNTcxNDA5ODJhMTEzYTNkY2IxZTEzOTY4OTg1YTFjNTQwNGJlNmIzNTE4N2Q4MGUzYTExMGEzYTY3NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOTBjMDE1ZWFjZmMwMjQ2NzlhOGY2MTBjNjdkM2ZmOTdhYTRjZjBiYTViY2VlZWZmZmI0MWQ1MzI2OGQwZGQ5NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzA5NmY1NjNmNjI0MTA2OTY1ZmI0ODAyZDVhZWIzMGM5MTE4MzI5MDQ4YzA4MTMxNDhiMjU1MDFjNWE4Yzg1OCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTBhZmRhOTZkMmQwM2Q3ZDkwNzI0MGQyZDExMzYwYWUwYTliYzA5ZGM2ZGI5MmNkZTIxMjMxNjFmNjAyOTVlMyJ9" + } + ] + }, + { + "id": "claim_58edc6cccc6d41188e3de4be0233ac04", + "statement": "Integrated Search and property lineage are available for clustered subscriptions and are enabled by the payment method owner in the subscription Products tab; the feature references direct non-clustered subscriptions to support for migration.", + "evidence": [ + { + "resource": "repo://hub/features/integrated-search.rst#L12-L28", + "version": "repo-lines-v1:sha256:d8ea45f7a065e632551d4682c3c09941eb902aa8fea3d37cd4333d3c8de0d4e3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4MTQxOWU5ZGJhMmRiY2YxYmE2MDViZGU2NzY5YmFlMDg5ZWVmNzJiMzE0NmEwM2I1MWY4YmY5ZjU3MDBlMjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE3YjUzY2I4NDUzNjgyY2FiMmE3MGE4MzA3OWJlYjNhOGZiYjgzOGU5YmUyZTE1MWMyYWIwMDRiMTVkYjM0MzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNiMjQxOThhMzRmZDQyYzg4YmU2OWZiZTU3ZmRmYjk1OTI2NDIzZWVlM2ZiMjNhM2Q2MjlkMjA1YmI3ZmM3YzEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdkYTk4NTA3MjkxM2EyYzNkYWQzMDI4NjRjZTljZGQzNGFhYTExY2NmNzdiMDRlZTI3OTQzYjBiMjk1NmM0NmUifQ" + }, + { + "resource": "repo://hub/features/property-lineage.rst#L21-L40", + "version": "repo-lines-v1:sha256:306c336650243ac8a770ef07a77a4546d1e16e8a967c7820e37500faaa1b0cda:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgwZDk3MjIxNDJhMTA3MjVmMmMwYzI5M2YwNTVhOTNiOTNhODVkZDRlZGY5OTgwYmFkZmNlNjQyNzk0MGYzZGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE3YjUzY2I4NDUzNjgyY2FiMmE3MGE4MzA3OWJlYjNhOGZiYjgzOGU5YmUyZTE1MWMyYWIwMDRiMTVkYjM0MzYiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImRjNmVhYmZjMDM3NWExOTY1MTFlZWZlMjBmODIwNjM3ODgwYzAwODM4YTAzZTEzMzFlNzNhNjI0ZDEyZWQxZjIifQ" + } + ] + }, + { + "id": "claim_addf7390fb604b2a86edb2bae0820a09", + "statement": "Property lineage combines static pipe-configuration analysis with schema-inference observations into a best-effort upstream/downstream graph for namespaced properties, rather than proving exhaustive historical provenance for each value.", + "evidence": [ + { + "resource": "repo://hub/features/property-lineage.rst#L8-L17", + "version": "repo-lines-v1:sha256:8f55fdae5f99ea8156f66caa2d3ef0ece6b462403ffe59903aa4249d955c9931:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc2OGMzZGViNGFlNzJiZDcyZDhjNjZlNWIzNTc4MjNkMmNhYjJjZmZmYTIzZjVmNjk3ZjE4ZGU2ZDc3OTdmN2EiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlmYmVlYzViMTMyZTU1NDg4MzEzOGJlNjhlNzVlOTY2ZWI3YzAzNGU4ZTMyMjZjYmU3ZjU0ZGUyOWY0NzExNTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY5YmY5YTNkYTdjN2YzN2M2YmZhZTdlYTFkMDNiZDM4MmU1M2MzMjA2YzNjZTViZmYwNGFhMTAyNWZjMTQwOGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZhM2NmNTE5MjM1NGY3MTYxNWFjNTEwMzRiM2U5N2MyMGVkYTk5NjQzZmNhZjViYmU2ZDQxYWQ1OWJkMTIxNjcifQ" + } + ] + }, + { + "id": "claim_ea54e6059596458898e9068a94f9e11c", + "statement": "Property-lineage landing pages can be reached through Ctrl/Cmd+Click on namespaced properties in Integrated Search or pipe Input/Output views, or by selecting properties in pipe entity-type or Inferred Schema views.", + "evidence": [ + { + "resource": "repo://hub/features/property-lineage.rst#L43-L52", + "version": "repo-lines-v1:sha256:aa47551e6e177f57c4f3526d17e1a40bd9a5ee026654e9909eb1317c80eb9236:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5YzBiZDVmMjVjM2FjYzMxZmZhY2RiZWI3YzdkZTE1ZWJjZTc3YTRiMzE5MDA3Y2MyMzdiMzk1ODAxYzIyODMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYwYWRkYjdhYmU1NTFmYjFhYTIyOThjM2JiZDdjYWQ0NTkzZjNiMWI1ZjQxZDRiZDM3YzJmNmMzMWU0OWM5NzIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImI0MTI5ZTJhZmY1NzIzY2U5MjE5ZmM2OTkzNmM5ODg5ZDFiM2RiOGMyZmY4NzVkMmEyMjhhZjExOWI1YjE5YmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJmMWM0NGI3MDU0NjNjYTFhY2I0NGE1YmRmOWQwZmY2NTNiNzE5NDRiY2I5M2Q4OTRmOWQ5OTM3NzZkODAxOTkifQ" + } + ] + }, + { + "id": "claim_b5e18331876643f1862d25dc9f99a228", + "statement": "Runtime dependency tracking inverses DTL joins to find affected source entities after referenced data changes and is supported only by dataset-source pipes; merge-source transforms do not get tracking for hops or apply-hops and must be split into a downstream dataset-source pipe when that behavior is needed.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L9-L11", + "version": "repo-lines-v1:sha256:a1bd2cf1485667322c1d314fe889c2b1f9886d19fe1d007a938a091067598872:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDMxNzI0NzM4MWYxNGY2OGEwYmY1OTZkYThkNTdhYzJkOWY0ZTg5ZTliMWIyNGIyZmQyOTE4ZTExMWNmNjYxOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzczODk1MTc3N2Q5OGI3YzFjNzUxYTY0YzQ2MmE5YmRiOWQwN2MzNDg2N2I2Y2QzYTA1YzE5NWFhMTQ0NTllMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzc0NmY5NjM5ODUzY2I2ZGZiOGMzOWYzMTZiZDQ0ZDg4YjYyNjc1NmMwZTM2OTI3NzM0NTAwNzNmOGNjYjg5YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjgwNmNiMmI0ZWQ2M2ZlOGQ1YjhjNzkyZmM0YzZmMTNiNWViOWU5YzRmYzcwYjU3YTYwNTBjMjBmOWRiOGExMCJ9" + }, + { + "resource": "repo://hub/features/dependency-tracking.rst#L8-L14", + "version": "repo-lines-v1:sha256:752f9ae994e38b757195dcec312457813f6ed823de4486cff9a14aae1b61267b:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNmUzN2VjNzZlZmRiZDZlNTU3ZjQ4MjFkNmEyMWM4Y2E3YjBjYTdkNjdiNmNjNzIxYTBjMjI0YjU1ZmM2MDMxZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDYwZjVhODVlZmEyYmE5NDM1OTViYjFiYmQwMTZhMDVlMzk4MTljOWZmNGNjMjFhZWQwNTM3NTdiNTc4MDUyZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzI0MGVjZWQ1MDEwYTQyZjEwZDcyZjFhMDU5YTA3ODliN2NhZDVlN2E1NTA1MTFkYzYzM2FkYWQ5OGU3OTQ0MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWUxMGM2MDA1NjAyNjMyOTgzY2QxMTJiYTVjZWUxZWIwODkwNjYxYzczNDk0NWNhZjllMzVjM2QyMTk3MjY3YiJ9" + } + ] + }, + { + "id": "claim_32c1b419ebf1490d947169493f0ec27b", + "statement": "Dependency tracking requires inverse join criteria to match stored source-entity values; modifying join properties earlier in a transform chain, adding namespaces, or dynamically synthesizing $ids can interfere with those matches, regardless of any property-lineage graph edge.", + "evidence": [ + { + "resource": "repo://hub/dtl/caveats.rst#L13-L17", + "version": "repo-lines-v1:sha256:6419ac7275c07e7654cb59fe4c95097379760e036aaff57fd126603e42a284a7:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZWI1MzgwYmYxN2MyZWFmOTQxNGFmY2VjMTVkYzEwYTYxNmUyYmIzMWE1YmQzNDIwZWUxNTliMzhmOThhYTdmMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMDBmOGRhY2Y4ZWY3NzRmYjI5OGM3ZDQ0MTI4OTQyZWU5ZTZiOWM4MWFjMTU1ZGNmMmJmNDAxMDllMjU5YjM4NCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWVlYzA0MGVlYTJmZjliMWM3YTA3MmRjN2ZiNmQwNjY3ZDE1ZTY5ZGU1Yjg5MmVhZmRhM2NmYTRkODQwMDYyNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/features/property-lineage.rst#L17-L17", + "version": "repo-lines-v1:sha256:9fbeec5b132e554883138be68e75e966eb7c034e8e3226cbe7f54de29f471153:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWZiZWVjNWIxMzJlNTU0ODgzMTM4YmU2OGU3NWU5NjZlYjdjMDM0ZThlMzIyNmNiZTdmNTRkZTI5ZjQ3MTE1MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOWZiZWVjNWIxMzJlNTU0ODgzMTM4YmU2OGU3NWU5NjZlYjdjMDM0ZThlMzIyNmNiZTdmNTRkZTI5ZjQ3MTE1MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjRlZjA4NmZkZWUxY2RmNjk4OTg1ZTIxY2YxN2I1MzMwNWM1ZWQxYzFjNmE0MGU3YjI0ZWVjMjQ0YTRhZjkyNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNmEzY2Y1MTkyMzU0ZjcxNjE1YWM1MTAzNGIzZTk3YzIwZWRhOTk2NDNmY2FmNWJiZTZkNDFhZDU5YmQxMjE2NyJ9" + } + ] + }, + { + "id": "claim_54d9def4f53e405eb503fe0d76f10ae1", + "statement": "track-dependencies defaults to true in a hops specification and can be set to false to disable dependency tracking for that particular hop.", + "evidence": [ + { + "resource": "repo://hub/dtl/dtl-functions-hops.rst#L65-L68", + "version": "repo-lines-v1:sha256:c446769fdc9b5114136499d75c51b2797afaec9c0b529e4114e7e22be04cc34b:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWQ4ZDZjNTYyNzk5NzUyOTMxN2RjMDc4MzUxMmJjNmIzNTg2NGEyOWZkYmJmMDgwMTAxOWEyYjJjNTMyMTdlNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZGFmZTBjOGQ5YjRjYTgxNGJmYzQ0YmZiNTYxNDVmM2QyOTgxNDllYjhiNmQzZWQxOWJlMmQ0MTZkYzhlNTc1OCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiM2ZiNDZmMDFiZDcyMTQyMWEzYjY3MmI3ODI4YTBlODkwNDk4Yzk5YjQxY2VkZWZjMmYyOGVlMWFhMDMwZWM0MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjQ3ODNjOGQzOTY3YTRiY2EyN2I3ZjI1ZDgzODVhMDVmZjMwZmQxYmM5MTNkNzZjMjIzYzQ4ZGM2MGYzNDk4NiJ9" + } + ] + }, + { + "id": "claim_930ac6e2521542329ac870593f3e7b74", + "statement": "Merge source version defaults to 1 for compatibility, version 1 is deprecated, and new merge pipes should explicitly use version 2.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L110-L114", + "version": "repo-lines-v1:sha256:77c7cc90b77113b6396a1e55a52a0bd6671baf83d64481b4a84208f48a479ef6:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjQ5NGExNTRmZDcxZDA3YTNhMmRmNjMxMzQ0YzBiNzUwZmU2MjE0Njk5OWVjNzMwNmM1ZTMxZjkwYzI4MzZmMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDI0NmIxYTNmOWQxYTM0ZmM3OTI3NDJkYzczYTRkMjNmODlkMmM1YmFlYjViNWUyNjFiZWYxZDQ1OGQzMTFlNiJ9" + } + ] + }, + { + "id": "claim_aa6dcda7c42e4fb79e2f29ec3093fb8a", + "statement": "Equality rules added after merge has processed the relevant inputs do not retroactively merge those processed entities; reset/rescan is required if they must be reconsidered under the new rules.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L44-L49", + "version": "repo-lines-v1:sha256:0518d2b5f4f8d9ddc4992466de41a24cef93f2395d95bcc618f11bf799837d77:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWUxNGVlY2M4OGMwYTY4ZThmYWZhNzc3NGUyYzJlMzA2ZTdmYzU2YTMwNGY3YzFlOTlmMGU2MjBhMzhkNzFjMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzA3YzIxYTVhNWI4Y2JiMzdhODYyOWY0MzcwOTk2MjYxODlhN2U5Yjg3NTcxYWIzMDk5NmE5OGY3MWEzNDAxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzJkZWZmZDEzNmI4NWMzOWRjMWM1NTBjZDQ2OTdhMjkxMTg5NGZkZWE5NWY3ODg0OTY0M2IwZDZlZWQyMDZjZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmZkYjgwZjI3NmI5YzVmMDk4NGVlMmEyZDExZDYzMDE3NjE0NjE0Yzg3OGIwNzZlZTliOGJkYzkxNjYxNWQwNSJ9" + } + ] + }, + { + "id": "claim_bf824a8d1c8147a6a9d3a37096e4f2c7", + "statement": "Reordering merge inputs in version 1 requires resetting the pipe and may require deleting the downstream dataset; both merge identity strategies use dataset positions, so version 2 does not imply output identities are independent of dataset order.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L164-L183", + "version": "repo-lines-v1:sha256:d3dbfc25e67a4c05d4a652a790236bd2612d6031adb384928d584e3f243938a4:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE5ZmIyNjIzNWFlN2NkYzkyNzQ5NmU0ZTY2YjEwMDE1OGI5Y2VhYmMwYmMwOTljYmQ2M2JiZjZmNTA1NjQyMmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5YmQ3NjQwNjZlNTRjNDRlZGE3NzgzYjNiMmVhMGFjZTQ0OGE1MzBkZDhiNjlmOTZhZWUzMzc3MjU5OGRkOGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBkYTE1ZDRiN2ZlMTQxNGUwZmU1N2NiNjFmZmMyZDkxNDE1YmQ2MGM3NzU1ZTBiN2ZlNDlhYWVhNTg5ZjhjNzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhmMjMxOTc1OTZjYTYxYjExNGZkNjZiODAzNDIzZjM4NjBlNGI0ZjI5MWZlY2ZhYmZkZjg3NGRiNGFiYmJlOGEifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L51-L52", + "version": "repo-lines-v1:sha256:dc4e55447a841a38e3cc46373a6fe6a0e3061727d49f326d25380867b542ba59:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWI4ZGQ0NzNhMjE0NWJlZTRmODIxYmJmY2RmODNkNjhiMjRlNTc2NTY1NjM3OTRmMmVjNDBmODM3Y2Q0OTFkMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTE5MjdkYWEyOTgxZjQ5NmI5MzU0MjMxYjlkODVjMzBjNmE0ZGJkZDlhNzM1ZjYzMmRjNGJhOTllYTI4NjQzOSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjYyODE5OTQ1MDBmMzgzZjE0MzBhYzZiMTg4OTBhNGVjNTViZTRiNmU0M2NlNzQ3NGE2MjQ3ZTEyZTMxNjc5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmNkOGZkYjk5YWJjM2ZlMDUwOGYxZjczN2FlNjhkOGMzYjliZTk3ZjFhZTY4YTY0ZmZiMjFjNTE1NzIwMDA1YyJ9" + } + ] + }, + { + "id": "claim_c5fe0dec32d84ff38a775c64436168ce", + "statement": "Removing input datasets from either merge version 1 or 2 requires a full run to clear the removed inputs from merge state; background incremental runs can continue producing results from state that includes datasets marked for removal.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L54-L59", + "version": "repo-lines-v1:sha256:984b0e494f962f49e8263fbb028c0e91eecbd47d2acb573a55621614befd7948:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2FmNDEzOGJhYTBlMmJlNzdjODliYTE4YTY3N2JlNjY5NTA5N2QyMTZlY2QyMjJmMjkyYTk3N2U4NDU3Y2VhZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMTI2NWNhMGY5ZTQyZDRlM2VmMmQ0ZjQyMWJjZWEwZjVkMjFkMjFhZGFkMDQ4MmE4ZjE1NThhYzU5YzRiZDg1NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOGVjN2Y3MzdhODI2MGY1YTI1YmE0YjBlNGQxOTkyZTY0MWEwYjkzNWRlOGU2N2YzZmYwMThlMDE3OWQ3ZTIxZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDliMjkzZmQyNzY5ODllMTVjMzAwYzllN2U4ZjMzOGRkMjkwYjZhYWZhM2M2OTVmNTMyZmNmZDUwZjI4NjdhNiJ9" + } + ] + }, + { + "id": "claim_8360e1b683e04fc2a2d7497117fae1ce", + "statement": "Dataset/input/configuration changes can put pipes out of sync; reprocessing_policy defaults to continue rather than automatic reset, and rescan_when_config_changes controls whether configuration changes cause automatic reprocessing or out-of-sync marking according to the reprocessing policy.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst#L155-L162", + "version": "repo-lines-v1:sha256:6ab3dea6e9c759844cf92a9b8bed60a168b9c0bc69e0b31bb09c92650285c455:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjA5ZGVkNmZjOTZiYmE2NzU5ZjNiOTEzNWUzYzFkOTJlYzk5OTQxNWNkYjU0MDNmM2JmM2QyZjYyMDYxMGFjZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWMzN2Y2MWFlOGFkNDE5OTRiMzhhZDllNTVmOTIyMzAzNDAzMDgyNjZjN2NjNWYwMjNlNDQ1NGFiYTc4YTczZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYmNlYjIyMWZjZTYyNWQxNGYwMjQyNTFlYmQzNjllMGUwZTU5NTllNjgyNThiMjA4MmFiZDliMTc4MTFkYzk0MSJ9" + }, + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L13-L29", + "version": "repo-lines-v1:sha256:fff67fd01afd4f8c4c096356267ab0f50f7b9245babc52c9409c2690a2d33ee7:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY1NGY3OTBjMGNjNDQyMGQwOTc2ZDQ4YmU3YzgyZGM2Mzg3YjExMDIzMGVhOTYzODRiM2EwZjQ2N2Y2ZmU5YzgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc5MmE2YzI4OWEyMzAxMGE1MTkwNGRmNTViNTljOTdlNzRhMzI2M2QwZjdmOWYzMDhmZTI3NTIwZGM2OGRjZDciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc4OGFhMWMxZjZiYjdkYjBiNjYxMDNjMTkzYTAyODU3ZWRjZTZiMjUxZjk1ZWQ4NjRiMzJhMmU4ZDg3MzZkMGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2OGFmNDBiY2U0YWUzNTRmYmEwNDg2MmU4OWY5MGEzZWZiZTMxNjdiNjA5MjU4YjUyMzc4YmU1NTI1Mjc0Y2MifQ" + }, + { + "resource": "repo://hub/features/automatic-reprocessing.rst#L44-L51", + "version": "repo-lines-v1:sha256:49721936dbd9f05108f09516247ef781b0bd5696ee2ef2a777179e7839ff1d65:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODQ4YWM4NjZiYTI0YThhZGVmOTkyMDQ0MDlhYTEyYjk3ZDE4Mjg1MDQyNjdlNzFhNGZhZjBiMDlkNjQzZDlmNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjcxNWY3MmNkMzg0MGIyMTk0YzBlZTQ0ZmE5ZTNkNjJjNTA4NzJkNDczZmUxNDQ1ODdhZGU2NDUwZDM1YjQ1NSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZWUxNjdhMGVjOTU5ODgzMDVkMmJlZjIwMjAwMzBmZjM0YjE1MmExNzMxZjc0OGRkNGE1OGRlMjE3OTUzMmY5NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjEsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDM5ODFkMzQ4OWE2NjM1OTgxMmQxOGQ2Mzk2ZjE0MDU0MGExNWE5OTA2MGU1ZjI4MWRhZGM1NDJkMmMyZjMwNSJ9" + } + ] + }, + { + "id": "claim_942c6f564d2d47628142f7e5bd19ccb4", + "statement": "Incremental runs process data after stored last_seen, whereas reset/full runs reprocess all source entities and perform deletion tracking; background rescans also reprocess inputs while permitting incremental progress, require dataset sinks, and are disabled by default.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L391-L422", + "version": "repo-lines-v1:sha256:84a263d2e240503424fffe926dbeb1b1af5e43f0f541035e0b8f10564e14df84:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjE5M2QzZTM4MGFlODAzMjVmNGNlZjI0ZDFkNzQzY2IxZWNhOTJkZjU0YjJhNmEwZDFlMTZjNWZhYTM1ZTk5Y2YiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjNjdlNDY5ODFkOGNiZGRmMDk3NTU3MWI3MzgyNDZjNmI5ZTNkNmRlZGY5MTBmNzUzNjYyNTg4NzdlZWEwODciLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjlkOWQyYTY4ZTIzNGMyZWRkYTliNjAyZmZhOWIxYjk4MTJlMjU0NDRkNTQzNmYxOWMxZWY3Y2RmMDRiNDNhZWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMwOWZiM2Q3NTNhNWI2Y2Y1YWI2YTJjN2Y1YWFlM2I0NDFlNDAyYjBjM2FiYTk1Y2NhNTZmOTEzYWIxZGU5OWYifQ" + } + ] + }, + { + "id": "claim_fdafb0e260ef4a0ab8d402d5cc842761", + "statement": "During background rescans after merge-source configuration changes, incremental runs can use old merge state and temporarily emit erroneous entities; rescan completion stops/catches up incremental work and deletion tracking removes those erroneous outputs, with ordering differing from a normal reset run.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L453-L468", + "version": "repo-lines-v1:sha256:a37349c49ce9c31b8957c50c095bc9369ad04888fecf4fa26c01125c16b17f8c:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIwY2Y0NWZjNjUxMDQ2Njc1MWU0YjNjZGQ4OWFlZGZkMmE2M2IwMDBiYjM2ZjRiOWQ2MGNkOWUxMTJlOGVmZWIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkMDBlMDEyYjdkY2Q0ZDJmZDJkYzlkZWNmZmU1NTM1MDNkZDNjNzI0M2ZmY2JiZGVlNTg2YTA4MGM3NWFlM2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRhM2U5YzhhZGI3MzQ2YTU0MTZkYWY1Yzc0M2NiZDNjMDdiNDkzM2Q3Y2Q5YjQ3ZjQ3MzIzMGJkNGU3NDJmY2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUyYjZjYjk5ZjkwYjViYTNjNWNmOTZhYjljOTBhNWRhNzVkNWY3ZjA4OWRkY2IwZDcxY2ZlY2JiNjBjMDE4NWYifQ" + } + ] + }, + { + "id": "claim_4c14478d363f4a289cb16cfa19db5439", + "statement": "Concurrent incremental runs during a background rescan can change output ordering and omit older versions that would have appeared in a normal reset run because the rescan does not overwrite entities already output by incremental processing.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-pump.rst#L429-L451", + "version": "repo-lines-v1:sha256:c39bd7ce57a57ffcff022750e51285a7387ab2c5183e0055993c8d10b4b33d94:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyNjI4OTk2YWZkZGNkMjRlYTk3ZTMzMjI5YjBlMjI3ZDdlOTgzOGViNTdlOGZhOTk1MmU5NWY2YjdlNzU5ODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNlYmY2ZWUzY2UyNGIzMWQ5Zjk0YWRhOGM4NmY0NzUwZjA5ZDRmYjViMDQ5YjAxY2NlN2ZkYjkwZThhODY4ZWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJjZjI4YTg3ZTZhNGZlYjBkMDVkOTk0NDM4MmQxODRhOWUxMzI3ZjU1YmI2NTlhNGNkM2RmYzUwZTZlYmM3NGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE2NjE2YWIxZTdiOTJmMTBjM2ZhYmEyYzU3NWZjOThlZjU1YjBiYjMzNmUzOThlNWVmZDMzYmQzNTVmZjJiODkifQ" + } + ] + }, + { + "id": "claim_9077ae78e6e34131ac886f42d4574e39", + "statement": "max_merged limits the size of one merge group in version 2 and fails the pipe when exceeded; it is unsupported in version 1, defaults to 50000 through service metadata, and is recommended to be lowered to reduce excessive RAM use.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/configuration-metadata.rst#L251-L259", + "version": "repo-lines-v1:sha256:65332de2be9faef306f41a5189a55a750c5d4f5e5109d1ee2af030396a85f78b:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjI4YWVlN2Y1OTg4ZGU0MDcwYWI1M2ZlNGMzMzBjMGY1OTQ3YTYxMGNmMTNmZGYxMWM4MjJjODlhMjhmNGI4MyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNThkMGM2NjI5NzljYjlkYjUyZDQwMDU3ZWZkNzJhNTE2M2JiNzJmZjY2YTVmYzBiN2FjM2Q2NDlhZmU2ZDg1YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjE2ZTg5ZWE4ZTdkNjMyNGU4NjY0ZTY3YzA5ZjM3NjIyNjMyY2M0YmQzOThkYTUyMGUzZTY3NjcxMjBkNTEwNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmMwZWI5YTVhNjBkNzBjYWI5MDdhZGM2YzZhMjRmYjhjZmJjYWE1NWQ2NjgwYWFlODA2NmFlOTI2OTA3ODNhZiJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L231-L239", + "version": "repo-lines-v1:sha256:5ea4edca51a48028142eb6a74545502bd49116fdd3a6a825e712dc06e3b31232:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNGEzMDk4Njc5YjY2ODZkNjk1NzVkODM4NTgyNWQyMTI1M2Q1MWJkMTA3OWQxMmMzMzhhNGRlMzE2ZGZlNGEyYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNThkMGM2NjI5NzljYjlkYjUyZDQwMDU3ZWZkNzJhNTE2M2JiNzJmZjY2YTVmYzBiN2FjM2Q2NDlhZmU2ZDg1YSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzYyZGQ1NDRjZmQ4NDNlMjViZTQ3N2NjMjA4MjljOWViYzZjMzk3N2I1MWJiZGJmN2NjY2RlNTIyYjg0ZTAyZCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjVlM2YyMzFhYmNkYmU4MThhNjI2NmMyMWQyZTlmZWZjMjE4MjczOWNmMTVkNDYyM2E1YzQ3MzRhNjYxZmE4ZiJ9" + } + ] + }, + { + "id": "claim_00a7c306e95a4d8a9c8369bec523ed5d", + "statement": "For merge and union sources, require_populated_input defaults to false and can gate execution until required datasets are populated; initial_datasets can narrow the prerequisite list, while ignore_non_existent_datasets defaults to true and allows missing entries in that list.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L122-L143", + "version": "repo-lines-v1:sha256:8723ea0243378ccccb21669e3e388aace90418a14d2090f00eafefc892d5d09b:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyMjNlMTM0MmY0YzYxODQ3YzgzMWJmZDlmNTNmMjE2YTQ2NTRlOWNiZWUwYjZlMWQ0ZjBmNzAwMTQwNWQ3NjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2ZmJjYWI1ZTFkNDA2ZjdlNWQ0NmY4ZTEyZjQxNTdhNzM2ZWU5N2Q5Zjk2OGI0NzMxZGFkMDQxNGI4ZThlYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZjYzk2ODMxODgxMDhmMDM0YjcwMDk5NGJkZTY5OWJhYWVlMzc5ZmY3NDU5MzAwZjY5NTg0MTM1YTRiNGQzMDcifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-union-datasets.rst#L51-L72", + "version": "repo-lines-v1:sha256:8723ea0243378ccccb21669e3e388aace90418a14d2090f00eafefc892d5d09b:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIyMjNlMTM0MmY0YzYxODQ3YzgzMWJmZDlmNTNmMjE2YTQ2NTRlOWNiZWUwYjZlMWQ0ZjBmNzAwMTQwNWQ3NjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjFjMzdmNjFhZThhZDQxOTk0YjM4YWQ5ZTU1ZjkyMjMwMzQwMzA4MjY2YzdjYzVmMDIzZTQ0NTRhYmE3OGE3M2YiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY2ZmJjYWI1ZTFkNDA2ZjdlNWQ0NmY4ZTEyZjQxNTdhNzM2ZWU5N2Q5Zjk2OGI0NzMxZGFkMDQxNGI4ZThlYmMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg1YzFmY2Y4NDI0ZjQ0Y2E0YTI5ZGUwYTBmODZjN2U5NTMzNWU3NDU5NDJiYWY0OWQzNTY5ZjI5NTllZDU1NjUifQ" + } + ] + }, + { + "id": "claim_6cfa4bfee2c644539c3a7fe54fee7e8b", + "statement": "Merge and union sources default if_source_empty to accept, allowing previously synchronized entities to be deleted when the source returns no entities; fail instead fails the pipe and preserves prior entities.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L258-L268", + "version": "repo-lines-v1:sha256:36cb605ab7dedad5f50c0ad20b116458d015ed8dc10c7d3b114e3c414cb6d968:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliZWIzZDliMmYxY2IwOTJlNTJkMWZlNDBkMmFkMmQ1NWVhMjg3OTAzY2FiM2MxMGE1ZGMwZGE4N2FlYzk2NmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE5MTA1YzA1NzY5NDQzMDU2NjllODg1OWU4ZjRjZWJiNDM4NGE4OGZlNTRiN2Q0MWE0YzdmN2MzYjYyOGM2NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM2MmRkNTQ0Y2ZkODQzZTI1YmU0NzdjYzIwODI5YzllYmM2YzM5NzdiNTFiYmRiZjdjY2NkZTUyMmI4NGUwMmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUyMTE1MzFmMTk2YWNjYWYwMmMxMGI3NmFjMDY4NjU0M2ZmNTcyY2UyMWMzMTU4NjVmYmMyYjg4N2FkZTdjYTUifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-union-datasets.rst#L105-L115", + "version": "repo-lines-v1:sha256:cc3655fa10832e5d4d2d0d7ba0041cab77d301d0eec1e1fba652bdf3c78adf6e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliZWIzZDliMmYxY2IwOTJlNTJkMWZlNDBkMmFkMmQ1NWVhMjg3OTAzY2FiM2MxMGE1ZGMwZGE4N2FlYzk2NmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE5MTA1YzA1NzY5NDQzMDU2NjllODg1OWU4ZjRjZWJiNDM4NGE4OGZlNTRiN2Q0MWE0YzdmN2MzYjYyOGM2NGIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE1NGRlMmJjYjIyYjMyMzcyMmJjYzJmMzNlZDM2Y2EyOWE5ZWMxZjI5YWYzMDU5ZjEyNjA5NTA3ZTcyNGIyMGQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjMwM2NlNmRlOTYzOWNjYWU4Y2EyZDkxYzZjYjQ3NGM0ZmUwMWMzYjZhYzMwNTc3OGRhNGY3ZWNhMTNkZmQxZDcifQ" + } + ] + }, + { + "id": "claim_877a157655af4527811bd5f9aa3f5230", + "statement": "supports_signalling schedules internal pipe runs when input datasets change without interrupting an already-running pipe; effective enabling depends on source settings, service metadata, and schedule interactions rather than rebuilding historical merge equality state.", + "evidence": [ + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L242-L255", + "version": "repo-lines-v1:sha256:a6164d3cfd6076fde0ebb864ce370ca402039fba7bb45237f0cf024bec32e039:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxZGUwYmMyZDBkZTdlMWZkNzc3NmNkYTE5MmNlZjY2NjQzOTE4YmI5MjQ4ZTk0ZWIwN2VmYzYxMzY3YTkyZDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwMTU2ODMxN2JjZTUzOGJiNDEzZTlkM2RlMzM3MDFjMmNjMGE2M2JjNWYzYWZlMjllMjFjOTMyZmM3MGE5NGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYzYWUzNWRkMDUyOTVlNzc1YjkxYzZmNDllZjQwZGI3NDgyODBjODhhZWY0MzA5MDlkMmIwZDc2NmRkNTg5MTAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNkZTFiZDY1MWNjODFkNGY0YWZjNmNkNDVlNjEzNmU4NmIxOGUzYmJmOWYwYzZiNDg0ZDc4N2ExN2U3ZDEyM2UifQ" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L44-L49", + "version": "repo-lines-v1:sha256:0518d2b5f4f8d9ddc4992466de41a24cef93f2395d95bcc618f11bf799837d77:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOWUxNGVlY2M4OGMwYTY4ZThmYWZhNzc3NGUyYzJlMzA2ZTdmYzU2YTMwNGY3YzFlOTlmMGU2MjBhMzhkNzFjMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNzA3YzIxYTVhNWI4Y2JiMzdhODYyOWY0MzcwOTk2MjYxODlhN2U5Yjg3NTcxYWIzMDk5NmE5OGY3MWEzNDAxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzJkZWZmZDEzNmI4NWMzOWRjMWM1NTBjZDQ2OTdhMjkxMTg5NGZkZWE5NWY3ODg0OTY0M2IwZDZlZWQyMDZjZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZmZkYjgwZjI3NmI5YzVmMDk4NGVlMmEyZDExZDYzMDE3NjE0NjE0Yzg3OGIwNzZlZTliOGJkYzkxNjYxNWQwNSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-union-datasets.rst#L85-L96", + "version": "repo-lines-v1:sha256:ed5802517966ed3815e6e16fd57a99fd23b453dc75810d4994f1754f50caf7e3:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgxNGY3YzYzZDA3ZjYyYjg5YjAzYjMzZmY0MTBjNjhkOWM2NjM4YzkxM2FlM2MyZGNmZDExNzFhNWM2ZjMyNTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIwMTU2ODMxN2JjZTUzOGJiNDEzZTlkM2RlMzM3MDFjMmNjMGE2M2JjNWYzYWZlMjllMjFjOTMyZmM3MGE5NGUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUwZGI2NWMyNTljZTZjODU3N2I5YmU1ZWQxZTA1MjI1ZTg4ZDE4ZTJjZmQ1YzA3ZWVjMDg4NjExMmRmNzNmM2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVjZjcwYjlmODNiNzNiMjM4MGE1MWUxZjk3MzFiMWNmNmIxZTcyZjc4YzE2MDVkYjRjZDAzYzYzM2Q1NGU5ZjgifQ" + } + ] + }, + { + "id": "claim_114c2ca454d64a73beb71434fa52636d", + "statement": "Global datasets can be large enough that configuration changes require expensive whole-dataset updates; the global-dataset guidance suggests separating historical and current data as one way to manage this scale.", + "evidence": [ + { + "resource": "repo://hub/features/global-datasets.rst#L114-L118", + "version": "repo-lines-v1:sha256:81b54d92a4dc1bd698fa75213c7e60b5a4f4fe3ad7af6afff7953d38f7135b99:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZjMxMDg5MGM2MjI5MTQ0ZmZhNWIzMjM3NTVlODUxMmJkNTc5YjdlMTUwMDA3MTU2NzExZWM1MWI3NDgyZjMwMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZmIxMmI0ZDhkN2YzMzQ1OTA5M2ZkYjRiOTc2OGFjMjc2Y2YwZmNiNjIzZDZmYTQzYzk5NDdkZTg1NDI0ZTc4ZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzU0ZmRjYTEwZDA1NmZlN2M2Nzk3NTk5NTJkOTA5M2M0NzQxNjVhNjYxYjAxYWI4NzYyMDJiN2Q4ZTk1NDE5NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + } + ] + }, + { + "id": "claim_bd75f2f6555e419489f2ae0ec8855ae5", + "statement": "The external-merge pattern supplies link objects from manually maintained linking data or external matching sources; equality-based merge consumes configured links and rules rather than automatically providing fuzzy or AI identity matching.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/external-merge-pattern.rst#L1-L3", + "version": "repo-lines-v1:sha256:5c617b72117073e4ef29a65d126c2f2eeb7eafea8b5fb3cb456ccd1b35425abb:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmMyYmZhNjk1Nzg4YzVkZjljYzZiZTk4MWVhMzZiMzdlNzdjOTgwOTlkMjg1NzkwZGI2NjVhMThlYjU5OWYxYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODUxYjQxOWEzY2VmZWU1NGEzNTFmNDc5YzdiMGFiNGNhZTU4YTM3ZTc5MzIyNDM1ZDI3N2ZkZGNmMGNlNjE5ZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst#L6-L10", + "version": "repo-lines-v1:sha256:e742c9ea582e15ed1628e88f995be73c55a3cdd6c0200d53dff0e8f7ed4b8976:eyJzZWxlY3RlZExpbmVDb3VudCI6NSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjRmMmJlOTdjNDRjNDNmYjg2MGYwMThkNmU5ZWQxN2IyMzFmY2JjODY2ZjU1MmY1NWY3MDllODc2Njc3OTI4NyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiN2NlOTFjNGU2ZmM5YzUxY2JmMmU0NDQzMDhmYzMwMzQ0Njg2MDA5Y2RiZmE4N2Q4ZjI3NjJhZDMyZjBjOGRkNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWU2NDNiMzVkOGQwOTljMDcyNWM4YjgzOWRiNjg5ZGQ1N2VlYmQ4YTBlZWUwODU2MjNkMTI0OTE3YTlkNTZjZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTNiOTQ3YTE1Nzk5NzNiZjg0OWIwYzYyMWUzNDZiZjAwMmJkMTdjMzk2ZWYzYTUzNmViYjc1YjI1NDA5NDA5MSJ9" + } + ] + }, + { + "id": "claim_af90fa6e1464413ab72866f1871b05c6", + "statement": "Feedback enrichment can move expensive hops or external transforms into a separate flow, use merge-source identity to key feedback, and reprocess an entity when results return; feedback must be deleted when its originating data disappears or it can keep merged entities alive.", + "evidence": [ + { + "resource": "repo://hub/documentation/data-management/feedback-loop-pattern.rst#L1-L3", + "version": "repo-lines-v1:sha256:5b1a5cdbe98fedafd0ac81c19ebb52252578ebf508c3ddcfb648b166bc61d573:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMzVjMWY1YjM2NDVhNjg2MzNiYzU3NDhlZjBhOGM2ZDJkYzBiYjdiNjRkOTNiMTAxNmY2YTNiOGI3Nzk1NjViZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZDgzYzY1MGVmNjM0NzUwNzU2ZjBhYzdkYzIwNzYwMGI3ZWI0YzYyYjcwMzg1YWMwN2Y4MmFiZGJlYjMyMWVhOCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjAsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGVlNGY3YTVkNjYxNDNjZDE4MmJiOTNkMGZjMjYzMmEyMGNjMWIxNzBmYTU1ZTY1YjM3MjUwZTc3ODY0MTBkNCJ9" + }, + { + "resource": "repo://hub/documentation/data-management/feedback-loop-pattern.rst#L59-L78", + "version": "repo-lines-v1:sha256:0c0a5aa5fb5bb6914aa85eb96f896c3be6cd8935bee7e39e7dd14c2e75233bc1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRmZTYzNGI0MzQ2NjY5M2U4NGQzOWY4OTYzOGU2NWNjYTU5MWZiNDEyOTgyOTMyZmZiNmM1ZWZhZDIwZThkZmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZiMTNhN2MzODg0MTlhOWQ1ZWEzNTVjYzllZWU0YTgwMzBmYjk0OTE5YWE3M2ViNTEyZmY5MGNmNzJkMGY4ZjUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgwYzQ2NzA2MDQ0Yjg5Zjg5MWY3Nzg0MzFkNTRmY2UwNjBjNTMyNWMwMTUxOGMzNTMxYjA0ZDIwNjA2YjViM2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc3NjY1ZjQ5ZjRiZjA4ZGNlYjczYTIxMTU0MjhmM2ViZTNhODk2MzY1NDhjMWJkYjZjZWNhMWRjYjFiM2YzOGMifQ" + } + ] + }, + { + "id": "claim_b45ac771389946af876004dec41a5b4f", + "statement": "The documented local configuration-testing workflow drains pipe queues with real output delivery disabled or unreachable, compares endpoint output to expected files, supports expected/.json and expected/.test.json with stage selection, and runs through sesam -vv test.", + "evidence": [ + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L178-L186", + "version": "repo-lines-v1:sha256:d3f3e930714c1d330072874f2391cc0efc113858ca7dd9da8a2a9d3e18f8260e:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTNkNDIwMzJlNzJkZGYyMGE4YTQ3ZDVjMTY1OTgwNDc5Yjk5NzBlYzQwZjExYzkwOThjZmY1YjgwOWFkNDkzOCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNjdkNGMzMDVkNTkyNGMyODk1MDA2NjYzN2U3NjhkY2UwMzE2N2VhNDBiZDY0YmE2NDVhNzk4YmNmMDM2ZTk2NyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzM1ZTZlMDgxMjhmNjE5MDI2OTYwY2JlNmRhMWNlZGQ3OGY0MjQ4NjM4NWQ2NzAwZmVkNTg0YTAzZTRhNzY3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjAsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSJ9" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L63-L79", + "version": "repo-lines-v1:sha256:6864077a9f7336211107ba92bff79e66ea5296dd82c9de9cf4c2e1bd0856a874:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhkMzdiNDcxZTcwOWUwNGU1ZmYwMGI3M2Y5MzNmNjY1ZWMyMjYyZWU1ZmM0MTc0NjBiMGUzYzU4YzZkZGVkNmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZmNWU2OGNkZmFiNTE2MDBlZmQ0MDAzZTEzNTFiNmU2ZjI5OWQ5YTkwNzVmOGQ4MTY1Y2Q0YWRkMTE0OWU5YmEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhhMTNlZjY4NWFlNzc5Yzg4ZDJhZTkxNDFmNzlhMTNiYjQxY2JlMmExMDg5MWI4NWNmOGUwZjg0ZDFmNzVkMmIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA0YTg4OWIyYzY4ODE5Y2IzMTlhMDFhNDhmZTQ2MDE4ZDM0ZjJlMTg3Zjg1YjdiYTZmMTY1YjgyZmU4MmFkNWYifQ" + }, + { + "resource": "repo://hub/documentation/operations/testing-locally.rst#L7-L21", + "version": "repo-lines-v1:sha256:d728920650b733582762cd2916dd09f6f0f0af185fdda8c3774bd133cdd1ef38:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk4YWJkY2YyYmM5MDgyMDQ2MTU5MjI2NjhlNjViZDZkOGI3ZjFjOWE0ZjcxNDU3MDI2NWI4ZTY3Yjg3YTJjMmQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhjMDdmNzI1ZTk4OWY3MTI4YjVkNTExOGVlNjczODI5ZDAwNmY1MGFiMThiZjcyYzcwNmZhZWVlYjcxMmY5YWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5MmEyYjgzN2Q2NTAxOGQwNDljODJhNDgwZmU4MjVlNTlmYmMxMDRjNzBlMzUyMDNmNDkwOTZlZjg4OWIxZDAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNhMTcwMGJmMDNiZmQ3ODI0ZGUzZWE4ODJjYWEyNmFkMjM5MTgwN2UxYWJhYmRjOTZiNGY0ZTNkMzgxNzM3ZjkifQ" + } + ] + } + ], + "verification": { + "by": "openwiki/0.7.2", + "at": "2026-10-20T13:49:14.868Z" + } +} diff --git a/openwiki/.last-update.json b/openwiki/.last-update.json new file mode 100644 index 00000000000..849ca75dd16 --- /dev/null +++ b/openwiki/.last-update.json @@ -0,0 +1,8 @@ +{ + "updatedAt": "2026-10-20T16:18:13.262Z", + "command": "init", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "model": "gpt-6.1-sol", + "status": "complete", + "language": "en" +} diff --git a/openwiki/.page-manifest.json b/openwiki/.page-manifest.json new file mode 100644 index 00000000000..fe41f9f82a1 --- /dev/null +++ b/openwiki/.page-manifest.json @@ -0,0 +1,145 @@ +{ + "schemaVersion": 1, + "pages": { + "/openwiki/architecture/hub-model-and-boundaries.md": { + "pageVersion": "sha256:3bcc16f961df7b8676dd4cd7775712f4e5e05d2ef45c382c28dccf622f9ca319", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/concepts/dtl-evaluation-and-operators.md": { + "pageVersion": "sha256:8cceb513ef9852ef565bc765d5f346244f087492313d284eae176c7f2bc579f5", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/concepts/entities-datasets-and-identifiers.md": { + "pageVersion": "sha256:429b27019d4efcba0c222deb2abdbeefff178fbbdd41eb0eb946b6064f7fccfb", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/configuration/pipes-and-systems.md": { + "pageVersion": "sha256:aa3880a2616a65d7925b9840ad65eb24b5baf61e316bc3e1c173d6d3953006e3", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/configuration/synchronization-and-state.md": { + "pageVersion": "sha256:af51b1106d5c6b280ff60cfe294b2aad65851cd9ee17beb8c9cdcd24892b3b5b", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/integrations/apis-and-repository-handoffs.md": { + "pageVersion": "sha256:5278acea38c54b9af2f30eb0d1919ca9e41fabe32a87c8a00513b03ec8964537", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/integrations/connectors-and-contracts.md": { + "pageVersion": "sha256:7f69a8b54b17239097b2711dfe502d249aeb61454a2d08d176f0bba0069885c0", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/integrations/extensions-and-json-protocols.md": { + "pageVersion": "sha256:2e17dee8677819039d9c06ca98e2de33d7fa6128b5af2affabbe11d8ece7a3dd", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/operations/deployment-and-durability.md": { + "pageVersion": "sha256:73450040740314dad6edd355160a3cc8b8ae49a8c99eee75b59e3ec7fd5d0315", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/operations/monitoring-and-troubleshooting.md": { + "pageVersion": "sha256:9bc436a8342d84eb356281da9a95886a831e2a91a7f677226835c07ee3209267", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/operations/security-and-secrets.md": { + "pageVersion": "sha256:47376a80acc8ad67387c44a0bc3e29160d43e1c079c7b01ec8bc3ced2e33029c", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/quickstart.md": { + "pageVersion": "sha256:6d58cf743a11399cee784124a710442562920521ebc778d3180e6486da80714c", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/references/history-and-policies.md": { + "pageVersion": "sha256:b3734589478111044a1c8aa9240d39777dd05295a2436804df99d47c6f6b666c", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/references/legacy-data-access.md": { + "pageVersion": "sha256:ba0fd7f9c491a690dc1a36af4d415dc1ab0567f673cdb9a0546429be0764a088", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/testing/configuration-change-lifecycle.md": { + "pageVersion": "sha256:c565996d0cce710a11aa5ba77eb70dd222b6895114e9a22cd26dc544078adbb7", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/workflows/bidirectional-synchronization.md": { + "pageVersion": "sha256:d90bf37578440d2c412c6c303b1e92af5c174199fcf7c97e7d8f34561990e2d4", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/workflows/build-an-integration.md": { + "pageVersion": "sha256:23e425be5c6714fa2f4c2b3fa3ff3a8fc19ce13618974f5377ae7f5309398e52", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/workflows/documentation-maintenance.md": { + "pageVersion": "sha256:79b826952679f093615e1c4a1b05cf2346fc6ce87c6ddd0366b751a5af4e0c4a", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/workflows/dtl-joins-and-transformation-patterns.md": { + "pageVersion": "sha256:64a4ca0aebb6f09eace36fee9ffa5df06d2e1636a92ea6f7fe70724ab4ad0acb", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + }, + "/openwiki/workflows/master-data-management.md": { + "pageVersion": "sha256:bc4c07381ec2e344a95213f35a14a58401032f3874a64b62234d2d5dd0299d3f", + "completedBy": "openwiki/0.7.2", + "completedRunId": "6ba6fcf4-0a08-471a-9c08-9ab76afb4bd7", + "gitHead": "7cb5191307a44769c5579764de7dc93aae7712b6", + "sourceFingerprint": "sha256:49e6bd140326ffb0e6783e696274089336356d1d987306ca8883165ee1f8d681" + } + } +} diff --git a/openwiki/INSTRUCTIONS.md b/openwiki/INSTRUCTIONS.md new file mode 100644 index 00000000000..4358070e8a4 --- /dev/null +++ b/openwiki/INSTRUCTIONS.md @@ -0,0 +1,45 @@ +--- +type: Repository guide +title: Sesam Hub Product Documentation Wiki Instructions +description: A navigable, source-grounded Sesam Hub product reference and documentation-maintenance guide for humans and coding agents. +tags: [sesam-hub, product-reference, sphinx, repository-guide] +--- + +# Purpose and Scope + +Distill the authored documentation in this repository into the product-reference member of a five-repository Sesam Hub knowledge network. Serve integration developers learning and configuring Sesam, operators troubleshooting it, and coding agents finding precise product semantics and the original reference. This repository documents the product; it does not implement the lake runtime, portal backend, or Management Studio UI. + +Prioritize durable concepts, exact configuration contracts, practical workflows, and navigation over marketing copy, screenshots, release-note inventories, or one wiki page per source file. Keep useful depth: split major domains into linked pages and avoid a single exhaustive page. Preserve the original reStructuredText sources unchanged. + +# Source Map and Evidence + +- Start with `index.rst`, `hub/index.rst`, `README.md`, `conf.py`, `Makefile`, and `requirements.txt`. Follow actual toctrees, includes, substitutions, explicit labels, and cross-references to their authored definitions; do not infer the site structure from filenames alone. +- Prioritize `hub/concepts.rst`, `hub/core-principles.rst`, `hub/data-architecture.rst`, `hub/documentation/`, `hub/features/`, `hub/data-transformation-language.rst`, `hub/api.rst`, and the Swagger YAML files under `hub/`. Follow the relevant tutorials, guides, synchronization, security, operations, and extension-point material they reference. +- Cite local source paths, section labels, and relevant line ranges; use OpenWiki's normal Grounded Claims/provenance support. Authored docs are evidence of documented behavior, not proof of implementation or a successful execution. Identify backend/UI implementation questions as handoffs. +- Preserve exact JSON/YAML property names, DTL operators, namespaces, datatype notation, endpoint paths, defaults, units, and examples. Do not simplify typed Sesam data into ordinary untyped JSON or silently repair source examples. Distinguish required/optional/deprecated properties and version-dependent semantics. +- Resolve conflicting or stale guidance explicitly. Use changelogs/deprecations to qualify availability and historical behavior, not to assume every old capability is current. Do not use file dates as product versions. Check focused history only when it explains a material documentation change. + +# Required Coverage + +- `quickstart.md`: what Sesam Hub is, a reader-oriented topic map, a small integration-learning path, and a separate contributor preview/build path. Verify documented commands and prerequisites against the current Makefile/configuration; identify platform requirements and distinguish source inspection from commands actually run. +- Concepts and glossary: entities, datasets, pipes, sources, sinks, systems, transforms/DTL, identifiers and typed values, namespaces, dependencies, synchronization, and data lineage. Include product synonyms and link each term to its primary reference. Explain relationships and invariants with a source-grounded diagram where useful. +- Configuration reference: common building blocks, configuration structure, entity/data formats, defaults, incremental/full synchronization, scheduling, dependencies/completeness, deletion/reset behavior, error handling, and practical configuration examples. Point to detailed source references instead of duplicating every option. +- DTL guide: evaluation model, data/property paths, operators grouped by task, typing and namespaces, transformation patterns, and common mistakes. Use small synthetic examples taken from inspected sources and preserve semantics. Link the full operator reference for long-tail lookup. +- API and extension points: node, portal, and databrowser API boundaries; authentication/authorization documentation; custom sources/sinks/transforms and microservice integration. Distinguish specification-backed contracts from narrative documentation, and identify the owning implementation repository. +- Operations and security: monitoring/metrics, logs and failure diagnosis, lineage/search, backup/restore or durability where documented, deployment variants, access control, secrets handling, GDPR/data access, and documented limitations. Keep dangerous administrative steps clearly labeled with prerequisites and impact. +- Documentation maintenance: Sphinx/reStructuredText structure, includes and labels, theme/templates/assets, local HTML and alternative build targets, Docker/publishing inputs, link/format checks actually available, and where to change each reference. Capture build-flavor differences such as SaaS exclusions only when verified. +- Historical and policy material: index changelogs, deprecations, discontinued services, pricing, terms, privacy, and partner/legal material as secondary references. Preserve scope/version caveats; do not reinterpret legal obligations or pricing as timeless runtime guarantees. + +# Page Design for Humans and Agents + +Use descriptive, searchable headings and concise summaries followed by exact contracts, constraints, examples, and source links. Separate product usage from contributing to this documentation repository. For a topic, give a primary source, related concepts, version/deprecation caveats, and the implementation owner when known. Add a task-to-reference/source map so agents can locate the relevant configuration or rule without rereading the whole wiki. Use Mermaid only for relationships actually described by the sources. Keep page navigation bidirectional and avoid repeating the same glossary or examples across pages. + +# Sesam Hub Knowledge Network + +Ownership: `docs` owns documented product semantics; `lake` owns the data-processing runtime and related services; `portal` owns account/subscription management; `webconsole` owns the Management Studio UI; `counting-semaphore` owns the semaphore service. Explain product-level boundaries without claiming to have inspected sibling implementations. + +Research only this repository. Identify cross-repository questions and verified interfaces in an integration section. If a linked OpenWiki workspace is available, verify a target page before linking it; otherwise record the repository/topic as a not-yet-linked handoff. Never invent relative links to unbuilt pages or use machine-specific absolute paths. Keep each wiki standalone so the five generated wikis can later be aggregated with `openwiki link`. + +# Boundaries + +Honor `.openwikiignore` and prefer authored text/specifications over generated HTML, PDFs, archives, or presentation assets. Never reproduce embedded credentials, private keys, real customer data, or internal account details from otherwise allowed docs; use synthetic placeholders. Do not install tools, build the documentation site, start servers/containers, or contact live APIs while researching. Wiki generation must only modify OpenWiki documentation/metadata and its normal managed agent-navigation blocks; preserve original documentation and existing contributor instructions. diff --git a/openwiki/architecture/hub-model-and-boundaries.md b/openwiki/architecture/hub-model-and-boundaries.md new file mode 100644 index 00000000000..68c5dc620aa --- /dev/null +++ b/openwiki/architecture/hub-model-and-boundaries.md @@ -0,0 +1,217 @@ +--- +type: Product architecture +title: Hub architecture, building blocks, and ownership boundaries +description: Explains Sesam Hub's declarative entity-stream model, source perspectives, globals and data products, with a primary glossary and boundaries between runtime, subscription management, UI, and documentation ownership. +tags: [sesam-hub, architecture, glossary, data-model, ownership-boundaries] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-e389b2c6e31446ccc4126746 + resource: repo://hub/api.rst + - id: openwiki-source-23abea229a889d8e8f0ae64f + resource: repo://hub/bidirectional-synchronization.rst + - id: openwiki-source-d344167cc29afa386d95ff00 + resource: repo://hub/concepts.rst + - id: openwiki-source-a170650797bcdc5cadf91c9b + resource: repo://hub/core-principles.rst + - id: openwiki-source-6bbfe977db050ea78d9a50b2 + resource: repo://hub/data-architecture.rst + - id: openwiki-source-dbad7094907d04be9248cab5 + resource: repo://hub/data-transformation-language.rst + - id: openwiki-source-44e50825666ef41bd80ca9cf + resource: repo://hub/documentation/building-blocks/datasets.rst + - id: openwiki-source-8cb3f48982f0027537186c4d + resource: repo://hub/documentation/building-blocks/flows.rst + - id: openwiki-source-7a2d2c36e68977998d148504 + resource: repo://hub/documentation/building-blocks/pipes.rst + - id: openwiki-source-7441c6857e91f2e552a7f944 + resource: repo://hub/documentation/building-blocks/streams-of-entities.rst + - id: openwiki-source-e9c139c51dbde1c66d8144cd + resource: repo://hub/documentation/building-blocks/systems.rst + - id: openwiki-source-ab28f0a659eec676b26e672b + resource: repo://hub/documentation/data-management/entity-data-model.rst + - id: openwiki-source-80eedbbd35c9d596a2d38fe2 + resource: repo://hub/documentation/operations/behind-the-scenes.rst + - id: openwiki-source-5836a7a1bfae906d1c6a7cca + resource: repo://hub/documentation/operations/continuous-integration.rst + - id: openwiki-source-caeff9d3196d7b81403130e3 + resource: repo://hub/documentation/operations/security.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-abfd7f3c3362dcbbd85c64ef + resource: repo://hub/documentation/service-configuration/general/configuration-general.rst + - id: openwiki-source-b88ab8bcd7069b9437346a72 + resource: repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst + - id: openwiki-source-3feb3cb0150ced7c7dca37f9 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst + - id: openwiki-source-9c3ad765d7f032ba45c225e7 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst + - id: openwiki-source-c27c69f00f9a3913135cc0c4 + resource: repo://hub/dtl/caveats.rst + - id: openwiki-source-3902473100e6919f4481c8d0 + resource: repo://hub/extension-points.rst + - id: openwiki-source-5156b81b00358c1c04a7aff2 + resource: repo://hub/features/api-config-groups.rst + - id: openwiki-source-782bcbded2c4efbea17fb497 + resource: repo://hub/features/automatic-reprocessing.rst + - id: openwiki-source-4b2bc117b6b0ce370e62adff + resource: repo://hub/features/change-tracking.rst + - id: openwiki-source-973250faa719d180841d4a4a + resource: repo://hub/features/continuation-support.rst + - id: openwiki-source-6c52db3ac69c47f1937708d3 + resource: repo://hub/features/deletion-tracking.rst + - id: openwiki-source-c4f45d3a0f3643170205d462 + resource: repo://hub/features/dependency-tracking.rst + - id: openwiki-source-46c662d103933ce45e0322d8 + resource: repo://hub/features/global-datasets.rst + - id: openwiki-source-476492e27f30fbe648642588 + resource: repo://hub/features/namespaces.rst + - id: openwiki-source-cdddf93a1e40c7459b0e0f3b + resource: repo://hub/features/property-lineage.rst + - id: openwiki-source-6a3033d532ffd0de8f23cc8a + resource: repo://hub/features/scheduling-and-signalling.rst + - id: openwiki-source-f517d5139873e41493bf54fa + resource: repo://hub/management-studio.rst + - id: openwiki-source-d0a16f79e90cff0f5bcc9290 + resource: repo://hub/swagger_portal.yaml + - id: openwiki-source-23775c3de52f3ab95a13cb8b + resource: repo://README.md +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Hub architecture, building blocks, and ownership boundaries + +Sesam Hub is documented as a semantic data hub for master data synchronization and management. Its core model is **entities stored in datasets and moved by configured pipes**, not a collection of synchronous application endpoints. The architecture documentation relates this to data fabric and data mesh; those are product-model descriptions, not proofs of runtime performance or consistency guarantees. This page is a product reference, not a backend or UI implementation analysis. + +Primary sources: [Data architecture](../../hub/data-architecture.rst#L1-L32) and [Building blocks](../../hub/documentation/building-blocks/index-building-blocks.rst#L1-L61) (`building_blocks`, `concepts-config`). + +## Declarative model and retained perspectives + +Configuration is data: JSON definitions of systems and pipes describe collection, connection, enrichment, and sharing. Configuration can be imported through the Service API or edited in Management Studio; component `_id` values must be unique across the solution, including multiple configuration files. DTL, the Data Transformation Language, declares how to construct output entities rather than hiding those mappings in application code. This does **not** mean the product contains no implementation code or cannot call custom services. + +Sources: [General configuration](../../hub/documentation/service-configuration/general/configuration-general.rst#L1-L32) (`configuration-general`); [Core principles](../../hub/core-principles.rst#L210-L242) (`core_principles`); [DTL](../../hub/data-transformation-language.rst#L18-L38) (`DTL`); [Extension points](../../hub/extension-points.rst#L1-L19) (`developer_extension_points`). + +The documented modeling approach retains different source-system representations instead of forcing every source into one fixed canonical model. Source properties can be namespaced to preserve their origin, then connected into a composite object in a global dataset. Namespaces are configurable, not an unconditional property of every entity: settings can be applied globally and overridden per pipe. Use `y:x` for property `x` in namespace `y:`; a property namespace is distinct from a typed namespaced identifier (NI) used as a reference. + +Sources: [Parallel data models](../../hub/core-principles.rst#L40-L90) (`dynamic_data_model`); [Namespaces](../../hub/features/namespaces.rst#L8-L45) (`namespaces-feature`); [namespace versus NI](../../hub/concepts.rst#L38-L53) (`whatis-namespaces`). + +A **datatype** is a business concept within a source system, such as CRM customers—not a primitive value type such as integer or datetime. A **global** groups datatypes in a domain; its global properties can express MDM-selected values, described as the equivalent of golden records. The **global model** is the collection of globals and their global properties. Global datasets can collect records without merging, merge them unchanged, or selectively merge properties. Business knowledge and appropriate cardinality are essential: a many-to-one ingestion can overwrite information rather than preserve all related records. + +Sources: [Global, global model, datatype](../../hub/concepts.rst#L55-L95) (`whatis-global`, `whatis-global-model`, `whatis-datatype`); [Global datasets](../../hub/features/global-datasets.rst#L1-L16) (`global_datasets`). See [Master data management](../workflows/master-data-management.md). + +### Domains and data products + +The architecture guidance allows multiple organizational domains in a subscription, using permissions and config groups for autonomy and isolation. It recommends data products for cross-domain synchronization; synchronization inside a domain need not create one. A product is typically derived from a domain's globals. Publishing a global as-is exposes its underlying data and source-driven structural changes; transformed globals or other models can provide a more purpose-specific consumer representation. Do not equate a config-group name alone with an enforced security boundary. + +Sources: [Domain ownership and data products](../../hub/data-architecture.rst#L8-L16); [role and resource permissions](../../hub/documentation/operations/security.rst#L23-L63) (`security_subscriptions_users_roles_and_permissions`); [Config groups](../../hub/features/api-config-groups.rst#L29-L46) (`api_config_groups`). + +## Relationship model + +```mermaid +flowchart LR + Business["Business systems"] --> Inbound["Inbound pipes"] + Inbound --> Raw["Source-perspective datasets"] + Raw --> Connect["Connect and enrich pipes"] + Connect --> Global["Domain global datasets"] + Global --> Publish["Publishing and transform pipes"] + Publish --> Product["Data products"] + Product --> Consumer["Other domains and consumer products"] + Global --> Outbound["Outbound synchronization pipes"] + Outbound --> Business + subgraph PipeUnit["Inside a pipe"] + Src["Source"] --> Tr["Optional ordered transforms"] + Tr --> Snk["Sink"] + Pmp["Pump"] -.-> Src + Pmp -.-> Snk + end +``` + +*Conceptual relationships: pipes connect source perspectives, domain globals, and consumer-specific products; inside each pipe the pump drives source-to-sink processing. Globals and products are modeling choices, not mandatory stages for every integration.* + +Diagram grounding: [Pipe composition](../../hub/documentation/building-blocks/pipes.rst#L1-L82) (`concepts-pipes` through `concepts-pumps`); [stream processing](../../hub/documentation/building-blocks/streams-of-entities.rst#L26-L31) (`concepts-streaming`); [global population and raw inputs](../../hub/features/global-datasets.rst#L8-L16), [L94–L98](../../hub/features/global-datasets.rst#L94-L98); [products](../../hub/data-architecture.rst#L11-L16); [return synchronization](../../hub/core-principles.rst#L132-L174). + +## Primary concise glossary + +These definitions are product vocabulary. Source links identify the authored primary reference, its RST label, and relevant lines; wiki links lead to usage detail. + +| Term and synonyms | Meaning | Primary authored reference | Wiki detail | +| --- | --- | --- | --- | +| **Entity** — data entity | Dictionary of string keys and literal, list, or dictionary values, with typed values and reserved fields. `_id` is its required string primary key. | [Entity Data Model](../../hub/documentation/data-management/entity-data-model.rst#L1-L64), `entity-data-model` | [Entities and identifiers](../concepts/entities-datasets-and-identifiers.md) | +| **Dataset** | Internal entity log with primary and secondary indexes; dataset sinks write it and dataset sources expose it. | [Datasets](../../hub/documentation/building-blocks/datasets.rst#L1-L10), `concepts-datasets` | [Entities and datasets](../concepts/entities-datasets-and-identifiers.md) | +| **Pipe** | Atomic source-to-sink processing unit comprising source, optional transforms, sink, and pump; the configured way entities move between datasets. “Atomic unit” is not a claim of an all-or-nothing transaction across systems. | [Pipes](../../hub/documentation/building-blocks/pipes.rst#L1-L6), `concepts-pipes`; [configuration](../../hub/documentation/service-configuration/pipes/configuration-pipes.rst#L6-L13), `pipe_section` | [Pipes and systems](../configuration/pipes-and-systems.md) | +| **Source** | Exposes an entity stream from a dataset or external data, such as SQL rows, CSV, or API JSON. Continuation support varies. | [Sources](../../hub/documentation/building-blocks/pipes.rst#L13-L31), `concepts-sources` | [Pipes and systems](../configuration/pipes-and-systems.md) | +| **Transform / DTL** — Data Transformation Language | A transform converts an input entity stream to an output stream. DTL is the principal transform language for joining and reshaping data. | [Transforms](../../hub/documentation/building-blocks/pipes.rst#L35-L53), `concepts-transforms`, `concepts-dtl`; [DTL reference entry](../../hub/data-transformation-language.rst#L1-L24), `DTL` | [Build an integration](../workflows/build-an-integration.md) | +| **Sink** | Consumes entities supplied by a pump and writes to the target; owns target transaction boundaries and supported batching. Targets can be datasets or external systems. | [Sinks](../../hub/documentation/building-blocks/pipes.rst#L55-L71), `concepts-sinks` | [Pipes and systems](../configuration/pipes-and-systems.md) | +| **Pump** | Active execution part of a pipe: scheduled reading and writing, rescans, and configured failure handling. | [Pumps](../../hub/documentation/building-blocks/pipes.rst#L73-L82), `concepts-pumps`; [Scheduling](../../hub/features/scheduling-and-signalling.rst#L1-L10), `scheduling_and_signalling` | [Build an integration](../workflows/build-an-integration.md) | +| **System** — system component | Represents a connected database or API, centralizes connection configuration, and can provide introspection, pooling, and rate limiting. | [Systems](../../hub/documentation/building-blocks/systems.rst#L1-L14), `concepts-systems` | [Pipes and systems](../configuration/pipes-and-systems.md) | +| **Flow** — dataflow | Directed graph of chained pipes, with fan-out to downstream pipes; special cases can contain cycles. Studio can visualize and inspect it. | [Flows](../../hub/documentation/building-blocks/flows.rst#L1-L6), `concepts-flows` | [Build an integration](../workflows/build-an-integration.md) | +| **Global** — global dataset; **global model** | Domain grouping of source datatypes, potentially merged. Global properties express selected MDM values; the global model collects these globals and properties. | [Global concepts](../../hub/concepts.rst#L55-L83), `whatis-global`, `whatis-global-model`; [Global datasets](../../hub/features/global-datasets.rst#L1-L16), `global_datasets` | [Master data management](../workflows/master-data-management.md) | +| **Datatype** | Source-system business concept, such as customer, user, or employee; not the type of an individual value. | [Datatype](../../hub/concepts.rst#L84-L95), `whatis-datatype` | [Master data management](../workflows/master-data-management.md) | +| **Dependency** — dependency tracking | A relationship detected in DTL joins so a referenced-dataset change can cause affected source entities to be reprocessed. Supported for `dataset` sources, with join-expression caveats. | [Dependency Tracking](../../hub/features/dependency-tracking.rst#L1-L17), `dependency_tracking`; [Caveats](../../hub/dtl/caveats.rst#L1-L17), `caveats` | [Pipes and systems](../configuration/pipes-and-systems.md) | +| **Synchronization** — incremental processing; bidirectional synchronization | Keeping connected data updated through pipes. `since` continuation resumes a stream; change tracking avoids unchanged dataset writes. Bidirectional synchronization additionally returns data to source systems. | [Continuation](../../hub/features/continuation-support.rst#L1-L8), `continuation_support_feature`; [Change Tracking](../../hub/features/change-tracking.rst#L3-L20), `change_tracking`; [Bidirectional synchronization](../../hub/bidirectional-synchronization.rst#L1-L15), `bidirectional-synchronization` | [Build an integration](../workflows/build-an-integration.md) | +| **Lineage** — property lineage | Best-effort upstream/downstream property-dependency graph, derived from static pipe configuration analysis and inferred schemas. Not a complete execution audit. | [Property lineage](../../hub/features/property-lineage.rst#L3-L23), `property_lineage` | [Master data management](../workflows/master-data-management.md) | +| **Connector** | Collection of components needed to synchronize one or more datatypes with a system, inbound or outbound—not just the system definition. | [Connector](../../hub/concepts.rst#L97-L104), `whatis-connector` | [API and repository handoffs](../integrations/apis-and-repository-handoffs.md) | + +Other names worth recognizing: **node** means the Sesam service instance; **Service API / Instance API** operates on that service and its data; **Management Studio** is its configuration and administration UI. Sources: [runtime components](../../hub/documentation/operations/behind-the-scenes.rst#L29-L35), [API](../../hub/api.rst#L1-L20), [Studio](../../hub/management-studio.rst#L1-L16). + +## Processing, state, and safe-change constraints + +- **Composition and defaults.** A pipe requires a source. `transform` accepts zero or more components, applied in order; omitting `sink` selects a dataset sink whose dataset ID equals the pipe `_id`. A flow is built by allowing downstream pipes to read the output datasets—not by embedding the whole integration in one pipe. [Pipe properties](../../hub/documentation/service-configuration/pipes/configuration-pipes.rst#L165-L190) (`pipe_properties`); [Flows](../../hub/documentation/building-blocks/flows.rst#L1-L6). +- **Progress versus change detection.** `since` is an opaque source-interpreted continuation token, not a universal timestamp. Dataset content hashing appends a new version only for a new or changed entity; dataset `_updated` values are incremental sequence counters used to record progress. These are separate mechanisms: rescanning input need not rewrite unchanged output. [Sources](../../hub/documentation/building-blocks/pipes.rst#L29-L31); [Change Tracking](../../hub/features/change-tracking.rst#L8-L28) (`change_tracking`). +- **Scheduling is asynchronous.** Pumps run at intervals or cron schedules and can rescan. Signalling schedules downstream execution on upstream changes; it does not interrupt an already-running pipe. The dataset-source reference qualifies the general “enabled by default” description: unless explicitly enabled on the source, signalling is automatically disabled for intervals under an hour or cron schedules. [Scheduling](../../hub/features/scheduling-and-signalling.rst#L8-L10); [dataset-source signalling](../../hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L108-L121) (`dataset_source_property_supports_signalling`). +- **Deletion needs a complete view.** With dataset-sink `deletion_tracking` enabled (default `true`), a full run/rescan can mark previously stored entities absent from the new output as `_deleted: true`. Do not infer disappearance from a partial incremental response. [Deletion Tracking](../../hub/features/deletion-tracking.rst#L1-L8) (`deletion_tracking`); [sink setting](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L140-L148) (`dataset_sink`). +- **Join dependencies have limits.** Dependency tracking uses inverse traversal to find source entities needing reprocessing. A `merge` source does not support DTL hop dependency tracking; split into a merge pipe and a downstream `dataset`-source transform pipe when needed. Earlier transforms must not change the join criteria relative to the source entity. Treat the narrative about moving entities to the log head as an explanation of reprocessing, not a current storage algorithm: `_tracked` is documented as belonging to an old implementation. [DTL caveats](../../hub/dtl/caveats.rst#L6-L17); [historical `_tracked`](../../hub/documentation/data-management/entity-data-model.rst#L124-L134). +- **Retries and recovery are configured.** Reading/writing errors are logged; failed writes can be retried, with configured terminal handling potentially using a dead-letter dataset. Configuration changes, restored or recreated datasets, and truncated sources can leave pipes out of sync. Automatic reprocessing can reset/rescan or rewind when enabled, but `reprocessing_policy` defaults to `continue`, not `automatic`. [Pumps](../../hub/documentation/building-blocks/pipes.rst#L78-L82); [Automatic Reprocessing](../../hub/features/automatic-reprocessing.rst#L8-L52) (`automatic_reprocessing`). +- **Two-way flow adds obligations.** Do not read the core-principles “multi-master replication” description as a promise that arbitrary cyclic integrations are safe. The bidirectional guide requires duplicate management, preservation of not-yet-observed source data, and completeness before propagating downstream updates. [Bidirectional requirements](../../hub/bidirectional-synchronization.rst#L26-L56). + +## Ownership and API boundaries + +The owner names below are the knowledge-network routing map supplied for this page, not names inferred from sibling code. Local authored product references establish the documented responsibilities and interfaces; no sibling implementation was inspected. + +| Owner | Responsibility and boundary | +| --- | --- | +| `docs` — this reference repository | Authored product semantics, configuration references, API specifications, and operational guidance. Change documentation here; do not expect a prose change to change runtime behavior. | +| `lake` | Data-processing runtime and related services. Implementation questions about pipes, datasets, pumps, or service execution belong here. Locally, the single-machine node hosts the Service API; in the clustered model the aggregator hosts it, storage node holds configuration/topology, provisioner allocates processing pipes, and service nodes run pipes. | +| `portal` | Account/subscription management. The local Portal API specification documents listing, creating, updating, and deleting subscriptions, plus subscription JWT issuance. This is distinct from dataset processing. | +| `webconsole` | Management Studio UI. Users enter it by selecting a subscription in the portal; the UI configures, manages, and administers the subscription. Route UI implementation changes to this owner, rather than to the product reference. | +| `counting-semaphore` | Assigned owner for the semaphore service. The product references cited here do not establish its caller protocol or runtime interactions; this page asserts no dependency between it and pumps, provisioning, or scheduling. | + +Runtime evidence: [Behind the scenes](../../hub/documentation/operations/behind-the-scenes.rst#L29-L41), [clustered roles L60–L76](../../hub/documentation/operations/behind-the-scenes.rst#L60-L76) (`multi_arch`). Portal evidence: [JWT and public-key endpoints](../../hub/swagger_portal.yaml#L300-L326), [subscription operations](../../hub/swagger_portal.yaml#L353-L449). UI evidence: [Management Studio introduction](../../hub/management-studio.rst#L9-L16) (`sesam-management-studio`). + +### Documented user-to-node control boundary + +```mermaid +sequenceDiagram + participant GUI as Management Studio GUI + participant PortalSvc as Portal backend + participant NodeSvc as Sesam node + GUI->>PortalSvc: Request JWT for selected subscription + PortalSvc-->>GUI: Signed JWT containing subscription roles + GUI->>NodeSvc: Dataset request with JWT in Authorization header + NodeSvc->>NodeSvc: Verify signature and check dataset ACL + NodeSvc-->>GUI: Dataset contents or 403 Forbidden +``` + +*Documented authorization handoff: portal supplies subscription-scoped identity and roles; the node verifies the token and enforces resource permissions.* Source: [Security](../../hub/documentation/operations/security.rst#L26-L63) (`security_subscriptions_users_roles_and_permissions`). This shows product responsibilities, not an inspected backend call graph. + +The Service API controls the service and its data, with `/api/pipes` and `/api/datasets` as central entrypoints. Supported pump operations are reported by `runtime["supported-operations"]` and submitted to `/api/pipes/{pipeID}/pump`. Configuration-group uploads through `/api/config` or `/api/config/{config-group}` **replace all configuration in the selected group**; they are not additive patches. + +Sources: [Service API](../../hub/api.rst#L10-L20), [entrypoints and pump operations](../../hub/api.rst#L60-L123) (`api-top`); [config-group replacement](../../hub/features/api-config-groups.rst#L19-L46) (`api_config_groups`). + +Two important API limits: + +1. Do not write production data directly through the dataset API; use an HTTP endpoint source or JSON Push Protocol. [API warning](../../hub/api.rst#L150-L156). +2. The Service API is not intended for low-latency, high-throughput user-facing applications or large numbers of concurrent clients. Stream data into a dedicated publishing system for that requirement. [Streams of entities warning](../../hub/documentation/building-blocks/streams-of-entities.rst#L29-L31). + +Custom sources, transforms, and sinks extend the model through external endpoints using URL systems or hosted microservices using microservice systems. For exact API/authentication contracts, connector protocols, and implementation questions—including semaphore interactions—continue to [APIs and repository handoffs](../integrations/apis-and-repository-handoffs.md). [Extension reference](../../hub/extension-points.rst#L7-L19) (`developer_extension_points`). + +## Operations and validation routes + +The deployment reference documents single-machine and clustered container-based variants and persistence using RocksDB with MessagePack storage. Do not confuse the logical JSON-based entity representation with that physical storage format. Subscription types and deployment details need their own operational checks; see [Deployment and durability](../operations/deployment-and-durability.md), grounded in [Behind the scenes](../../hub/documentation/operations/behind-the-scenes.rst#L8-L19). + +For integration changes, the documented local test workflow drains non-output pipe queues and compares endpoint-pipe output with expected results under `expected/`, using paired `.json` and `.test.json` files. Run `sesam -vv test` only against an appropriate test instance. Output pipes must be disabled or unable to send data to external systems. Shared CI-node tests must be serialized because testing overwrites configuration. These are documented integration tests, not runtime tests executed for this page. + +Sources: [Local tests](../../hub/documentation/operations/testing-locally.rst#L7-L21), [test command](../../hub/documentation/operations/testing-locally.rst#L178-L186) (`setup-local-tests`); [CI isolation](../../hub/documentation/operations/continuous-integration.rst#L7-L22) (`setup-ci`). + +Next steps: [Quickstart](../quickstart.md) for the learning path; [Build an integration](../workflows/build-an-integration.md) for end-to-end work; [Pipes and systems](../configuration/pipes-and-systems.md) for exact configuration; [Entities, datasets, and identifiers](../concepts/entities-datasets-and-identifiers.md) for typed data contracts. diff --git a/openwiki/architecture/index.md b/openwiki/architecture/index.md new file mode 100644 index 00000000000..ea6c491e986 --- /dev/null +++ b/openwiki/architecture/index.md @@ -0,0 +1,3 @@ +# Files + +- [Hub architecture, building blocks, and ownership boundaries](hub-model-and-boundaries.md) - Explains Sesam Hub's declarative entity-stream model, source perspectives, globals and data products, with a primary glossary and boundaries between runtime, subscription management, UI, and documentation ownership. diff --git a/openwiki/concepts/dtl-evaluation-and-operators.md b/openwiki/concepts/dtl-evaluation-and-operators.md new file mode 100644 index 00000000000..2ee0760c383 --- /dev/null +++ b/openwiki/concepts/dtl-evaluation-and-operators.md @@ -0,0 +1,411 @@ +--- +type: language concept +title: DTL evaluation, paths, typing, and operator lookup +description: Explains how DTL builds target entities, binds nested contexts, traverses properties and datasets, and handles typed scalar, list, and null values. Provides task-grouped routes to exact operator signatures and reference caveats. +tags: [dtl, transformations, evaluation, paths, typing, operators, namespaces] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-dbad7094907d04be9248cab5 + resource: repo://hub/data-transformation-language.rst + - id: openwiki-source-94c0ec50b6458d32bee9aa4b + resource: repo://hub/deprecations.rst + - id: openwiki-source-ab28f0a659eec676b26e672b + resource: repo://hub/documentation/data-management/entity-data-model.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-05bf7439a418093a5a72733a + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-http.rst + - id: openwiki-source-3ba3816116976234f8f45a82 + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst + - id: openwiki-source-12eefe420238d0851d538a0d + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms.rst + - id: openwiki-source-6d15f5dba09afb96fad83627 + resource: repo://hub/dtl/annotated-example.rst + - id: openwiki-source-49dfdc2c28bcf166550de7df + resource: repo://hub/dtl/argument-types.rst + - id: openwiki-source-c27c69f00f9a3913135cc0c4 + resource: repo://hub/dtl/caveats.rst + - id: openwiki-source-6feda37ec208e72ceae97c17 + resource: repo://hub/dtl/dtl-functions-comparisons.rst + - id: openwiki-source-bb23c574872c6e1de96a7473 + resource: repo://hub/dtl/dtl-functions-conditionals.rst + - id: openwiki-source-9d2fb02a12fd80b05f02c7a7 + resource: repo://hub/dtl/dtl-functions-date-and-time.rst + - id: openwiki-source-5352a3d31d0f85d5dfdf2571 + resource: repo://hub/dtl/dtl-functions-dictionaries.rst + - id: openwiki-source-c65dbfc9ed45ebc7a65f88f0 + resource: repo://hub/dtl/dtl-functions-encryption.rst + - id: openwiki-source-e222c4aa209056e7340716af + resource: repo://hub/dtl/dtl-functions-hops.rst + - id: openwiki-source-32287807dad23f1c676be0d6 + resource: repo://hub/dtl/dtl-functions-json.rst + - id: openwiki-source-1359990eecf7cf20c6649cff + resource: repo://hub/dtl/dtl-functions-lists.rst + - id: openwiki-source-4879cb0c1570122f665d3029 + resource: repo://hub/dtl/dtl-functions-math.rst + - id: openwiki-source-86472cb6932154fc6d5f5b11 + resource: repo://hub/dtl/dtl-functions-misc.rst + - id: openwiki-source-0dc85ac7312c5f7cf505e624 + resource: repo://hub/dtl/dtl-functions-namespaced-identifiers.rst + - id: openwiki-source-bf713a2a436e5ee14581521f + resource: repo://hub/dtl/dtl-functions-nulls.rst + - id: openwiki-source-35922a602ef29d120e5fdb03 + resource: repo://hub/dtl/dtl-functions-numbers.rst + - id: openwiki-source-71d909d875184c2873f0d162 + resource: repo://hub/dtl/dtl-functions-strings.rst + - id: openwiki-source-b080c011b8382aaeafbbc37b + resource: repo://hub/dtl/dtl-functions-transforms.rst + - id: openwiki-source-dabbd5cbbf01080c2ecfbb92 + resource: repo://hub/dtl/introduction.rst + - id: openwiki-source-133c24a94ca8f7beb23e7ab4 + resource: repo://hub/dtl/joins.rst + - id: openwiki-source-2b8c59d97f75284f0a8927f3 + resource: repo://hub/dtl/namespaces.rst + - id: openwiki-source-d0cf95a010ebe94553f50c07 + resource: repo://hub/dtl/paths.rst + - id: openwiki-source-a2667ab1ef7f5878967b90f9 + resource: repo://hub/dtl/variables.rst + - id: openwiki-source-782bcbded2c4efbea17fb497 + resource: repo://hub/features/automatic-reprocessing.rst + - id: openwiki-source-c4f45d3a0f3643170205d462 + resource: repo://hub/features/dependency-tracking.rst + - id: openwiki-source-476492e27f30fbe648642588 + resource: repo://hub/features/namespaces.rst +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# DTL evaluation, paths, typing, and operator lookup + +DTL (Data Transformation Language) is Sesam's JSON-based language for reshaping an entity stream. A pipe's DTL transform consumes source entities and constructs new target entities; it can also join other datasets and emit additional entities. This page describes documented evaluation semantics rather than interpreter internals. + +For entity identity and storage semantics, see [Entities, datasets, and identifiers](entities-datasets-and-identifiers.md). For pipe configuration, see [Pipes and systems](../configuration/pipes-and-systems.md). For complete join patterns, continue to [DTL joins and transformation patterns](../workflows/dtl-joins-and-transformation-patterns.md). + +## 1. Execution starts at `rules.default` + +A DTL transform is configured as a pipe transform with `"type": "dtl"` and a `rules` object. **The named rule `default` is mandatory** and is applied to each source entity. Other named rules are reusable transformations invoked through `apply` or `apply-hops`. A pipe can have one transform configuration or a chain of them between its source and sink. The `default` rule name is distinct from the `default` transform operator, which adds a property only if it does not already exist on the target. + +The distinction between the two kinds of DTL function is important: + +- **Expressions return values**, without side effects: for example, `["upper", "_S.name"]`. +- **Transform functions have side effects and no return value**: for example, `["add", "name", ["upper", "_S.name"]]` modifies the target entity. + +Transform functions in a rule run **in the order written**. Later functions can read properties that earlier functions added to `_T`. Constructing a target does not imply copying all source properties: copy or add the fields you need explicitly. + +```mermaid +flowchart TD + Input["Source entity stream"] --> Root["default rule context: _S and _T"] + Bindings["HTTP endpoint URL parameters: optional _B"] -.-> Root + Root --> Step["Next transform in written order"] + Step --> Expr["Evaluate value or condition expressions"] + Expr --> Direct["Local paths and value functions"] + Expr --> Functional["Functional expression: bind _ to current value"] + Expr --> Nested["apply or apply-hops: nested rule with its own _S and _T"] + Nested -.-> Context["_P links parent context and _R links root context"] + Direct --> Value["Expression result"] + Functional --> Value + Nested --> Value + Value --> Effect["Mutate target or control processing"] + Effect --> Step + Effect --> Emit["Emit completed target subject to filter and discard"] + Effect --> Extra["create emits additional entities"] +``` +*Evaluation sketch: ordered transforms consume expression results, while nested rules have distinct source/target pairs. The output exceptions are detailed below.* + +### Output validity and configuration gates + +The [DTL transform configuration](../../hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst) defines two particularly useful checks: + +- `id_required` defaults to `true`. A missing or non-string target `_id` fails the transform. Invalid values passed to `create` or `create-child`—not a dictionary, missing `_id`, or non-string `_id`—also fail under this setting. With `false`, invalid values are ignored instead. Do not infer permissive behavior solely from the shorter function-reference descriptions. +- `trigger_on` can restrict transformation by a property path and a matching value, with `*` wildcard matching. A missing key or nonmatching value passes the entity through unchanged. This option is explicitly **experimental**. + +DTL's target-mutation side effects are not the same concept as the pipe transform configuration's `side_effects` flag. That flag concerns changes to an external system and protects features such as preview from making inadvertent external changes; see [transform configuration](../../hub/documentation/service-configuration/pipes/configuration-transforms.rst#transform_properties). + +## 2. Variables are evaluation contexts, not interchangeable aliases + +The [built-in variable reference](../../hub/dtl/variables.rst#variables) defines exactly six variables: + +| Variable | Meaning and scope | Example access | +| --- | --- | --- | +| `_S` | Source entity of the currently applied rule. Each value passed into a nested `apply` becomes that nested rule's source. | `_S.name` | +| `_T` | Primary target entity of that rule, including fields built so far. `_S` and `_T` occur as a pair in each applied transform. | `_T.orders` | +| `_P` | Parent context inside `apply`: a dictionary with `_S`, `_T`, and optionally another `_P`. It does **not** contain `_R`. | `_P._S._id`, `_P._P._T.description` | +| `_R` | Root context containing `_S` and `_T`; in practice, the outermost `default` rule's context. | `_R._T.name` | +| `_B` | Dictionary of URL-parameter bindings supplied by an HTTP endpoint sink. | `_B.foo` | +| `_` | Current value in functions accepting a functional expression, such as list `filter`, `sorted`, `min`, `max`, and `coalesce`. It is not a universally available source alias. | `_.amount`, `_.` | + +An [HTTP endpoint sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-http.rst#http_endpoint_sink) has no ordinary pump: entities flow when the endpoint is requested. Its URL parameters become `_B` bindings available to DTL transforms on that pipe. For example, `?foo=bar` supplies a `foo` binding with the string value `"bar"`. + +### Small nested construction example + +The examples here are synthetic, reference-derived expectations, **not recorded execution results**. Assume namespace processing is disabled and the source is: + +```json +{"_id": "p1", "name": "Ada", "orders": [{"_id": "o1", "amount": 12}]} +``` + +The DTL transform fragment is: + +```json +{ + "type": "dtl", + "rules": { + "default": [ + ["copy", "_id"], + ["add", "name", ["upper", "_S.name"]], + ["add", "orders", ["apply", "order", "_S.orders"]], + ["add", "order_count", ["count", "_T.orders"]] + ], + "order": [ + ["copy", "_id"], + ["add", "amount", "_S.amount"], + ["add", "owner", "_P._S._id"] + ] + } +} +``` + +Expected primary target: + +```json +{ + "_id": "p1", + "name": "ADA", + "orders": [{"_id": "o1", "amount": 12, "owner": "p1"}], + "order_count": 1 +} +``` + +Inside `order`, `_S._id` is `"o1"`, while `_P._S._id` and `_R._S._id` identify the outer source `"p1"`. The count uses the already-constructed `_T.orders`. `apply` returns transformed values; it does not by itself make those orders standalone output entities. Use [`create`](../../hub/dtl/dtl-functions-transforms.rst#dtl_transform-create) for additional output entities, or [`create-child`](../../hub/dtl/dtl-functions-transforms.rst#dtl_transform-create-child) to add entities to the target's special `$children` property. Both require string entity IDs under normal validation. + +### Three meanings to keep separate: selection, stream filtering, and discard + +| Form | Effect | +| --- | --- | +| `["filter", ["gt", "_.amount", 100], "_S.orders"]` | **List expression**: returns orders whose amount is strictly greater than 100. Does not filter out the enclosing source entity. | +| `["filter", ["gt", "_T.order_count", 0]]` | **Transform**: continues only when the condition is true. False stops further transformations and suppresses the ordinary primary target. `["filter"]` stops unconditionally. | +| `["discard", ["gt", "_T.order_count", 0]]` | **Transform**: drops the primary target when the condition is false, without arranging deletion of a previous sink entity. `["discard"]` drops unconditionally. | + +With a dataset sink, a failed transform `filter` uses `_filtered: true` emission so the sink can delete an existing, not-already-deleted entity on incremental synchronization. Handle `_filtered` carefully in later transforms. `discard` lacks that deletion behavior and is unsafe for an ID previously sent to the sink. Neither transform cancels entities **already emitted by `create`**; put the gate before creation if it must govern all output. + +Exact references: [list `filter` / `filter_dtl_function`](../../hub/dtl/dtl-functions-lists.rst#filter_dtl_function), [transform `filter` / `dtl_transform-filter`](../../hub/dtl/dtl-functions-transforms.rst#dtl_transform-filter), [transform `discard` / `dtl_transform-discard`](../../hub/dtl/dtl-functions-transforms.rst#dtl_transform-discard). + +## 3. Property paths stay inside values; hops cross datasets + +### Property-path strings and quoting + +`"_S.orders.amount"` starts at `_S`, visits `orders`, then `amount`; traversal through a collection can produce a list of amounts. These strings access only the current entity and its nested values, not arbitrary entities in other datasets. + +The trailing dot is significant when referring to a whole variable value: `"_S."` is the source entity, `"_T."` the target, and `"_."` the current functional value. + +Quote a path element with single quotes if it contains periods. Double a single quote within a quoted element: + +```json +"_S.foo.'john.doe''s'.bar" +``` + +This selects the literal property name `john.doe's`, not several path steps. Its corrected explicit equivalent is: + +```json +["path", ["list", "foo", "john.doe's", "bar"], "_S."] +``` + +### The explicit `path` expression + +[`path` / `path_dtl_function`](../../hub/dtl/dtl-functions-dictionaries.rst#path_dtl_function) takes `PROPERTY_PATH` followed by `VALUES`. The latter expression is evaluated before traversal. The path expression resolves to a string or list of strings; those resulting strings are **literal property names**, not variable references. Non-string path items are ignored. The result can be a scalar or list; a missing property yields `null`. + +| Expression | Expected value and type, with namespace processing disabled | +| --- | --- | +| `["path", "age", {"age": 24}]` | `24` — integer scalar | +| `["path", "age", ["list", {"age": 23}, {"age": 24}]]` | `[23, 24]` — list of integers | +| `["path", "age", {"name": "Ada"}]` | `null` | +| `["path", ["list"], {"age": 24}]` | `{"age": 24}` — dictionary, because the path is empty | + +`["path", "placed_by", ["sorted", "_.amount", "_S.orders"]]` first sorts the order values, then projects their `placed_by` properties. This is local projection, not a join. + +### Dataset traversal + +Use [`hops` / `hops_dtl_function`](../../hub/dtl/dtl-functions-hops.rst#hops_dtl_function) to navigate beyond the current entity: + +```json +["hops", { + "datasets": ["orders o"], + "where": [ + ["eq", "_S._id", "o.cust_id"], + ["eq", "o.type", "BILLING"] + ] +}] +``` + +Here `o` is a dataset alias. The first `eq` connects two dataset contexts; the second compares an alias property with a literal and acts as a filter. Only eligible `eq` expressions are joins: each argument must reference exactly one unique dataset alias, with the two sides connecting different datasets. All declared aliases must be joined and reachable from the source, or compilation fails. A list of `where` expressions is combined with `and`. + +**Join `eq` means overlap; ordinary comparison `eq` means exact equality.** Joins succeed when any values overlap, including scalar-to-list and list-to-list joins. `null` values and deleted entities are not indexed for traversal. For overlap outside a join, use `intersects`, not ordinary `eq`. + +By default, hops returns values from the last dataset alias. Its order is deterministic for the same input entities, based on entity `_id`, **not a requested business sort order**. Wrap the result in `sorted` or `sorted-descending` when ordering matters. + +[`apply-hops` / `apply_hops_dtl_function`](../../hub/dtl/dtl-functions-dictionaries.rst#apply_hops_dtl_function) evaluates hops and then applies a named rule to the results. The reference specifically prohibits calling `apply` on a rule containing `hops` or `apply-hops`; use `apply-hops` for that case so dependency tracking can work. + +For direct ID lookup, [`lookup-entity`](../../hub/dtl/dtl-functions-hops.rst#lookup_entity_dtl_function) returns an entity or `null` if absent. The dataset must be populated before the transform runs. Unlike hops, this operator **does not support dependency tracking**; changes in the looked-up entity do not automatically refresh dependent output. + +See [the complete hops reference](../../hub/dtl/dtl-functions-hops.rst) for `return`, chained specifications, recursion, `max_depth`, `exclude_root`, `subsets`, `track-dependencies`, and `trace`. In particular, `subsets` replaces the deprecated `prefilters` property. + +## 4. Read the signature, then check type and shape + +### Argument notation + +In the [argument-type reference](../../hub/dtl/argument-types.rst), `CONDITION(boolean-expression{1})` names a logical argument, its type, and its cardinality. `{1}` means exactly one, `{2}` exactly two, `{0|1}` optional, `{>=0}` zero or more, and `{>=1}` one or more. These logical names are not keywords to insert into JSON calls. + +- `value-expression` may return `null`, a scalar, or a list. +- `function-expression` runs against individual values with `_` bound to the current value. +- `string` and `wildcard-string` describe constant literals; wildcard patterns support `*` and `?`. +- `transforms` accepts a transform or a list of transforms. For example, the transform variant of `if` takes transform branches; the expression variant takes value branches. + +Boolean-expression truthiness is not Python or JavaScript truthiness: **only `false`, `null`, and `[]` evaluate to false; all other values evaluate to true**. In particular, do not treat `0` or `""` as false by assumption. + +Use [`literal`](../../hub/dtl/dtl-functions-misc.rst#literal_dtl_function) to suppress interpretation: `["literal", "_S.foo"]` returns the string `"_S.foo"`, and `["literal", ["upper", "hello"]]` returns the array as data instead of executing `upper`. + +### There is no universal list/scalar rule + +A list-valued argument does not necessarily cause an operator to map. These small cases illustrate the contracts: + +| Expression | Expected output | Contract | +| --- | --- | --- | +| `["list", 1, ["list", 2]]` | `[1, [2]]` | Constructs a list without flattening nested values. | +| `["combine", 1, ["list", 2, 3]]` | `[1, 2, 3]` | Combines argument values into one list; `combine` of `null` gives `[]`. | +| `["flatten", ["list", 1, ["list", 2, ["list", 3]]]]` | `[1, 2, [3]]` | Flattens one level, not recursively. | +| `["count", 123]` / `["count", null]` | `1` / `0` — integers | A scalar counts as one value; null as none. | +| `["first", 123]` / `["first", ["list"]]` | `123` / `null` | A scalar passes through; an empty sequence has no first value. | +| `["+", 10, ["list", 1, 2, 3]]` | `11` — integer scalar | Symbolic math uses the first list value. | +| `["plus", 10, ["list", 1, 2, 3]]` | `[11, 12, 13]` — list of integers | Named math maps the increment over the values. | +| `["gt", ["list", 5, 0], 3]` | `true` — boolean | Ordered comparisons use the first value of each argument. | +| `["eq", ["list", 1, 2], ["list", 2, 1]]` | `false` — boolean | Ordinary equality coerces to lists and compares exactly, including order. | +| `["concat", "A", 12, "B"]` | `"AB"` — string | Non-string inputs are ignored, not implicitly formatted. | + +The named `plus`, `minus`, `multiply`, `divide`, `mod`, and `pow` functions are map-style; their symbolic equivalents `+`, `-`, `*`, `/`, `%`, and `^` use natural operand order and single values. Symbolic math returns `null` when either argument evaluates to `null`; `/` also returns `null` for a zero divisor. Use the [math reference](../../hub/dtl/dtl-functions-math.rst) rather than substituting a named function as if it were merely a spelling alias. + +Many type predicates, such as `is-string`, `is-ni`, `is-dict`, and `is-decimal`, inspect only the first list item. They are **not whole-list validation**. Use per-item logic when every value must satisfy a condition. + +### Typed values are not just formatted strings + +The entity model supports JSON-like values plus Transit extension types. Extension values are represented as tagged strings in serialized JSON, but retain their type in DTL. For example: + +| Expression | Expected typed result | +| --- | --- | +| `["integer", "12"]` | `12` — integer | +| `["decimal", "1.23"]` | Decimal `1.23`, represented with Transit as `"~f1.23"` | +| `["is-decimal", 1.23]` | `false` — an ordinary fractional JSON literal is a float, not a decimal | +| `["ni", "person", "p1"]` | NI, serialized as `"~:person:p1"` | +| `["is-ni", "person:p1"]` | `false` — a colon-containing ordinary string is not an NI literal | +| `["datetime", "2015-07-28T09:46:00.12345Z"]` | Datetime, serialized as `"~t2015-07-28T09:46:00.12345Z"` | + +Decimals have arbitrary precision; floats use IEEE 754 binary64 and can lose precision when converted from decimals. Casts such as `integer`, `decimal`, `float`, and `datetime` process non-null values, silently ignore unparseable values by default, and support an optional default expression to replace failures. A default can introduce a different type—returning `"n/a"` on a numeric parse failure makes the output heterogeneous. + +`json`/`json-parse` do not Transit-encode/decode; `json-transit`/`json-transit-parse` do. A JSON string containing `"~r..."` remains a string under ordinary `json-parse`, but can become a URI under Transit parsing. See [entity standard and extension types](../../hub/documentation/data-management/entity-data-model.rst#entity_data_types) and [JSON operators](../../hub/dtl/dtl-functions-json.rst). + +### Null, empty list, and a list beginning with null + +These are deliberately different contracts, not interchangeable fallback operators: + +- [`coalesce`](../../hub/dtl/dtl-functions-nulls.rst#coalesce_dtl_function) selects the first non-null value **within VALUES**, or the first value satisfying an optional functional predicate. +- [`coalesce-args`](../../hub/dtl/dtl-functions-nulls.rst#coalesce_args_dtl_function) evaluates arguments in order, short-circuiting on the first **non-null argument**. `[]` is non-null: `["coalesce-args", null, ["list"], 7]` returns `[]`. +- [`is-null`](../../hub/dtl/dtl-functions-nulls.rst#is_null_dtl_function) returns true for `null`, `[]`, or a list whose first item is `null`. `is-not-null` is the opposite. Thus `["is-null", ["list", null, 7]]` returns `true`, even though a later item is non-null. +- [`if-null`](../../hub/dtl/dtl-functions-nulls.rst#if_null_dtl_function) uses that `is-null` test. `["if-null", ["list", null, 7], 9]` returns the integer `9`. +- [`add-if`](../../hub/dtl/dtl-functions-transforms.rst#dtl_transform-add-if) binds `_` to the **entire result** of VALUES when evaluating its condition. Its default condition is `["neq", "_.", null]`: it skips `null`, but adds `[]` and `[null]`. It is not equivalent to an `is-not-null` gate. + +## 5. Namespace-aware lookup changes which fields match + +Namespace behavior can be configured in service metadata and overridden per pipe. `namespaces.identity` and `namespaces.property` default to the pipe ID. When enabled, `add_namespaces` rewrites input before the first transform; `remove_namespaces` strips namespaces after the last transform. See [namespace configuration](../../hub/features/namespaces.rst#namespace_features) and [master data management](../workflows/master-data-management.md). + +The [namespace-aware function reference](../../hub/dtl/namespaces.rst#namespace_aware_functions) identifies `add`, `add-if`, `default`, `make-ni`, `remove`, `copy`, `rename`, and `path`. Wildcards respect the boundary between namespace and identifier. Unqualified references generally match the same property identifier in all namespaces, but construction has its own rules: `add` prefixes new ordinary property names with the current property namespace, and `_id` string values with the identity namespace. + +For example, with namespace-aware behavior enabled and current property namespace `bar`: + +| Operation | Meaning | +| --- | --- | +| `["add", "age", 26]` | Adds `"bar:age": 26`. | +| `["add", "::age", 26]` | Adds the unqualified `"age": 26` as-is. | +| `["copy", "age"]` | Copies matching `age` properties from all namespaces, preserving their keys. | +| `["path", "age", {"age": 1, "foo:age": 2, "bar:age": [3, 4]}]` | Returns `[1, 2, 3, 4]`. | +| `["path", "foo:age", {"age": 1, "foo:age": 2, "bar:age": [3, 4]}]` | Returns integer `2`. | +| `["path", "::age", {"age": 1, "foo:age": 2, "bar:age": [3, 4]}]` | Returns integer `1`. | +| `["path", ":age", {"age": 1, "foo:age": 2, "bar:age": [3, 4]}]` | Returns `[3, 4]` from the current namespace. | + +[`ni_escape_syntax`](../../hub/dtl/namespaces.rst#ni_escape_syntax) distinguishes `::` (interpret as-is) from `:` (relative to the current identity/property namespace). These prefixes are separate from single-quote escaping in path elements. + +The expression `ni` casts strings and URIs to typed NIs without escaping strings. Omitting its namespace uses the global namespace for strings; URI input is accepted only when no explicit namespace is supplied. URI prefixes collapse to declared namespaces, or generated namespaces if necessary. Do not confuse this expression with the target-mutating `make-ni` transform. + +## 6. Find operators by task, then follow the exact reference + +This is a route to the catalog, not a replacement for it. Links with fragments identify **explicit RST labels** (shown in link text where useful); the full-file links provide signatures, defaults, examples, and edge cases. The [quick reference](../../hub/quick-reference.rst) separates [transform functions / `quickref_dtl_transform_functions`](../../hub/quick-reference.rst#quickref_dtl_transform_functions) from [expression functions / `quickref_dtl_expression_functions`](../../hub/quick-reference.rst#quickref_dtl_expression_functions). + +### Entity construction + +- Start with `add`, `add-if`, `copy`, `default`, `remove`, `rename`, `merge`, and `merge-union` in the [full transform reference](../../hub/dtl/dtl-functions-transforms.rst). Useful entry labels: [`dtl_transform-add`](../../hub/dtl/dtl-functions-transforms.rst#dtl_transform-add), [`dtl_transform-copy`](../../hub/dtl/dtl-functions-transforms.rst#dtl_transform-copy), [`dtl_transform-create`](../../hub/dtl/dtl-functions-transforms.rst#dtl_transform-create), and [`dtl_transform-create-child`](../../hub/dtl/dtl-functions-transforms.rst#dtl_transform-create-child). +- Nested shaping and dictionary assembly: [full dictionary reference](../../hub/dtl/dtl-functions-dictionaries.rst), especially [`apply_dtl_function`](../../hub/dtl/dtl-functions-dictionaries.rst#apply_dtl_function), [`dict_dtl_function`](../../hub/dtl/dtl-functions-dictionaries.rst#dict_dtl_function), and [`apply_hops_dtl_function`](../../hub/dtl/dtl-functions-dictionaries.rst#apply_hops_dtl_function). It also covers `items`, `keys`, `values`, `apply-ns`, and `strip-ns`. + +### Selection and collection processing + +- Projection, mapping, sorting, deduplication, grouping, slicing, and aggregation: [full list reference](../../hub/dtl/dtl-functions-lists.rst). Entry labels: [`map_dtl_function`](../../hub/dtl/dtl-functions-lists.rst#map_dtl_function), [`sorted_dtl_function`](../../hub/dtl/dtl-functions-lists.rst#sorted_dtl_function), [`group_by_dtl_function`](../../hub/dtl/dtl-functions-lists.rst#group_by_dtl_function), and [`distinct_dtl_function`](../../hub/dtl/dtl-functions-lists.rst#distinct_dtl_function). +- Local traversal: [`path_dtl_function`](../../hub/dtl/dtl-functions-dictionaries.rst#path_dtl_function). Cross-dataset selection: [full hops reference](../../hub/dtl/dtl-functions-hops.rst). Union, intersection, and difference: [full set reference](../../hub/dtl/dtl-functions-sets.rst), including [`intersects_dtl_function`](../../hub/dtl/dtl-functions-sets.rst#intersects_dtl_function). + +### Comparisons and conditions + +- Exact versus ordered comparison: [full comparisons reference](../../hub/dtl/dtl-functions-comparisons.rst), especially [`eq_dtl_function`](../../hub/dtl/dtl-functions-comparisons.rst#eq_dtl_function) and [`gt_dtl_function`](../../hub/dtl/dtl-functions-comparisons.rst#gt_dtl_function). +- Combinations and per-value predicates: [boolean logic](../../hub/dtl/dtl-functions-boolean-logic.rst); boolean casts/tests: [booleans](../../hub/dtl/dtl-functions-booleans.rst); fallback and missing-value tests: [nulls](../../hub/dtl/dtl-functions-nulls.rst). +- Returning a branch value: [expression conditionals](../../hub/dtl/dtl-functions-conditionals.rst), e.g. [`if_dtl_function`](../../hub/dtl/dtl-functions-conditionals.rst#if_dtl_function). Applying a branch of transforms: [`dtl_transform-if`](../../hub/dtl/dtl-functions-transforms.rst#dtl_transform-if), `case`, and `case-eq` in the transform reference. + +### Strings and numbers + +- Case, joining, splitting, replacement, patterns, padding, and substring operations: [full strings reference](../../hub/dtl/dtl-functions-strings.rst), starting at [`concat_dtl_function`](../../hub/dtl/dtl-functions-strings.rst#concat_dtl_function) or [`string_dtl_function`](../../hub/dtl/dtl-functions-strings.rst#string_dtl_function) when explicit casting is needed. +- Numeric parsing and type checks: [numbers](../../hub/dtl/dtl-functions-numbers.rst), especially [`integer_dtl_function`](../../hub/dtl/dtl-functions-numbers.rst#integer_dtl_function) and [`decimal_dtl_function`](../../hub/dtl/dtl-functions-numbers.rst#decimal_dtl_function). Arithmetic and rounding: [math](../../hub/dtl/dtl-functions-math.rst), with [`plus_symbol_dtl_function`](../../hub/dtl/dtl-functions-math.rst#plus_symbol_dtl_function) versus [`plus_dtl_function`](../../hub/dtl/dtl-functions-math.rst#plus_dtl_function). +- Specialized parsing/formatting: [phone numbers](../../hub/dtl/dtl-functions-phonenumbers.rst). + +### Dates and timezones + +- Parsing, formatting, differences, arithmetic, and shifts: [full date/time reference](../../hub/dtl/dtl-functions-date-and-time.rst), particularly [`datetime_parse_dtl_function`](../../hub/dtl/dtl-functions-date-and-time.rst#datetime_parse_dtl_function), [`datetime_format_dtl_function`](../../hub/dtl/dtl-functions-date-and-time.rst#datetime_format_dtl_function), and [`datetime_shift_dtl_function`](../../hub/dtl/dtl-functions-date-and-time.rst#datetime_shift_dtl_function). Timezone names: [supported timezones / `supported_timezones`](../../hub/dtl/timezones.rst#supported_timezones). +- `datetime` integer input means **nanoseconds since the Unix epoch**. Stored datetime values are UTC. `datetime-parse` interprets strings in its timezone (default UTC); `datetime-format` converts to its requested timezone (default UTC) and returns strings. Internal datetime precision is nanoseconds, but `%f` formatting supports microseconds, so formatting can lose precision. +- Timezone conversions use historical daylight-saving tables that can be corrected over time. Fixed conversion expectations should therefore be reviewed when timezone data changes. + +### Identifiers and encoding + +- Typed NIs and extraction: [namespaced identifiers](../../hub/dtl/dtl-functions-namespaced-identifiers.rst), starting with [`ni_dtl_function`](../../hub/dtl/dtl-functions-namespaced-identifiers.rst#ni_dtl_function). Also follow [URIs and URL quoting](../../hub/dtl/dtl-functions-uris.rst) and [UUIDs](../../hub/dtl/dtl-functions-uuids.rst). +- Binary values and Base64: [bytes](../../hub/dtl/dtl-functions-bytes.rst), including [`base64_encode_dtl_function`](../../hub/dtl/dtl-functions-bytes.rst#base64_encode_dtl_function). Serialization: [JSON and Transit](../../hub/dtl/dtl-functions-json.rst). +- Long-tail utilities: [miscellaneous functions](../../hub/dtl/dtl-functions-misc.rst), including `literal`, `tuples` for composite join keys, `hash128`, `completeness`, and [`is_changed_dtl_function`](../../hub/dtl/dtl-functions-misc.rst#is_changed_dtl_function). Read the state-tracking warning before using `is-changed` to reason about sink changes. + +### Encryption + +- Exact signatures and formats: [full encryption reference](../../hub/dtl/dtl-functions-encryption.rst), with [`encrypt_dtl_function`](../../hub/dtl/dtl-functions-encryption.rst#encrypt_dtl_function), [`encrypt_pgp_dtl_function`](../../hub/dtl/dtl-functions-encryption.rst#encrypt_pgp_dtl_function), and [`encrypt_pki_dtl_function`](../../hub/dtl/dtl-functions-encryption.rst#encrypt_pki_dtl_function); matching decryption operators are in the same file. +- `encrypt` uses symmetric Fernet encryption and returns encrypted bytes. The reference explicitly warns it is **not an end-to-end secure encryption system**, because the key is stored alongside the encrypted data, even with `$SECRET(...)`. +- OpenPGP encryption takes strings or lists of strings and produces ASCII OpenPGP messages. RSA/PKI encryption takes strings and produces bytes; it is intended for short passphrases/identifiers, not large payloads. Serialize non-string data first, and parse or cast decrypted strings back to the required type. Use OpenPGP rather than PKI for larger blocks, as the reference recommends. + +### Deprecation check + +The current [deprecations document](../../hub/deprecations.rst) places `curie`, `uri-expand`, `lookup`, `reference`, `ni-collapse`, and `ni-expand` in deprecated DTL material and says not to use those features. Their presence in older examples does not make them current recommendations. Use the active NI/URI/hops references to design new transformations; they are not guaranteed drop-in substitutes for legacy RDF behavior. Separately, hops' `prefilters` is deprecated in favor of `subsets`. See [History and policies](../references/history-and-policies.md) for broader compatibility context. + +## 7. Reprocessing and focused validation + +DTL edits affect what happens when input is processed; do not assume already-seen entities are refreshed solely because the JSON changed. The annotated example describes clearing the pipe's `last-seen` value with `update-last-seen` to reprocess input. The [automatic reprocessing policy](../../hub/features/automatic-reprocessing.rst) adds the current configuration context: `continue` is the default, while `automatic` resets a pipe when it detects out-of-sync factors, including configuration changes. Choose and verify the reprocessing policy or explicit reset/rewind procedure; see [Configuration change lifecycle](../testing/configuration-change-lifecycle.md). + +[Dependency tracking](../../hub/features/dependency-tracking.rst) finds source entities affected by changes in joined datasets. It works by reversing `hops`/`apply-hops` traversal and is supported only with a `dataset` source, not a `merge` source. Preserve source join keys through preceding transforms: inverse traversal checks original source-dataset entities, not rewritten transform inputs. Namespace insertion and the dynamic `_S.$ids` value can also alter join keys; consult [DTL caveats](../../hub/dtl/caveats.rst) before relying on automatic join refresh. + +The documented [local test workflow](../../hub/documentation/operations/testing-locally.rst) uses endpoint expected-output files under `expected/`, paired `.json` and `.test.json` files, and `sesam -vv test`. Tests can choose a pipe stage, and published-endpoint tests can supply bound `parameters`. Run against an isolated node with external output pipes disabled or unable to send data. These are configuration-level tests; the examples above have not been executed here. + +Recommended focused fixtures: + +1. **Ordering and contexts:** read a just-added `_T` field; apply a nested rule and distinguish `_S`, `_P._S`, and `_R._S`. +2. **Shape and nulls:** scalar, missing field, `[]`, `[null]`, and `[null, 7]`; compare `coalesce-args`, `if-null`, and default `add-if`. +3. **Paths and namespaces:** dotted and apostrophe-containing keys; unqualified, fully qualified, `:`, and `::` paths; namespace processing both enabled and disabled. +4. **Output gates:** true and false transform filters with a previously stored sink ID; verify incremental deletion and that an earlier `create` is not canceled. Check invalid/missing IDs under `id_required`. +5. **Joins and refresh:** list overlap versus ordinary equality, missing/deleted join targets, deterministic versus explicitly sorted output, joined-entity updates, and lookup without dependency tracking. +6. **Typed boundaries:** decimal versus float, invalid cast fallback, Transit versus ordinary JSON, explicit UTC/timezone parsing, and `_B` parameter variations on a published endpoint. + +## 8. Read the published examples critically + +The references are useful explanations, but some displayed examples are internally inconsistent. They should not be treated as evidence of a successful run: + +- In the [annotated example](../../hub/dtl/annotated-example.rst), `order_count` is `2` in the proposed output, yet the final transform is `["filter", ["gt", "_T.order_count", 10]]`. That condition is false for two orders, so this entity would not survive as the ordinary primary output. With its dataset sink, the `_filtered` behavior applies instead. The explanation also says “Stop processing ... evaluates to true,” reversing the authoritative transform-filter contract. +- That example's proposed target uses numeric nested IDs `100` and `200`, but its joined and transformed order lists use strings `"100"` and `"200"`, and the `order` rule copies `_id` rather than converting it. Do not use that proposed target to infer an ID cast. +- The [path overview](../../hub/dtl/paths.rst) shows an extra comma in the explicit equivalent of the quoted path: `..., , "_S."]`. The corrected three-part call appears above. The [dictionary path examples](../../hub/dtl/dtl-functions-dictionaries.rst#path_dtl_function) also contain a malformed `1, "age" None` argument list: it is missing a comma and uses `None`, not JSON `null`. The description that non-string path items are ignored does not make the displayed JSON executable. + +Resolve such discrepancies using the function contract and configuration validation, then retain a small regression fixture for the behavior you depend on. Start further reading at the [DTL introduction](../../hub/dtl/introduction.rst), [path overview](../../hub/dtl/paths.rst#path_expressions_and_hops), and [full quick reference](../../hub/quick-reference.rst). diff --git a/openwiki/concepts/entities-datasets-and-identifiers.md b/openwiki/concepts/entities-datasets-and-identifiers.md new file mode 100644 index 00000000000..172f23514e6 --- /dev/null +++ b/openwiki/concepts/entities-datasets-and-identifiers.md @@ -0,0 +1,377 @@ +--- +type: data-model +title: Entities, dataset logs, typed values, and namespaces +description: Sesam's entity identity, append-only dataset, reserved-field, typed-value, and namespace contracts. Explains how updates, merges, continuation, and retention interact without confusing deletion with erasure. +tags: [entities, datasets, identity, transit, namespaces, retention] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-4bbe4e83d74f3fe902420d24 + resource: repo://hub/changelog.rst + - id: openwiki-source-d344167cc29afa386d95ff00 + resource: repo://hub/concepts.rst + - id: openwiki-source-44e50825666ef41bd80ca9cf + resource: repo://hub/documentation/building-blocks/datasets.rst + - id: openwiki-source-7441c6857e91f2e552a7f944 + resource: repo://hub/documentation/building-blocks/streams-of-entities.rst + - id: openwiki-source-a0efd05d2f703badad608052 + resource: repo://hub/documentation/connectors/connector-contract.rst + - id: openwiki-source-ab28f0a659eec676b26e672b + resource: repo://hub/documentation/data-management/entity-data-model.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-6a5de2a911806771b5cfd05a + resource: repo://hub/documentation/service-configuration/configuration-metadata.rst + - id: openwiki-source-3feb3cb0150ced7c7dca37f9 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst + - id: openwiki-source-c99ec556685a22ae8b7311b1 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-replicated-dataset.rst + - id: openwiki-source-9c3ad765d7f032ba45c225e7 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst + - id: openwiki-source-c32b360d8e1b5891f21864d1 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst + - id: openwiki-source-75145535d1d8227d4f64d8b6 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-rdf.rst + - id: openwiki-source-0dc85ac7312c5f7cf505e624 + resource: repo://hub/dtl/dtl-functions-namespaced-identifiers.rst + - id: openwiki-source-b080c011b8382aaeafbbc37b + resource: repo://hub/dtl/dtl-functions-transforms.rst + - id: openwiki-source-3198a0794ea4f00b67f0dc90 + resource: repo://hub/dtl/dtl-functions-uris.rst + - id: openwiki-source-133c24a94ca8f7beb23e7ab4 + resource: repo://hub/dtl/joins.rst + - id: openwiki-source-2b8c59d97f75284f0a8927f3 + resource: repo://hub/dtl/namespaces.rst + - id: openwiki-source-4b2bc117b6b0ce370e62adff + resource: repo://hub/features/change-tracking.rst + - id: openwiki-source-b16009034f286ce228a41a35 + resource: repo://hub/features/compaction-feature.rst + - id: openwiki-source-6c52db3ac69c47f1937708d3 + resource: repo://hub/features/deletion-tracking.rst + - id: openwiki-source-c4f45d3a0f3643170205d462 + resource: repo://hub/features/dependency-tracking.rst + - id: openwiki-source-d496de71635dcd7d5827ad5d + resource: repo://hub/features/durable-data.rst + - id: openwiki-source-476492e27f30fbe648642588 + resource: repo://hub/features/namespaces.rst + - id: openwiki-source-f9fc18ac8304102a9695537e + resource: repo://hub/images/dataset-structure.png + - id: openwiki-source-37fc6bff358e9ead6ffde752 + resource: repo://hub/json-pull.rst + - id: openwiki-source-730d55f17637dc8146b5d8cd + resource: repo://hub/rdf-support.rst + - id: openwiki-source-cc69c926ae6822f70af6a1c5 + resource: repo://hub/source-datatype-mapping.rst +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Entities, dataset logs, typed values, and namespaces + +An **entity** is Sesam's core data representation: a dictionary with string keys and values that can be literals, lists, or nested dictionaries. An entity must have a string `_id`. A **dataset** is a storage log of entity versions, supported by primary and secondary indexes—not just a mutable collection of current JSON objects. + +Keep three identities separate: + +- **Dataset id:** names the storage container. +- **Entity `_id`:** the string primary key within that dataset. A namespaced primary key is still a string, such as `demo-item:item-001`. +- **NI value:** a typed namespaced identifier used as a reference or alternative identity, serialized as `"~:demo-item:item-001"`. A string that merely contains a colon is not automatically an NI. + +See [Hub model and boundaries](../architecture/hub-model-and-boundaries.md) for the system boundary, [Pipes and systems](../configuration/pipes-and-systems.md) for configuration, and [DTL evaluation and operators](dtl-evaluation-and-operators.md) for expression semantics. + +## Dataset writes, indexes, reads, and retention + +Sesam is primarily an asynchronous batching and stream-processing system. Its Service API is not designed or guaranteed for large numbers of concurrent, low-latency, high-throughput user-facing clients; publish into a dedicated serving system when that is required. + +A pipe's pump pulls a stream from a source, applies transforms, and delivers the result to a sink. A normal `dataset` sink appends a version only if its `_id` is new or its content differs from the most recent version for that `_id`. It compares content hashes; an identical candidate is dropped rather than generating another log entry. Ordinary writes do not mutate earlier versions. + +```mermaid +flowchart TD + Input["Source entity stream"] --> Transform["Pipe transforms"] + Transform --> Writer["Dataset sink"] + Writer --> Compare["Compare content hash with latest version"] + Primary["Primary entity index"] --> Compare + Compare -->|Identical| Drop["Drop candidate"] + Compare -->|New or changed| Log["Append immutable entity version"] + Log --> Primary + Log --> Secondary["Secondary expression indexes"] + Log --> Reader["Dataset source with continuation"] + Secondary --> Joins["Hops joins"] + Secondary --> Subsets["Subset per indexed value"] + Subsets --> Reader + Reader --> Downstream["Downstream pipes"] + Policy["Version and time retention policy"] --> Compact["Compaction of eligible history"] + Tracking["Lowest dependency tracking offset"] -->|Bounds progress| Compact + Compact -->|Reclaims versions| Log +``` +*The dataset log is the stored history; indexes provide identity lookup, joins, and subset views, while retention is constrained by dependency-tracking progress.* + +The diagram's append-only contract describes normal writes. **Compaction can remove history**: append-only does not mean permanent archival retention. + +### Write and read entrypoints + +| Boundary | Contract that matters | +|---|---| +| Normal dataset sink | `sink.type: "dataset"`; `sink.dataset` defaults to the pipe id and is created on first write if absent. Its dataset id cannot contain `/` or target a `system:` dataset. | +| Dataset source | `source.type: "dataset"` with a required dataset id. `include_previous_versions` defaults to `false`: only the latest version per unique `_id` is returned. Enabling it exposes retained history, not history already compacted away. | +| Continuation | Dataset sources have fixed `supports_since: true`, `is_since_comparable: true`, and `is_chronological: true`. Pass continuation tokens back to the producer; do not decode them into application dates or identities. | +| Population | A sink dataset is considered populated when its initial offset is set. The default `set_initial_offset: "if-source-populated"` waits until the source is populated and all source entities have been consumed, propagating readiness downstream. `require_populated_input: true` on a dataset source prevents runs before the input is populated; its default is `false`. | +| Concurrent updates | Optional `enable_optimistic_locking: true` compares each candidate's `_updated` with the previous version. If at least one token does not match, an error is raised and no entities are written to the target dataset. This is a write precondition, not preservation of the supplied sequence token. | +| Sequence-preserving copy | A `replicated_dataset` sink, unlike the normal sink, preserves upstream entity sequence order and offsets. It does **not** support deletion tracking, entity re-posting, or circuit breakers. Use its dedicated contract for a faithful copy or rename, not assumptions from the normal writer. | + +Normal dataset versions receive a dataset-local `_updated` sequence. After a successful pump run, the pipe saves the newest processed `_updated` as its `since` position. The public field contract still requires consumers to treat this token as opaque. Detailed checkpoint, reset, and reprocessing behavior belongs in [Synchronization and state](../configuration/synchronization-and-state.md). + +The JSON Pull protocol returns a JSON **array**, even for one entity. `since` starts after the supplied offset, and `limit` caps the number of entities. Filtered publisher streams need special care: `X-Dataset-Filtered: true` means the consumer is not guaranteed to see an entity at `X-Dataset-Max-Updated`. Dataset recreation changes `X-Dataset-Generation`; backup restoration supplies restore UUID/offset headers. Do not equate an empty page with a new dataset or a timestamp checkpoint. See [Extensions and JSON protocols](../integrations/extensions-and-json-protocols.md). + +### Secondary indexes and subsets + +Secondary indexes are maintained automatically. They are declared implicitly by join expressions in `hops` and by subset definitions, or explicitly through dataset sink `indexes`. Orphaned indexes currently require removal through the UI or API. + +A subset is an indexed view that behaves like a dataset in dataset sources and hops. It is a **functional index**, not necessarily a single-property index: almost all deterministic DTL expressions that do not reference other datasets are supported. One index provides a subset per indexed value/key. + +For a dataset source, `subset` is an `eq` expression whose left side is the index expression and whose right side is a **literal**, not another expression: + +```json +{ + "type": "dataset", + "dataset": "demo-items", + "subset": ["eq", "_S.category", "demo-category"] +} +``` + +This is a newly authored synthetic source fragment. For an NI subset key, use a literal such as `"~:demo-category:sample"`, not `["ni", "demo-category", "sample"]`. Use **version 2 indexes** for subsets because version 1 does not support deletes. Subset equality follows join equality: any overlapping value suffices, including scalar/list joins. `null` values and deleted entities are not indexed for joins and are not traversed by them; subset delete support must not be confused with joining tombstones as live entities. + +`sink.indexes: "$ids"` maintains an alternative-identity index that the dataset browser uses for lookup through `_id` and `$ids`. `global_defaults.always_index_ids: true` enables this by default for dataset sinks; the service default is `false`. + +### Retention is part of the dependency contract + +The default compaction policy retains **two unique versions per entity**. Fewer than two makes dependency tracking best-effort: some reprocessable entities may be missed, especially in hops involving the sink dataset. Full or partial rescans are the documented countermeasure. `compaction.keep_versions: 0` requires a time threshold; it is not a standalone instruction to erase everything. + +Compaction cannot proceed beyond the lowest tracking offset of pipes doing dependency tracking on the dataset. **Disabled pipes also hold back compaction.** Dependency tracking itself is supported only for pipes using a dataset source: tracked entities must be looked up by id before a specific point in time and fed through the pipe again. A remaining `_previous` pointer therefore does not guarantee its target is still retained. + +Administer compaction schedules, disk usage, TTL settings, backups, and high-durability storage through [Deployment and durability](../operations/deployment-and-durability.md). Retention and durability solve different problems: keeping selected history does not protect writes from infrastructure loss. + +References: [Datasets](../../hub/documentation/building-blocks/datasets.rst), [Streams of entities](../../hub/documentation/building-blocks/streams-of-entities.rst), [Dataset sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst), [Dataset source](../../hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst), [Replicated dataset sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-replicated-dataset.rst), [Change tracking](../../hub/features/change-tracking.rst), [Compaction](../../hub/features/compaction-feature.rst), [Dependency tracking](../../hub/features/dependency-tracking.rst), [JSON Pull](../../hub/json-pull.rst). + +## Reserved and semi-reserved fields + +Root-level fields beginning with `_` are reserved. When writing an entity to a **normal dataset**, such fields are ignored except `_id` and `_deleted`; generated metadata belongs to the dataset writer, not the submitted content. This restriction is root-level only: nested dictionaries/child entities can contain underscore fields. The optimistic-locking precondition above is a deliberate use of incoming `_updated` before writing. + +| Field | Exact meaning | +|---|---| +| `_id` | Required string primary key. Do not substitute an Integer, URI, or typed NI for the string. | +| `_deleted` | Only `true` marks deletion; every other value is interpreted as not deleted. Its state contributes to content hashing. | +| `_updated` | Sequence/order token, string or integer. Opaque to anyone other than the source that produced it; may be passed as HTTP `since`. | +| `_hash` | Generated string hash of content. Among root reserved fields, **only `_id` and `_deleted` contribute**. Ordinary fields, including `$` fields, are hashed. | +| `_previous` | Generated pointer to the previous version's `_updated`. Missing or `null` means no previous version. A non-null pointer can refer to a version reclaimed by compaction. | +| `_ts` | Generated real-world time when the entity was added to the dataset: an Integer of **microseconds since 1970-01-01 UTC**. Informal metadata, not an application modification date or continuation token. | +| `_filtered` | Boolean signal added by DTL `filter` for sink deletion handling; see below. It is not an ordinary stored content flag. | +| `_tracked` | Legacy dependency-tracking marker. `true` indicates materialization by the old implementation; newer tracking does not require modifying entities. Do not use it as a current tracking-status API. | + +Fields beginning with `$` are **semi-reserved**: built-in components may produce or consume them, but they are normal fields for storage and hashing. + +| Field | Producer/consumer and purpose | +|---|---| +| `$ids` | Holds additional identities as NI values. The merge source collects merged identities here; these are not replacements for the required string `_id`. | +| `$children` | `create-child` puts child entities here; `emit_children` can later expand them into standalone entities. Dataset sink `track_children` compares with the previous version and produces a delta to detect deleted children during incremental syncs; it is inferred `true` when transforms use `create-child`, unless explicitly overridden `false`. | +| `$replaced` | Merge source sets it `true` on an old output identity superseded by another entity id. It identifies a replacement, not an ordinary business deletion. | +| `$retract` | With `compaction.retract` enabled, `true` permanently removes earlier versions from that pipe's sink dataset while retaining the current version. Without enabling that feature, the field alone does not request pruning. | + +The field prototype and Entity example in the authored [Entity Data Model](../../hub/documentation/data-management/entity-data-model.rst) contain malformed syntax. They are descriptive prototypes, not executable JSON. Examples on this page are independently authored synthetic examples, not silent corrections of those prototypes. + +### Updates, tombstones, filtering, replacement, and erasure + +| Operation | Effect and safety boundary | +|---|---| +| Ordinary update | Same `_id`, changed hashed content: append a new version. An unchanged candidate is dropped. Changing the deletion state is also a content change. | +| Tombstone | Write `_deleted: true` for an identity. This is a deleted **version**, not physical removal of all versions. | +| Disappearance from a full run | Dataset sink `deletion_tracking` defaults to `true`. At the end of a full run/rescan, identities present before the run but not seen in it receive deleted versions. Absence from one incremental batch is not this full-run disappearance test. | +| DTL filtering | A failed `filter` stops remaining DTL transforms. For a dataset sink it emits `_filtered: true` so an existing, not-already-deleted sink entity can be deleted even during incremental sync. Other sinks do not support this signal and the entity is discarded instead of passed to them. | +| Merge replacement | When merge membership/identity precedence changes the resulting id, the merge source emits a delete for the old id with `$replaced: true`. Do not treat this as removal of the represented object from every target system. Dataset source `include_replaced: false` suppresses such entities; default is `true`. | +| Delete TTL | `compaction.ttl_deletes_hours` makes a deleted entity eligible after the configured hours. When reclaimed, **all its versions** are removed. This is physical reclamation, not another update. | +| Retraction | `compaction.retract` defaults to `false`. With it enabled and `$retract: true` in output, all earlier versions are irreversibly removed; current version and deletion state are retained. It is idempotent and overrides `keep_versions` per entity. | + +**Retraction is sink-local, not end-to-end erasure.** It does not alter upstream datasets or external consumers. `$retract` travels like any other field but may be dropped by a merge source or `emit_children`. Every downstream pipe that must honor it needs the field explicitly in its output and `compaction.retract` enabled. Retained current content may still contain personal data: use placeholders in experiments, and do not infer a compliance guarantee from this operation alone. + +For explicit deletion-content control, set `_deleted` rather than relying on `filter`. A filter does not stop entities already emitted by `create`, and subsequent pipe transforms must handle `_filtered` carefully. The sink's `suppress_filtered` early-suppression optimization should only be used when output has exactly one version per `_id`; consult its reference before enabling it. + +There is also an empty-input safety choice: dataset source `if_source_empty` defaults to `"accept"`, which allows previously synchronized entities to be deleted. `"fail"` fails the run and avoids those deletes. Use population and empty-source policies deliberately, especially while changing transforms or subset membership. + +Merge identity is governed by equality rules, not merely similar-looking ids. Equality is transitive; `null` or empty equality results do not cause merging. New equality rules do not retroactively merge already-processed entities without reset/rescan. See [Master data management](../workflows/master-data-management.md) for merge design rather than collapsing alternative identities by hand. + +References: [Entity Data Model](../../hub/documentation/data-management/entity-data-model.rst), [DTL filter](../../hub/dtl/dtl-functions-transforms.rst#dtl_transform-filter), [Deletion tracking](../../hub/features/deletion-tracking.rst), [Merge source](../../hub/documentation/service-configuration/pipes/configuration-sources-merge.rst), [Connector contract](../../hub/documentation/connectors/connector-contract.rst), [Compaction and retract](../../hub/features/compaction-feature.rst). + +## Typed values and JSON/Transit encoding + +JSON object shape is not the whole type contract. Sesam supports Dict, Entity, List, String, Integer, Decimal, Float, Boolean, and Null, plus the extension types below. + +- Dict keys are strings. An Entity is a Dict with a string `_id`. Lists can mix types and nest dictionaries/lists. +- Integer has an unlimited positive/negative range. Decimal has arbitrary precision; prefer it where retaining precision matters. Float is IEEE 754 binary64 double precision and may lose precision. +- String's documented maximum length is `4294967296` bytes. This is **not** the dataset entity-size limit: dataset sink `max_entity_bytes_size` defaults to `104857600` bytes (100 MB), also configurable globally. +- Boolean is `true`/`false`; Null commonly represents a missing value. Latest changelog behavior serializes NaN and positive/negative infinity as `null`, not invalid JSON. + +Supported Transit extension literals are JSON strings with `~` followed by a type tag: + +| Type | Tag and synthetic example | Constraints | +|---|---|---| +| NI | `~:` — `"~:demo-item:item-001"` | Typed namespaced identifier, distinct from String and URI. | +| URI | `~r` — `"~rhttps://example.org/items/item-001"` | Typed Uniform Resource Identifier. | +| Date | `~t` — `"~t2024-01-02"` | Range `"~t0001-01-01"` to `"~t9999-12-31"`. | +| Datetime | `~t` — `"~t2024-01-02T03:04:05.123456789Z"` | Up to nanosecond precision; both date and time mandatory, optional fractional second, **UTC with mandatory `Z`**. Documented range `"~t0001-01-01T00:00:00Z"` to `"~t9999-12-31T23:59:59.123456789Z"`. | +| Bytes | `~b` — `"~bAAECAwQF"` | Base64-encoded binary. | +| UUID | `~u` — `"~u00000000-0000-4000-8000-000000000001"` | UUID as hexadecimal text. | +| Decimal | `~f` — `"~f12345678901234567890.1234567890"` | Arbitrary precision, unlike binary64 Float. | + +Only these Transit extension types are supported; unrecognized Transit types are treated as strings. There is currently **no escaping support for literal strings starting with `~`**. Do not assume a general Transit implementation's escape or tag support applies to Sesam. + +A synthetic entity illustrating the three identity representations and typed values: + +```json +{ + "_id": "demo-item:item-001", + "demo-item:label": "[personal-data placeholder]", + "demo-item:related": "~:demo-item:item-002", + "demo-item:link": "~rhttps://example.org/items/item-001", + "demo-item:observed": "~t2024-01-02T03:04:05Z", + "demo-item:amount": "~f12.3400", + "$ids": ["~:demo-item:item-001"] +} +``` + +### Mixed-type ordering + +The documented order from lowest to highest rank is: + +1. Null +2. Boolean +3. Integer, Float, Decimal +4. Date, Datetime +5. UUID +6. Namespaced identifier (NI) +7. URI +8. String +9. Dict +10. Tuple +11. Bytes + +Types sharing a rank are compatible and ordered together by value. Incompatible types are ordered by type rank, not lexical resemblance. For example, `["sorted", ["list", 1.5, "b", 1, "a", 2]]` returns `[1, 1.5, 2, "a", "b"]`. + +**Source inconsistency:** the Standard types table calls Dict, List, and Null “not orderable”, while the Mixed type ordering section ranks Null and Dict and explicitly says Dict values are ordered by sorting keys then comparing key/value pairs. The ranking above follows that focused ordering section. It lists **Tuple**, not List; do not invent a List rank or equate arbitrary list comparison with tuple/composite-key ordering. Test the exact comparison context if relying on these edge cases. + +Reference: [Entity types, extension tags, and ordering](../../hub/documentation/data-management/entity-data-model.rst), [serialization changelog](../../hub/changelog.rst). + +## Source datatype mapping: normalize after knowing the import type + +External types must be mapped into the entity model. For SQL sources, an unsupported column type must be blacklisted or coerced to a supported type by a custom query. **A native type name does not imply the same Sesam type across drivers.** These are the mappings documented in [Source datatype mappings](../../hub/source-datatype-mapping.rst), grouped without changing the native type names: + +| Source | Native types | Sesam type | +|---|---|---| +| SQL Server | `INT`, `TINYINT` | Integer | +| SQL Server | `BIGINT`, `NUMERIC`, `DECIMAL` | Decimal | +| SQL Server | `FLOAT`, `REAL` | Float | +| SQL Server | `BIT` | Boolean (`0` is `false`, `1` is `true`) | +| SQL Server | `CHAR`, `VARCHAR`, `NVARCHAR`, `DATETIME2`, `TIME`, `XML` | String | +| SQL Server | `DATE`, `DATETIME` | Datetime | +| SQL Server | `UNIQUEIDENTIFIER` | UUID | +| Oracle | `INTEGER` | Integer | +| Oracle | `NUMBER` | Float, depending on column definition | +| Oracle | `BINARY_FLOAT`, `BINARY_DOUBLE` | Float | +| Oracle | `CHAR`, `VARCHAR`, `VARCHAR2`, `CLOB`, `NCLOB`, `XMLType` | String | +| Oracle | `DATE`, `TIMESTAMP` | Datetime | +| Oracle | `BLOB`, `RAW`, `LONG RAW` | Bytes | +| MySQL | `INT`, `TINYINT`, `BIGINT`, `BIT`, `BOOLEAN`, `YEAR` | Integer; `BIT`/`BOOLEAN` are `0` or `1`, and documented `YEAR` range is `1901` to `2155` | +| MySQL | `NUMERIC`, `REAL`, `DOUBLE`, `DECIMAL` | Decimal | +| MySQL | `FLOAT` | Float | +| MySQL | `CHAR`, `VARCHAR`, `TEXT`, `TINYTEXT`, `TIME` | String | +| MySQL | `BINARY`, `VARBINARY`, `TINYBLOB`, `MEDIUMBLOB`, `BLOB`, `LONGBLOB` | Bytes | +| MySQL | `DATETIME`, `DATE`, `TIMESTAMP` | Datetime | +| MySQL | `ENUM`, `SET` | Varying by enum/set type; `SET` is a list of values | +| PostgreSQL | `INTEGER`, `SMALLINT`, `BIGINT` | Integer | +| PostgreSQL | `NUMERIC`, `DECIMAL` | Decimal | +| PostgreSQL | `REAL`, `DOUBLE` | Float | +| PostgreSQL | `BOOLEAN` | Boolean | +| PostgreSQL | `CHAR`, `VARCHAR`, `TEXT`, `DATE`, `TIME`, `UUID`, `XML` | String | +| PostgreSQL | `TIMESTAMP` | Datetime | +| PostgreSQL | `BYTEA` | Bytes | +| PostgreSQL | `ENUM` | Varying by enum type | + +Important temporal details: + +- SQL Server `DATETIME2` is driver-formatted String, documented as `YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]tz:offset`; DTL `datetime-parse` can convert it. SQL Server and MySQL `TIME` strings use `hh:mm:ss[.nnnnnnn]`. +- PostgreSQL `DATE` is a `YYYY-MM-DD` String, not Date or Datetime. Its `TIME` is a String documented as `hh:mm:ss[.nnnnnnn][+|-tz:offset]`, with fractional seconds and timezone-offset components. PostgreSQL `UUID` is String, unlike SQL Server `UNIQUEIDENTIFIER`. +- MySQL `DATE` becomes Datetime at midnight, documented as `00:00:00.00000`. +- The mapping reference says timezone-bearing SQL Server `DATE`/`DATETIME`, Oracle `DATE`/`TIMESTAMP`, MySQL `DATETIME`, and PostgreSQL `TIMESTAMP` values are shifted to UTC on import. + +The mapping document contains legacy tested-version statements and calls several native temporal ranges “unlimited to nanosecond precision”; the entity wire-type reference instead gives the bounded Date/Datetime ranges above. Do not treat the native-range wording as permission to emit an out-of-range Transit Datetime. Verify driver output and boundary values for the deployed source before writing precision-sensitive transforms. + +## Namespaces: placement, inheritance, and typed references + +Namespaces preserve attribute origin when combining sources and support late schema binding. The correct placement is **`namespace:identifier`**: an attribute `x` first created in pipe `y` normally becomes `y:x`, using that pipe's property namespace. Namespaces already carried by copied properties preserve their origin rather than being reassigned to every downstream pipe. + +**Explicit inconsistency in the overview:** [concepts.rst](../../hub/concepts.rst) says `x` in pipe `y` becomes `x:y`, but its own examples put the pipe first. The focused [Namespaces feature](../../hub/features/namespaces.rst) explicitly specifies `y:x`, and [DTL namespace syntax](../../hub/dtl/namespaces.rst) agrees. **Use `y:x`; the `x:y` sentence is inconsistent, not an alternate namespace convention.** + +Placement differs by role: + +- A property name is a string such as `demo-item:label`. +- `_id` keeps its reserved property name; the **value** can be the string `demo-item:item-001`. +- A reference value is NI-typed, for example `"~:demo-item:item-002"`. It is not the same type as either of the strings above or `"~rhttps://example.org/items/item-002"`. + +### Where namespace configuration acts + +| Setting | Scope/default and execution point | +|---|---| +| `namespaced_identifiers` | Service metadata default `false`; pipes inherit it unless explicitly overridden. It enables namespace-aware behavior and defaults for addition/removal; it is not itself an instruction to strip every outbound value. | +| `namespaces.identity` | Pipe identifier namespace; defaults to the pipe id. | +| `namespaces.property` | Pipe property namespace; defaults to the pipe id. It can differ from the identity namespace. | +| `add_namespaces` | If `true`, adds current identity namespace to `_id` and current property namespace to properties **before the first transform**. Normally an inbound-pipe setting. | +| `remove_namespaces` | If `true`, removes namespaces from `_id`, properties, and NI values **after the last transform**. Normally an outbound-pipe setting. | +| `namespaces.default` | Service metadata Dict of namespace-to-URI expansions, used by RDF-capable components. This is a URI expansion registry, not the pipe's identity/property namespace selection. | + +When namespace support is enabled in service metadata, the focused feature reference lists these source defaults for `add_namespaces: true`: `csv`, `kafka`, `ldap`, `sql`, `embedded`, `http_endpoint`, `json`. It lists these sink defaults for `remove_namespaces: true`: `csv_endpoint`, `elasticsearch`, `mail`, `rest`, `sms`, `solr`, `kafka`, `sql`, `http_endpoint`, `json`. Do not assume the same defaults for dataset-to-dataset pipes; inspect effective configuration and override deliberately. + +Service metadata is the special configuration entity `_id: "node"`, `type: "metadata"`, editable as configuration, through the UI, or through the Service API. For example, this independently authored synthetic fragment enables support and registers a URI expansion: + +```json +{ + "_id": "node", + "type": "metadata", + "namespaced_identifiers": true, + "namespaces": { + "default": { + "demo-item": "https://example.org/items/" + } + } +} +``` + +Built-in expansions are available unless explicitly overridden: `_`, `rdf`, `rdfs`, `owl`, `foaf`, `wgs84`, `xsd`, `dc`, `skos`, `dcterms`, and `gs`. In particular, `_` maps to `http://example.org/`. The metadata reference lists their exact URIs. `global_defaults.symmetric_namespace_collapse` defaults to `false`; setting it `true` changes RDF/SPARQL URI/NI collapse and expansion to be symmetrical. The old `ni-collapse` and `ni-expand` DTL functions are **deprecated**, even though metadata documentation still mentions them. + +### Namespace-aware DTL is not plain string matching + +`add`, `add-if`, `default`, `make-ni`, `remove`, `copy`, `rename`, and `path` are namespace-aware. Wildcards respect the namespace/identifier boundary; `copy` and `remove` patterns use the **last colon** as the separator. Unqualified property references generally match that property in all namespaces. Consult each function rather than treating every unqualified argument identically: + +- `add` of an unqualified property uses the current property namespace; for `_id`, string values use the identity namespace. A fully qualified property is preserved. +- `copy` of `label` can copy `label` in all namespaces. `rename` to an unqualified new name preserves each original namespace; renaming to one fully qualified property collects the values into that property. +- `":label"` is relative to the current property namespace. `"::label"` means the unqualified value as-is; `"::demo-item:label"` is equivalent to `"demo-item:label"`. Identity contexts use the current identity namespace for the single-colon form. These are **DTL argument escapes**, not Transit `~` escapes. + +To construct a typed reference, `["ni", "demo-item", "item-001"]` produces `"~:demo-item:item-001"`. Without a `NAMESPACE` argument, `ni` uses the global namespace. URI values are accepted only without that argument: their prefixes collapse to declared namespaces, or to generated namespaces for undeclared prefixes. `ni` does not escape strings. `uri` casts strings to URIs without URI escaping; use deliberate URL quoting where required. Do not use colon detection as a substitute for `is-ni`/`is-uri` type checks. + +References: [Namespaces feature](../../hub/features/namespaces.rst), [Service metadata](../../hub/documentation/service-configuration/configuration-metadata.rst), [Namespace-aware DTL and escapes](../../hub/dtl/namespaces.rst), [Transform functions](../../hub/dtl/dtl-functions-transforms.rst), [NI functions](../../hub/dtl/dtl-functions-namespaced-identifiers.rst), [URI functions](../../hub/dtl/dtl-functions-uris.rst), [Deprecation changelog](../../hub/changelog.rst). + +## RDF boundary + +RDF triples map subjects to entity identities, predicates to properties, and literal/URI objects to values. The RDF source turns blank nodes into child entities. On RDF output, nested entities become blank nodes, lists repeat the predicate for each entry, and RDF datatypes are assigned from property types. RDF language tags are not supported. Verify the receiver accepts blank nodes; otherwise flatten nested data with DTL before publishing. URI expansion configuration and the NI/URI distinction therefore affect interoperability, not just display labels. + +See [Working with RDF](../../hub/rdf-support.rst) and [RDF source](../../hub/documentation/service-configuration/pipes/configuration-sources-rdf.rst) for format and endpoint details. + +## Focused verification before changing a data flow + +These are recommended contract checks, not a claim that tests were executed here: + +1. **Hash stability:** submit the same synthetic `_id` and content twice; verify no new version. Change an ordinary or `$` field and verify a new version. Change only submitted `_ts`/`_hash` and verify they are not accepted as content overrides. +2. **Deletion lifecycle:** test an explicit tombstone, disappearance from a full rescan, and failure of a filter during an incremental run. Confirm downstream handling distinguishes `$replaced` from a real deletion. Test `if_source_empty` and population gating before enabling destructive full-run behavior. +3. **History and continuation:** compare latest-only reads with `include_previous_versions: true`, pass `_updated` back unchanged, and verify filtered publisher/header behavior. Check history after compaction rather than assuming `_previous` is dereferenceable. +4. **Type fidelity:** round-trip NI, URI, Decimal, Bytes, Date, and UTC nanosecond Datetime values. Test source-specific `DATE`, `UUID`, `BOOLEAN`, and large-number mappings and the mixed-type ordering your joins/transforms actually use. +5. **Namespace boundaries:** inspect before-first-transform and after-last-transform stages; verify string `_id`, NI references, explicit property/identity namespaces, copy/rename origin preservation, and colon escapes. Test URI expansion separately from namespace stripping. +6. **Retraction:** in a disposable dataset, create several versions, enable retract, and verify only the current version remains with unchanged deletion state. Check that upstream data is unchanged and downstream output deliberately carries `$retract`. Never test irreversible pruning on real personal data. + +The documented local-testing workflow uses Sesam client `sesam -vv test`, an `expected` directory, and paired `.json` / `.test.json` files. It can compare stages or published endpoints and blacklist output properties. Because internal fields other than `_id` and `_deleted` are removed from test output, supplement fixture comparison with direct dataset/API inspection for hash, timestamp, offset, and retention checks. See [Testing locally](../../hub/documentation/operations/testing-locally.rst). diff --git a/openwiki/concepts/index.md b/openwiki/concepts/index.md new file mode 100644 index 00000000000..27f5d8a8cc5 --- /dev/null +++ b/openwiki/concepts/index.md @@ -0,0 +1,4 @@ +# Files + +- [DTL evaluation, paths, typing, and operator lookup](dtl-evaluation-and-operators.md) - Explains how DTL builds target entities, binds nested contexts, traverses properties and datasets, and handles typed scalar, list, and null values. Provides task-grouped routes to exact operator signatures and reference caveats. +- [Entities, dataset logs, typed values, and namespaces](entities-datasets-and-identifiers.md) - Sesam's entity identity, append-only dataset, reserved-field, typed-value, and namespace contracts. Explains how updates, merges, continuation, and retention interact without confusing deletion with erasure. diff --git a/openwiki/configuration/index.md b/openwiki/configuration/index.md new file mode 100644 index 00000000000..8c8413e3275 --- /dev/null +++ b/openwiki/configuration/index.md @@ -0,0 +1,4 @@ +# Files + +- [Configuration structure, pipes, systems, and defaults](pipes-and-systems.md) - A practical map of Sesam configuration entities, pipe building blocks, system references, environment substitution, and default precedence. Includes small examples and task-oriented links to the detailed connector contracts. +- [Synchronization, scheduling, completeness, and recovery state](synchronization-and-state.md) - How pipe offsets, checkpoints, schedules, dependency tracking, completeness, rescans, and failure controls determine safe incremental processing. Explains deletion hazards and the prerequisites for resetting or recovering a pipe. diff --git a/openwiki/configuration/pipes-and-systems.md b/openwiki/configuration/pipes-and-systems.md new file mode 100644 index 00000000000..0a094295986 --- /dev/null +++ b/openwiki/configuration/pipes-and-systems.md @@ -0,0 +1,348 @@ +--- +type: configuration-contract +title: Configuration structure, pipes, systems, and defaults +description: A practical map of Sesam configuration entities, pipe building blocks, system references, environment substitution, and default precedence. Includes small examples and task-oriented links to the detailed connector contracts. +tags: [configuration, pipes, systems, defaults, environment-variables] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-234db1e602402344ad89c2b8 + resource: repo://hub/cron-expressions.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-6a5de2a911806771b5cfd05a + resource: repo://hub/documentation/service-configuration/configuration-metadata.rst + - id: openwiki-source-9b06b9e105f615155cf1f604 + resource: repo://hub/documentation/service-configuration/environment-variables/environment-variables.rst + - id: openwiki-source-abfd7f3c3362dcbbd85c64ef + resource: repo://hub/documentation/service-configuration/general/configuration-general.rst + - id: openwiki-source-b88ab8bcd7069b9437346a72 + resource: repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst + - id: openwiki-source-811b94c0236de6dfe3bad74f + resource: repo://hub/documentation/service-configuration/pipes/configuration-pump.rst + - id: openwiki-source-9856e3b68ce295aee64f2081 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-conditional.rst + - id: openwiki-source-3feb3cb0150ced7c7dca37f9 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst + - id: openwiki-source-05bf7439a418093a5a72733a + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-http.rst + - id: openwiki-source-daba448c9f0497c50826d185 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-rest.rst + - id: openwiki-source-2ed74b51fe27af42cd4802fb + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks.rst + - id: openwiki-source-238996d9476162250beea643 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-conditional.rst + - id: openwiki-source-9c3ad765d7f032ba45c225e7 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst + - id: openwiki-source-a3888ae3630bf88a4bb17720 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-embedded.rst + - id: openwiki-source-709dcd56cf1f6f81f6584be7 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst + - id: openwiki-source-0b016c49ad5a5e105f9d582d + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst + - id: openwiki-source-3159735537684e71e741d194 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-sql.rst + - id: openwiki-source-d6b1a7911ad4b2f54edfb598 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources.rst + - id: openwiki-source-d2e06093276478de287e6334 + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-conditional.rst + - id: openwiki-source-3ba3816116976234f8f45a82 + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst + - id: openwiki-source-9ab42454ff803b278c631c1f + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-http.rst + - id: openwiki-source-80d11a77ba6626aaf9a2d07f + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst + - id: openwiki-source-89e59f155188034abce5bfff + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst + - id: openwiki-source-c734d3226c0f5253ac569339 + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst + - id: openwiki-source-4865a86a618464c24a142191 + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-xml.rst + - id: openwiki-source-12eefe420238d0851d538a0d + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms.rst + - id: openwiki-source-e3ab6d41e79b5df3ed8f521c + resource: repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst + - id: openwiki-source-163bce835c4447a1ecea1d96 + resource: repo://hub/documentation/service-configuration/systems/configuration-systems-sql.rst + - id: openwiki-source-4b9a915a059dfbaf16712b15 + resource: repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst + - id: openwiki-source-b15f1f3b073de71b578bbbbc + resource: repo://hub/documentation/service-configuration/systems/configuration-systems.rst + - id: openwiki-source-3902473100e6919f4481c8d0 + resource: repo://hub/extension-points.rst + - id: openwiki-source-9a56442cc8c2e13506dcd073 + resource: repo://hub/index-service-configuration.rst + - id: openwiki-source-cc69c926ae6822f70af6a1c5 + resource: repo://hub/source-datatype-mapping.rst + - id: openwiki-source-c92a884f90ca8ac7f160c79a + resource: repo://hub/swagger_public.yaml +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Configuration structure, pipes, systems, and defaults + +Use this page to choose where a setting belongs and which reference defines its contract. The repository supplies documentation and an API specification, not the Hub runtime implementation; the behavior below is the documented contract, and the examples are **synthetic illustrations**, not deployment templates or a list of defaults. + +For the broader model see [Hub model and boundaries](../architecture/hub-model-and-boundaries.md). For a guided implementation see [Build an integration](../workflows/build-an-integration.md). Offset handling, rescans, completeness, and reset policy belong in [Synchronization and state](synchronization-and-state.md); authentication, ACLs, and secret handling belong in [Security and secrets](../operations/security-and-secrets.md). + +## 1. Configuration entity boundary + +The service accepts one or more JSON configuration files, imported through the Service API or created/edited in Sesam Management Studio. Conceptually the configuration is a **JSON array of objects**, primarily systems and pipes, with an optional special service-metadata entity. + +- Every component `_id` must be unique **across the solution**, including across files in a multi-file configuration. A pipe and a system cannot share a component id. +- Pipe and system `_id` values are strings and must not contain `/`. +- A system's `type` identifies its family, for example `system:rest`, `system:url`, or a database-specific system type. A pipe's `type` must be `pipe`. +- A source or sink using a system has a `system` string matching that system's `_id`; supported transforms can also reference systems. This is a component reference, not a URL or a dataset id. +- Entity `_id` values carried through a flow are a different identity domain: the source contract requires an id unique to each logical entity within that flow, while allowing multiple versions. See [Entities, datasets, and identifiers](../concepts/entities-datasets-and-identifiers.md). + +Sources: [General configuration](../../hub/documentation/service-configuration/general/configuration-general.rst), [Pipes](../../hub/documentation/service-configuration/pipes/configuration-pipes.rst), [Systems](../../hub/documentation/service-configuration/systems/configuration-systems.rst), and [Sources](../../hub/documentation/service-configuration/pipes/configuration-sources.rst). + +### Pipe envelope + +| Property | Type | Required? | Contract when omitted or supplied | +| --- | --- | --- | --- | +| `_id` | String | Yes | Service-wide unique component id; no `/`. | +| `type` | String | Yes | Only `pipe`. | +| `source` | Object | Yes in the property reference | Selects the source component. Explicitly configure it; see the publisher-example discrepancy below. | +| `transform` | Object or List | No | No transformation when omitted. A list is chained in its given order: each output becomes the next input. | +| `sink` | Object | No | Defaults to a `dataset` sink whose `dataset` is the pipe `_id`. Omission does **not** discard output. | +| `pump` | Object | No | Scheduling/retry configuration for pumped pipes; endpoint pipes are request-driven exceptions. | +| `name` | String | No | Human-readable name. Missing source, sink, and pump names are generated by postfixing the pipe name with `source`, `sink`, or `pump`. | +| `description`, `comment` | String or list of strings | No | Human-readable documentation. | + +For configured sources, sinks, and transforms, `type` is a required string. Other required properties depend on that component's reference; an object containing only `type` is not a universal valid connector configuration. + +```mermaid +flowchart LR + Pump["Pump schedules and drives a run"] -.-> Source["Source entity stream"] + Source --> First["First transform"] + First --> Second["Next transform"] + Second --> Sink["Sink writes output"] +``` +*An ordinary pumped pipe applies transforms in configuration order before writing to its sink; the chain may also be absent.* + +Sources stream entities; transforms can reshape, filter, or construct entities; sinks write to an internal dataset or an external target. The pump drives reading/writing and owns execution logging and failed-write retries. See the [pump reference](../../hub/documentation/service-configuration/pipes/configuration-pump.rst) for the operational contract rather than treating it as another transform. + +### System envelope + +A system centralizes reusable connection services and properties such as connection pooling, authentication, and protocol settings. Its optional `worker_threads` is an **Integer**, default `10`, limiting the number of concurrent pipes using that system; it is not the same as a SQL connection-pool size. Optional `name` is a String; `description` and `comment` accept a String or list of strings. + +A system's optional `metadata` is an object with string keys and JSON-valued entries. Do not confuse this component annotation with the optional **service metadata entity**, illustrated as `{"_id":"node","type":"metadata",...}`. Service metadata configures installation-wide behavior and defaults, and can be added as a configuration entity, edited in the UI, or updated through the Service API. + +Sources: [Systems common properties](../../hub/documentation/service-configuration/systems/configuration-systems.rst), [Service metadata](../../hub/documentation/service-configuration/configuration-metadata.rst). + +## 2. Defaults are scoped, not one generic merge + +First read the component property table, including dynamic defaults and exceptions. Then check whether it explicitly inherits from service metadata, a system, or a REST operation. Do not infer that every identically named property inherits, or that every object is deep-merged. + +The API distinguishes `config.original` (raw user configuration) from `config.effective` (what runtime components use after environment-variable and shorthand expansion). Inspect the latter when diagnosing a surprising default or substitution; see the [API Pipe definition](../../hub/swagger_public.yaml). + +### Representative inherited settings + +All entries below are optional. The value column gives the documented baseline **when no override is supplied**, not a recommended production policy. + +| Setting in service metadata | Type and baseline | Component scope / override | +| --- | --- | --- | +| `namespaced_identifiers` | Boolean, `false` | Pipes inherit it unless explicitly overridden on the pipe. | +| `global_defaults.infer_pipe_entity_types` | Boolean, `true`; `false` for developer subscriptions | Pipe-level `infer_pipe_entity_types` can configure schema inference locally. | +| `global_defaults.verify_ssl` | Boolean, `false` | Default for URL-system `verify_ssl`, and thus also applicable to REST systems which extend URL systems. Explicitly setting `true` in an example is an override, not the documented default. | +| `global_defaults.if_source_empty` | Enum, `"fail"` or `"accept"`; metadata table leaves the default blank | Supporting sources override it with `if_source_empty`; SQL, REST, and dataset references list `"accept"`. `"fail"` fails an empty-source run and preserves previously synced dataset entities; `"accept"` permits deletion tracking to remove unseen entities. | +| `global_defaults.require_populated_input` | Boolean, `false` | Dataset-reading sources can override with `require_populated_input`; `true` prevents a run until the input dataset(s) are populated. | +| `global_defaults.use_signalling_internally` | Boolean, `true` | Applies to internal dataset-to-dataset flows. Supporting sources use `supports_signalling` for explicit overrides; see the schedule caveat below. | +| `dependency_tracking.dependency_warning_threshold` / `dependency_error_threshold` | Integer counts, `10000` / `50000` entities | Same pipe-level properties inherit these limits. Exceeding the warning threshold logs a warning; exceeding the error threshold fails the pump. | +| `dependency_tracking.dependency_warning_threshold_total_bytes` / `dependency_error_threshold_total_bytes` | Integer bytes, `33554432` / `134217728` | Same pipe-level properties inherit memory-size warning/error limits. Raising them can cause excessive memory use. | + +The dataset-source table lists `supports_signalling` as `false`, but its prose describes effective global inheritance: implicit signalling is disabled when the interval is **less than one hour** or a cron expression is used, unless explicitly enabled on the source. An explicit `supports_signalling` setting applies regardless of schedule. Signals are best-effort and not persisted; retain a scheduled backup. This is a scoped/dynamic default, not a universal `false`. + +Sources: [Service metadata](../../hub/documentation/service-configuration/configuration-metadata.rst), [Pipe properties](../../hub/documentation/service-configuration/pipes/configuration-pipes.rst), [Dataset source](../../hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst). + +### Component-specific defaults and precedence worth checking + +- **Scheduling:** `pump.schedule_interval` is an optional Number in **seconds**; `pump.cron_expression` is an optional String evaluated in UTC. They are mutually exclusive, with cron taking precedence if both are supplied. With neither supplied, the documented default is `30` seconds ± `1.5` for dataset-source **and** dataset-sink pipes, and `900` seconds ± `45` for other pumped pipes. Endpoint components do not use this scheduling model. +- **Batching:** pipe `batch_size` is an optional Integer ≥ `1`, usually `100`, but depends on other settings; a REST sink makes the pipe default `1`. Buffering trades memory for throughput and only bulks writes if the sink supports batches. A sink may have its own `batch_size`, useful when transforms expand the input. Batch failure can fall back to individual retries; optional Boolean pump `fallback_to_single_entities_on_batch_fail` controls this behavior and defaults to `true`. +- **Preview safety:** common transform `side_effects` is an optional Boolean defaulting to `false`, but **HTTP and REST transforms default it to `true`**. A transform that changes a remote system must be marked as side-effecting to protect against inadvertent changes through features such as preview. Do not copy the generic default onto a write-capable transform. +- **URL transport:** optional Integer `connect_timeout` and `read_timeout` default to `60` and `1800` **seconds** respectively. Required String `url_pattern` inserts the relative URL at `%s`, or appends it if the token is absent. Deprecated `base_url` instead uses URL joining; the reference says exactly one of the two must be supplied. +- **HTTP retries:** optional Object `retry_strategy` on a URL system supplies status-code-specific pump retry defaults, including a `default` key. A retry property explicitly set on the pump takes priority over that strategy. Detailed retry and checkpoint behavior is covered by [Synchronization and state](synchronization-and-state.md). + +Sources: [Pumps](../../hub/documentation/service-configuration/pipes/configuration-pump.rst), [Cron expressions](../../hub/cron-expressions.rst), [Pipe batching](../../hub/documentation/service-configuration/pipes/configuration-pipes.rst), [Transforms](../../hub/documentation/service-configuration/pipes/configuration-transforms.rst), [HTTP transform](../../hub/documentation/service-configuration/pipes/configuration-transforms-http.rst), [REST transform](../../hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst), [URL system](../../hub/documentation/service-configuration/systems/configuration-systems-url.rst). + +## 3. Representative building blocks + +### REST system plus a collecting pipe + +Illustrative configuration array, assuming a remote response shaped like `{"results":[{"id":"c1",...}]}` and an environment variable `catalog-host` supplied separately: + +```json +[ + { + "_id": "catalog-api", + "type": "system:rest", + "url_pattern": "https://$ENV(catalog-host)/api/%s", + "verify_ssl": true, + "operations": { + "list-companies": { + "method": "GET", + "url": "companies", + "payload_property": "results", + "id_expression": "{{ id }}" + } + } + }, + { + "_id": "catalog-company-collect", + "type": "pipe", + "source": { + "type": "rest", + "system": "catalog-api", + "operation": "list-companies" + }, + "pump": {"cron_expression": "0/15 * * * *"} + } +] +``` + +The REST system extends the URL system. The source requires String `system` and `operation`. Named operations require String `url` and case-sensitive String `method` (`GET`, `POST`, `PUT`, `DELETE`, `PATCH`, `OPTIONS`, or `HEAD`). Here the operation parses `results` and derives entity ids using Jinja `id_expression`; the omitted sink writes to dataset `catalog-company-collect`. + +An `operations` Object must exist on the REST system or the referencing REST component. If defined in both places, the component's version takes precedence; store shared operations on the system. For a REST source, optional String `payload_property` and `id_expression` may be specified locally or in the operation, with the source taking precedence. Operation `headers` is an optional Dict: keys override system header defaults, but cannot discard inherited keys. Secrets in source-operation definitions are restricted to operations defined on the system; consult the security page before moving such definitions into a pipe. + +Sources: [REST system and Operation properties (`rest_operations`)](../../hub/documentation/service-configuration/systems/configuration-systems-rest.rst), [REST source](../../hub/documentation/service-configuration/pipes/configuration-sources-rest.rst). + +### Dataset source and an ordered validation chain + +Illustrative pipe reading the preceding dataset: + +```json +{ + "_id": "catalog-company-checked", + "type": "pipe", + "source": {"type": "dataset", "dataset": "catalog-company-collect"}, + "transform": [ + {"type": "dtl", "rules": {"default": [["copy", "*"]]}}, + { + "type": "json_schema", + "schema": { + "type": "object", + "properties": {"_id": {"type": "string"}}, + "required": ["_id"] + } + } + ] +} +``` + +The dataset source requires String `dataset`, returns only the latest version per entity by default (`include_previous_versions: false`), and needs no external system reference. The DTL transform requires an Object `rules` with a `default` named rule; optional Boolean `id_required` defaults to `true` and fails for missing/non-string target ids. DTL details belong in [DTL evaluation and operators](../concepts/dtl-evaluation-and-operators.md). + +`json_schema` **annotates validation results rather than inherently rejecting invalid entities**: optional String `key_valid` defaults to `"valid"` (Boolean result), and `key_errors` defaults to `"errors"` (list of messages, added only when invalid). It requires Object `schema` unless String `schema_url` is supplied; external schemas also require String `system` referencing a URL system, and the fetched schema is stored under `schema` in the effective pipe configuration. Add explicit downstream policy if invalid records must not reach a target. + +The omitted dataset sink writes to `catalog-company-checked`, creating the dataset on first write if absent. Dataset-sink ids cannot contain `/` or reference a `system:` dataset. Optional Boolean `deletion_tracking` defaults to `true`: after a full run, previously existing entities not seen during that run are deleted. This makes empty-source policy a consequential choice, not just a diagnostic preference. + +Sources: [Dataset source](../../hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst), [DTL transform](../../hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst), [JSON Schema validation](../../hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst), [Dataset sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst). + +### SQL source: table versus query + +Illustrative **source fragment**, not a complete pipe; `warehouse-db` must be a configured SQL system: + +```json +{ + "type": "sql", + "system": "warehouse-db", + "query": "select customer_id, modified_at, name from customers", + "primary_key": "customer_id", + "updated_column": "modified_at", + "updated_query": "select customer_id, modified_at, name from customers where modified_at >= :since" +} +``` + +| SQL-source property | Type / requirement | Contract | +| --- | --- | --- | +| `system` | String, required | References a SQL system which supplies connection pooling/authentication. Source transactions are deliberately read-only. | +| `table` / `query` | `table`: String; `query`: String or List | Alternative relation selectors. `table` takes precedence if both are supplied; schema belongs in optional String `schema`, not in `table`. Query string lists are joined with newlines. See the required-status inconsistency below. | +| `primary_key` | String or List | A table may infer keys from metadata; a query requires an explicit key or compound-key list. | +| `updated_column` | String, optional | Enables `since` support dynamically. In the table case its type must support `>=` tests. | +| `updated_query` | String or List, needed for query-based continuation | Full incremental query with a `:since` binding; lists are joined with newlines. | +| `fetch_size` | Integer, optional, default `1000` | Rows per cursor fetch; not pipe `batch_size`. | +| `preserve_null_values` | Boolean, optional, default `false` | Null-valued columns are omitted unless enabled. | +| `whitelist` / `blacklist` | List, optional | Include/exclude columns; when both exist, the blacklist filters the whitelist. | + +The full and incremental queries must cover the same identity population. The reference warns that a failed full run resumed incrementally can otherwise delete ids never seen; it mentions `is_chronological_full: false` as a mitigation. Do not assert chronological behavior for a custom query without proving its ordering. Unsupported column types must be excluded or coerced to supported types. + +SQL systems separately define pool settings: optional Integer `pool_size` defaults to `10`, `pool_max_overflow` to `10` (hard connection limit is their sum), and `pool_timeout` to `30` **seconds**. These limits are separate from system `worker_threads` and source `fetch_size`. + +Sources: [SQL source](../../hub/documentation/service-configuration/pipes/configuration-sources-sql.rst), [SQL systems](../../hub/documentation/service-configuration/systems/configuration-systems-sql.rst), [Column type mapping](../../hub/source-datatype-mapping.rst). Continuation strategies belong in [Synchronization and state](synchronization-and-state.md). + +## 4. Environment substitution and conditional selection + +`$ENV(variable)` inserts environment values into System, Pipe, and service-metadata property values. Variables are managed separately through the Environment Manager API. Composition such as `"https://$ENV(host):$ENV(port)/%s"` is supported; values containing multiple environment variables always resolve to a String. Environment references cannot be nested, and environment and secret references can be combined but cannot nest inside one another. + +Two mechanisms serve different purposes: + +1. **`$conditional_properties`** selects properties to replace at the level containing the block. Its `condition` commonly uses `$ENV(...)`, and its `alternatives` maps condition values to property objects. Replacement is **not an object merge**. Put a conditional block inside an object when only some of that object's properties should vary. Blocks can nest, but cannot set root `_id` or root `type`, and are not supported in transforms or embedded data. +2. **A component with `type: "conditional"`** selects an entire source, sink, or transform when the parent pipe is created. Required String `condition` looks up a key in required Object `alternatives`; every possible condition value must have an alternative. This is environment/component selection, not an entity-by-entity DTL branch. A conditional transform is supported even though `$conditional_properties` inside transforms is not. + +Illustrative URL system with a local timeout override when `environment` is `test`: + +```json +{ + "_id": "file-server", + "type": "system:url", + "url_pattern": "https://$ENV(file-host)/%s", + "verify_ssl": true, + "connect_timeout": 60, + "$conditional_properties": { + "condition": "$ENV(environment)", + "alternatives": {"test": {"connect_timeout": 120}} + } +} +``` + +Sources: [Environment variables and conditional properties](../../hub/documentation/service-configuration/environment-variables/environment-variables.rst), [Conditional source](../../hub/documentation/service-configuration/pipes/configuration-sources-conditional.rst), [Conditional sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-conditional.rst), [Conditional transform](../../hub/documentation/service-configuration/pipes/configuration-transforms-conditional.rst). + +## 5. Task-to-reference map + +The [Service Configuration Guide toctree](../../hub/index-service-configuration.rst) routes through General, Environment variables, Service metadata, Pipes, and Systems. Within Pipes, follow the **Sources**, **Transforms**, **Sinks**, and **Pumps** toctrees. The map below points to those actual references instead of creating a wiki page for every option. + +| Task | Start here | Important distinction | +| --- | --- | --- | +| Call a remote HTTP/REST API | [REST system](../../hub/documentation/service-configuration/systems/configuration-systems-rest.rst) (`rest_system`, `rest_operations`), [REST source](../../hub/documentation/service-configuration/pipes/configuration-sources-rest.rst), [REST sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-rest.rst), [REST transform](../../hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst) | Operations, payload/entity shape, pagination, and response extraction belong to these contracts; transport properties are inherited from [URL system](../../hub/documentation/service-configuration/systems/configuration-systems-url.rst). | +| Read or write database relations | [SQL source](../../hub/documentation/service-configuration/pipes/configuration-sources-sql.rst), [SQL sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-sql.rst), [SQL systems](../../hub/documentation/service-configuration/systems/configuration-systems-sql.rst) plus the [Systems toctree](../../hub/documentation/service-configuration/systems/configuration-systems.rst) | Choose the database-specific system, including the separately listed Legacy Microsoft SQL Server family; do not treat `system:sql` as a generic database configuration. | +| Read/store internal datasets or combine inputs | [Dataset source](../../hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst), [Dataset sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst), [Sources toctree](../../hub/documentation/service-configuration/pipes/configuration-sources.rst) | Follow its Merge, Merge datasets, and Union datasets entries for their distinct combination contracts. Embedded/Empty sources are also listed there; embedded data is for small static datasets, not bulk storage. | +| Receive posted entities or publish entities on demand | [HTTP endpoint source](../../hub/documentation/service-configuration/pipes/configuration-sources-http.rst) (`http_endpoint_source`), [HTTP endpoint sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-http.rst) (`http_endpoint_sink`) | Both use `type: "http_endpoint"`, **not** `rest`, and do not pump on a schedule. The receiver flows only on POST; the publisher flows only on retrieval. Receiver JSON supports an object or an array with `application/json`. Publisher URL parameters are bound to DTL variable `_B`. | +| Select environment-specific building blocks | [Conditional source](../../hub/documentation/service-configuration/pipes/configuration-sources-conditional.rst), [Conditional sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-conditional.rst), [Conditional transform](../../hub/documentation/service-configuration/pipes/configuration-transforms-conditional.rst) | Use full-component alternatives, not `$conditional_properties`, to select a transform. | +| Reuse REST-oriented transform templates | [Template transform](../../hub/documentation/service-configuration/pipes/configuration-transforms-template.rst) (`template_transform`) | Required `template` is String or Object; required `properties` is Object. Follow `template_transform_collect_rest`, `template_transform_defaults_rest`, and `template_transform_share_rest` for the bundled templates. These are not arbitrary Jinja text templates; an Object template body can override the built-in version for development. | +| Validate or serialize an entity | [JSON Schema validation](../../hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst) (`json_schema_transform`), [XML transform](../../hub/documentation/service-configuration/pipes/configuration-transforms-xml.rst) (`xml_transform`), [XML endpoint sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-xml.rst) | XML transform renders the XML-sink entity shape into required String `xml-property` and continues the chain. Optional Boolean `include-xml-decl` defaults to `false`; `skip-deleted-entities` defaults to `true`. Publishing XML is a sink concern. | +| Delegate custom processing | [HTTP transform](../../hub/documentation/service-configuration/pipes/configuration-transforms-http.rst), [Extension points](../../hub/extension-points.rst), [Microservice system](../../hub/documentation/service-configuration/systems/configuration-systems-microservice.rst) | HTTP transform POSTs and receives JSON arrays with `application/json`; non-2xx responses raise an exception. Its reference recommends the more flexible REST transform for most uses. URL systems connect external endpoints; microservice systems host Docker services in Sesam. | +| Use other connector families | [Sources toctree](../../hub/documentation/service-configuration/pipes/configuration-sources.rst), [Sinks toctree](../../hub/documentation/service-configuration/pipes/configuration-sinks.rst), [Systems toctree](../../hub/documentation/service-configuration/systems/configuration-systems.rst), [Transforms toctree](../../hub/documentation/service-configuration/pipes/configuration-transforms.rst) | Find Binary/CSV/JSON, Kafka/LDAP, RDF/SDShare/SPARQL inputs; CSV/XML endpoints, JSON push, search, email/SMS, Null, and replicated-dataset outputs; matching systems and RDF/Emit children transforms. These families do not all share the same properties. See [Connectors and contracts](../integrations/connectors-and-contracts.md). | + +For an illustrative endpoint pair, explicitly specify the publisher input rather than relying on an abbreviated source example: + +```json +[ + {"_id": "incoming", "type": "pipe", "source": {"type": "http_endpoint"}}, + {"_id": "incoming-publish", "type": "pipe", "source": {"type": "dataset", "dataset": "incoming"}, "sink": {"type": "http_endpoint"}} +] +``` + +The documented local URL forms are `http://localhost:9042/api/receivers/incoming/entities` for POST and `http://localhost:9042/api/publishers/incoming-publish/entities` for retrieval. These illustrate routing, not externally deployed hostnames or an authorization policy. + +## 6. Reference caveats and focused checks + +Do not copy prototypes blindly: + +- The environment-variable examples use unprefixed system types such as `oracle` and `url`, whereas the system prototypes use `system:...`. They also demonstrate `base_url`, which the URL-system table explicitly deprecates in favor of `url_pattern`. +- The SQL-source table marks `table` required while its prose and query examples explicitly permit `query` instead. Interpret this as a table/query choice and configure query keys explicitly; do not add both merely to satisfy the table marker. +- The dataset-sink table marks `dataset` required but also states it defaults to the pipe id, agreeing with the pipe's omitted-sink rule. +- The HTTP-publisher example omits `source` and describes reading a same-named dataset, while the pipe property table marks `source` required. The examples on this page always set it explicitly. +- The dataset-sink table calls `max_entity_bytes_size` an Enum, but describes a byte limit with numeric default `104857600`; service metadata defines `global_defaults.max_entity_bytes_size` as Integer with the same default. This is a documented type inconsistency: check node validation rather than assuming the enum label is authoritative. +- Prototypes contain placeholders, and some reference examples are not valid standalone JSON. A prototype is a shape sketch, not proof of defaults; for example, REST-system `rate_limiting_delay` is `60` in its prototype but `1` in its default column. + +These caveats are visible in the linked component references, not implementation corrections made by this wiki. + +Before promoting a change, use these **recommended checks**, with the full procedure in [Configuration change lifecycle](../testing/configuration-change-lifecycle.md): + +1. Parse the JSON; check solution-wide component-id uniqueness, slash restrictions, supported component `type`, and system/dataset references. +2. Compare original and effective configuration for every environment choice. Check whole-object replacement, conditional alternative coverage, schedule/transport overrides, and inherited metadata settings. +3. Exercise a small fixture through the transform chain. Include missing/non-string ids, invalid schema input, null SQL columns, and empty-source results. Verify final dataset names when sinks are omitted; verify deletion expectations in an isolated node. +4. Keep test output pipes disabled or unable to write to real systems, and preserve side-effect protection for remote transforms. The documented Sesam-client test workflow drains queues and compares endpoint output using `expected/.json` and `expected/.test.json`; `sesam -vv test` runs the tests. Tests can select `source`, `before-transform`, `after-transform`, or `sink` stages and publisher parameters for targeted checks. + +Testing reference: [Testing a Sesam configuration locally](../../hub/documentation/operations/testing-locally.rst). These are integration/configuration checks against a service instance, not runtime unit tests present in this documentation repository. diff --git a/openwiki/configuration/synchronization-and-state.md b/openwiki/configuration/synchronization-and-state.md new file mode 100644 index 00000000000..4b9b7fbdbcc --- /dev/null +++ b/openwiki/configuration/synchronization-and-state.md @@ -0,0 +1,320 @@ +--- +type: synchronization lifecycle +title: Synchronization, scheduling, completeness, and recovery state +description: How pipe offsets, checkpoints, schedules, dependency tracking, completeness, rescans, and failure controls determine safe incremental processing. Explains deletion hazards and the prerequisites for resetting or recovering a pipe. +tags: [synchronization, scheduling, state, completeness, recovery, configuration] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-e389b2c6e31446ccc4126746 + resource: repo://hub/api.rst + - id: openwiki-source-234db1e602402344ad89c2b8 + resource: repo://hub/cron-expressions.rst + - id: openwiki-source-859607aeae4d97d50f4df39e + resource: repo://hub/custom-data-source.rst + - id: openwiki-source-ab28f0a659eec676b26e672b + resource: repo://hub/documentation/data-management/entity-data-model.rst + - id: openwiki-source-5836a7a1bfae906d1c6a7cca + resource: repo://hub/documentation/operations/continuous-integration.rst + - id: openwiki-source-77b000efded2deb34b873d22 + resource: repo://hub/documentation/operations/pump-execution.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-6a5de2a911806771b5cfd05a + resource: repo://hub/documentation/service-configuration/configuration-metadata.rst + - id: openwiki-source-b88ab8bcd7069b9437346a72 + resource: repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst + - id: openwiki-source-811b94c0236de6dfe3bad74f + resource: repo://hub/documentation/service-configuration/pipes/configuration-pump.rst + - id: openwiki-source-3feb3cb0150ced7c7dca37f9 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst + - id: openwiki-source-9c3ad765d7f032ba45c225e7 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst + - id: openwiki-source-709dcd56cf1f6f81f6584be7 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst + - id: openwiki-source-d6b1a7911ad4b2f54edfb598 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources.rst + - id: openwiki-source-c27c69f00f9a3913135cc0c4 + resource: repo://hub/dtl/caveats.rst + - id: openwiki-source-782bcbded2c4efbea17fb497 + resource: repo://hub/features/automatic-reprocessing.rst + - id: openwiki-source-4b2bc117b6b0ce370e62adff + resource: repo://hub/features/change-tracking.rst + - id: openwiki-source-37c7f6d871629d1cd07528c6 + resource: repo://hub/features/circuit-breakers.rst + - id: openwiki-source-b16009034f286ce228a41a35 + resource: repo://hub/features/compaction-feature.rst + - id: openwiki-source-444c59bcbf1ae7540ab05a9d + resource: repo://hub/features/completeness-feature.rst + - id: openwiki-source-6c52db3ac69c47f1937708d3 + resource: repo://hub/features/deletion-tracking.rst + - id: openwiki-source-c4f45d3a0f3643170205d462 + resource: repo://hub/features/dependency-tracking.rst + - id: openwiki-source-cdddf93a1e40c7459b0e0f3b + resource: repo://hub/features/property-lineage.rst + - id: openwiki-source-6a3033d532ffd0de8f23cc8a + resource: repo://hub/features/scheduling-and-signalling.rst + - id: openwiki-source-abbaf1a032635daa7f6e9355 + resource: repo://hub/idempotency.rst + - id: openwiki-source-37fc6bff358e9ead6ffde752 + resource: repo://hub/json-pull.rst + - id: openwiki-source-f517d5139873e41493bf54fa + resource: repo://hub/management-studio.rst + - id: openwiki-source-c92a884f90ca8ac7f160c79a + resource: repo://hub/swagger_public.yaml +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Synchronization, scheduling, completeness, and recovery state + +A pipe's **pump** reads source entities, passes them through the configured transforms, and writes them to the sink. It also handles failed writes and execution logging. Safe incremental processing depends on more than a schedule: the source must honor its continuation contract, the pump must preserve progress, and the sink must distinguish a changed entity from a replayed one. + +This page describes the repository's documented behavior, not undocumented runtime internals. For the component configuration structure, see [Pipes and systems](pipes-and-systems.md); for reserved fields and dataset versions, see [Entities, datasets, and identifiers](../concepts/entities-datasets-and-identifiers.md). + +## State that must not be confused + +| State | Owner and meaning | What it does **not** establish | +| --- | --- | --- | +| `_updated` and `since` | The source supplies an entity's continuation token in `_updated` and interprets the returned `since` token. Stored dataset versions receive a dataset-local incremental `_updated` counter. | A token is not universally a timestamp or portable between datasets. | +| `pipe_offset` / last-seen | The pump stores the continuation marker that determines where subsequent reads resume. The Service API exposes and can update it. | Having an offset does not mean every related dataset has caught up. | +| Populated / initial offset | The dataset sink's initial offset marks its dataset populated. This can propagate downstream. | Populated does not mean nonempty or continually up to date. | +| Completeness timestamp | Successful runs propagate a time boundary from source and related datasets to the sink dataset. A source can use it to hold back recent entities. | Completeness is not the pump's resume offset. | +| Dependency tracking offset | A pipe tracks how far it has examined changes in a referenced dataset. Compaction respects these offsets. | This is not content hashing or a property-lineage graph. | + +Sources: [Continuation support](../../hub/documentation/service-configuration/pipes/configuration-sources.rst), [Change tracking](../../hub/features/change-tracking.rst), [Dataset sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst), [Completeness](../../hub/features/completeness-feature.rst), and [Compaction](../../hub/features/compaction-feature.rst). + +## Documented run control flow + +```mermaid +flowchart TD + Trigger["Schedule, signal, or manual start"] --> Allowed{"Pump allowed to run?"} + Allowed -->|No| Wait["Wait or resolve blocked state"] + Allowed -->|Yes| Policy["Apply reprocessing policy"] + Policy --> Kind{"Select run kind"} + Kind -->|Full| Full["Read from beginning"] + Kind -->|Incremental| Incremental["Read after stored last-seen"] + Kind -->|Partial| Partial["Read from shifted last-seen"] + Full --> Gates["Apply populated and completeness gates"] + Incremental --> Gates + Partial --> Gates + Gates --> Process["Transform and write eligible entities"] + Process --> Outcome{"Run outcome"} + Outcome -->|Error| Recovery["Read, write, batch, or breaker controls"] + Recovery --> Pending["Retry, stop, or require recovery"] + Outcome -->|Completion| Progress["Save changed offset"] + Progress --> Sweep{"Full run with deletion tracking?"} + Sweep -->|Yes| Deletes["Write deleted versions for unseen ids"] + Sweep -->|No| Success["Successful-run state propagation"] + Deletes --> Success + Success --> Downstream["Propagate populated and completeness state"] +``` + +*Logical control flow derived from the pump, source, sink, and feature documentation; it summarizes decisions rather than prescribing an internal call order, and background-rescan concurrency is explained below.* + +“Read from beginning” is subject to the source contract: `initial_since_value`, when configured on a since-capable source, is used when no offset exists or after reset and can deliberately omit older data. Do not assume that clearing the pump offset necessarily retrieves the entire external history. [Source reference](../../hub/documentation/service-configuration/pipes/configuration-sources.rst) + +## Scheduling and signalling + +Settings in this section belong under `pump` unless stated otherwise. + +- **Normal schedule:** `schedule_interval` is seconds between runs; `cron_expression` specifies times. They are mutually exclusive, but if both are supplied, **`cron_expression` takes precedence**. Without either, dataset-source-to-dataset-sink pipes default to 30 seconds ±1.5 seconds; other pipes default to 900 seconds ±45 seconds. The documentation recommends explicitly choosing cron for pipes that read or write external systems. +- **Cron syntax:** five fields are minutes, hours, day of month, month, and day of week; a sixth optional field is year. Evaluation uses **UTC**, not local time. `W` and `#` are unsupported despite a `#` example appearing in the examples table; follow the explicit restriction. For example, `"0 0 * * *"` schedules midnight UTC. +- **Missed runs:** the planned start time is persisted for cron schedules and intervals **longer than one hour**. If the service cannot run at that time, it tries as soon as it can. +- **Startup:** `run_at_startup` and `run_at_startup_if_not_populated` both default to `false`; they request startup runs in addition to the normal schedule, with the latter conditional on the dataset not being populated. +- **Mode:** `mode: "scheduled"` is the default. `"manual"` permits only manual Service API starts; `"off"` cannot be started. Runtime `disable` stops automatic scheduling but does not prevent a manual `start`; Management Studio documents that an already-running pipe finishes unless stopped. + +**Signalling is an accelerator, not durable scheduling.** `global_defaults.use_signalling_internally` defaults to `true` for internal dataset-to-dataset flows. A change to an input dataset schedules a run immediately; it does not interrupt a running pipe. Per-source `supports_signalling` overrides this behavior, including on non-internal flows. The dataset-source reference says that an interval below one hour or a cron expression disables implicit signalling unless it is explicitly enabled on the source. Explicit `supports_signalling: true` works regardless of the pump schedule. Signals are best-effort and **not persisted**, so retain a scheduled backup even when signalling is enabled. + +References: [Pump scheduling and mode](../../hub/documentation/service-configuration/pipes/configuration-pump.rst), [Cron expressions](../../hub/cron-expressions.rst), [Global signalling defaults](../../hub/documentation/service-configuration/configuration-metadata.rst), [Dataset-source signalling](../../hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst), and [Management Studio controls](../../hub/management-studio.rst). + +## Continuation and checkpoint persistence + +A source's continuation flags are promises about its actual output, not optimization switches to enable indiscriminately. The pump selects its strategy in this order: + +| Conditions | Strategy | Recovery consequence | +| --- | --- | --- | +| `supports_since: true` and `is_chronological: true` | **Chronological**: accept `_updated` values in stream order. | The marker can advance during the run and be saved periodically, allowing resume after an incomplete run. This wins even if tokens are also comparable. | +| `supports_since: true` and `is_since_comparable: true`, without chronological ordering | **Maximum**: collect the maximum `_updated` value seen. | The new marker is known only at the end of the run; an interrupted unordered request must be reread rather than resumed at the last received entity. | +| Neither combination applies | **None** | No `since` tracking, even if `supports_since` alone is true. | + +Comparable means lexical/bytewise comparison can order the tokens. Chronological means the source emits increasing order. Declaring either falsely can prevent correct change tracking. A `dataset` source fixes all three flags to `true`, so uses chronological continuation. By default it returns only the latest version for each `_id`; `include_previous_versions: true` changes that selection. + +**Checkpoint persistence:** the pipe-level `checkpoint_interval` counts **batches**, not entities or seconds. The documented default is `10000 / batch_size` (100 batches at the usual batch size of 100), except that `batch_size: 1` defaults to `checkpoint_interval: 1`. A changed offset is always saved at the end of the sync. This setting controls saving progress; it does not make an unordered source chronological. Larger checkpoint intervals leave more processed work to reread if a run stops before saving progress. + +For custom sources, expose meaningful `_updated` tokens and honor `since`, with only truthful flags enabled. The JSON Pull protocol defines `since` as the offset **after** which streaming starts, and no `since` as reading from the beginning. See [Extensions and JSON protocols](../integrations/extensions-and-json-protocols.md) for the integration boundary. + +References: [Source strategies and stored `pipe_offset`](../../hub/documentation/service-configuration/pipes/configuration-sources.rst), [Pipe checkpoint settings](../../hub/documentation/service-configuration/pipes/configuration-pipes.rst), [Dataset-source continuation](../../hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst), and [JSON Pull](../../hub/json-pull.rst). + +## Full, incremental, partial, and background runs + +| Run | Read boundary and intended use | Deletion effect | +| --- | --- | --- | +| **Incremental** | Starts with a nonempty stored last-seen marker and processes entities after it. | Missing entities in a delta cannot establish disappearance from the whole source. | +| **Reset / full** | An explicit reset reprocesses all source entities, subject to source configuration such as `initial_since_value`. | On completion, a dataset sink with deletion tracking deletes previously present ids not seen during the run. | +| **Partial rescan** | Rewinds the current since value by `partial_rescan_delta` on runs selected by `partial_rescan_run_count`. | A bounded reread is not evidence of absence from the entire source. | +| **Background rescan** | Reprocesses all source entities while allowing incremental work, when background rescans are enabled. | Performs deletion tracking on completion, with protections against concurrent incremental output. | + +`rescan_run_count` selects a complete rescan every N runs: `2` gives incremental, rescan, incremental, rescan. `rescan_cron_expression` schedules full rescans by time and is mutually exclusive with that count. `partial_rescan_run_count` requires `partial_rescan_delta` and is also documented as mutually exclusive with `rescan_cron_expression`; complete rescans take precedence when both count-based choices apply. An integer since value is reduced by the delta; a timestamp is shifted back by that many seconds—for example, 3600 means one hour. Configure these under `pump`. + +**Background-rescan prerequisites:** only a `dataset` sink supports the protection needed to avoid overwriting newer incremental results. Background rescans default to disabled; enable the pipe-level `enable_background_rescan` or `global_defaults.enable_background_rescan`. Scheduled rescan settings and the manual `start-rescan` operation can initiate them. Only one incremental run is active at a time, but successive incremental runs may overlap an unfinished rescan, and a rescan can start during an incremental run. + +The documentation distinguishes two concurrency cases: + +1. **Incremental output is correct**, such as after a DTL change. If incremental work starts during the rescan, the rescan stops processing at the first incremental run's last-seen boundary. It does not overwrite or deletion-track away that incremental output. Without incremental work, the rescan can pass the stored offset and begin advancing it; incremental starts are then prohibited. Ordering can differ from a reset, and older versions may be suppressed even with `include_previous_versions: true`. +2. **Incremental output may be temporarily incorrect**, such as after merge-source configuration changes. Incremental work uses the old merge source, does not overwrite rescan output, and is not put in the sink's seen tracker. At completion, the rescan stops any active incremental run, catches up changes since its start, and deletion-tracks away erroneous incremental output. + +In this concurrent-rescan context, incremental runs **do not perform retries**, because the rescan reprocesses failures; they **do perform dependency tracking**. An interrupted rescan normally resumes; `reset-rescan` makes the next rescan start from the beginning instead. + +References: [Run definitions and rescan concurrency](../../hub/documentation/service-configuration/pipes/configuration-pump.rst), [Background-rescan enablement](../../hub/documentation/service-configuration/pipes/configuration-pipes.rst), and [Pump operations](../../hub/swagger_public.yaml). + +## Populated-input and completeness gating + +### Populated is an initialization condition + +A dataset becomes populated when its initial offset is set. Dataset-source `require_populated_input: true` prevents a run until the input dataset is populated; its default is `false`, with a service-wide `global_defaults.require_populated_input` override available. + +Dataset-sink `set_initial_offset` controls propagation: + +- `"if-source-populated"` (default): set it when the source is populated and all source entities have been consumed. +- `"always"`: set it after successful completion. +- `"never"`: never set it. +- `"initially"`: set it at the start of the pump run. +- `"onload"`: set it when the pipe is loaded/configured. + +The default propagates initialization downstream; the early-setting alternatives should not be interpreted as proof that a successful import has finished. [Dataset source](../../hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst) · [Dataset sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst) + +### Completeness is a processing time boundary + +On a **successful run**, the sink dataset inherits the smallest completeness timestamp of the source and related datasets. Inbound pipes use current time; an `http_endpoint` source can instead receive `X-Dataset-Completeness` in the POST request. That header must be a positive integer; microseconds since epoch is the recommended representation. + +At pipe level, `include_completeness` selects contributing datasets; without it, contributors default to datasets in sources and transforms except those in `exclude_completeness`. Exclusion wins if an id is in both lists. If all datasets are excluded, the pipe generates a new completeness timestamp. + +At the **dataset source**, select the gate: + +| Setting | Gate | +| --- | --- | +| `completeness: true` | Return only entities whose `_ts` is older than or equal to the source dataset's completeness timestamp. Default is `false`. | +| `completeness: ["dataset-a", "dataset-b"]` | Use the minimum completeness timestamp of the named upstream datasets. | +| `completeness: {"expression": ...}` | Evaluate a DTL expression before each start; it must return a datetime. A non-datetime falls back to `"~t1970-01-01T00:00:00Z"`, usually holding back all entities. | +| `initial_completeness: ["dataset-a"]` | Return entities only once the listed datasets have a completeness value, irrespective of its value. | + +This reduces transmission of intermediate versions while dependent pipelines catch up. It does not imply that a full run sees every latest entity. + +> **Deletion hazard — completeness plus full rescan:** completeness filtering may hide latest entities during a full rescan. With the dataset sink's default `deletion_tracking: true`, hidden ids count as unseen and can be deleted from the sink dataset. Before any reset or full rescan, verify that the filtered stream is intended to be authoritative for deletion. If it is not, set sink `deletion_tracking: false` or redesign the flow; completeness alone is not a deletion-safety guarantee. + +References: [Completeness propagation and warning](../../hub/features/completeness-feature.rst), [Dataset-source gates](../../hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst), and [HTTP endpoint completeness](../../hub/documentation/service-configuration/pipes/configuration-sources-http.rst). + +## Content changes, dependencies, and lineage are different mechanisms + +**Content change tracking** compares a prospective dataset entity's `_hash` with its previous version. Identical content is dropped rather than generating a new dataset version. New identity, changed non-reserved content, or a changed `_deleted` status can produce a write. Of reserved fields, only `_id` and `_deleted` contribute to the hash, so a changed continuation token alone is not a content change. Reprocessing input therefore need not generate new downstream versions. This protection applies to dataset writes; it is not a general promise that repeating writes to an external system is harmless. + +**Dependency tracking** answers a different question: which source entities need transforming again because a joined dataset changed? For customers joined to addresses, changing an address must cause the corresponding customer to be reprocessed even if the customer's own content is unchanged. DTL `hops` and `apply-hops` expressions are analyzed and their traversal is inverted—from the changed referenced entity back toward the pipe's source dataset. + +**Restriction and join invariant:** dependency tracking is supported only for a pipe with a `dataset` source, because tracked source entities must be looked up by id before a particular point in time. A merge-source pipe does not gain dependency tracking for its DTL hops; split merging and the joined transform into separate pipes if this is required. With chained transforms, joins in later transforms must still evaluate to the same values as on the original source entity. Rewriting join properties, adding namespaces, or dynamic `_S.$ids` wrapping can break inverse matching. See [DTL joins and transformation patterns](../workflows/dtl-joins-and-transformation-patterns.md). + +**Reconcile the older description:** the dependency feature article describes putting the customer at the front of the dataset log again. Read that as the intended reprocessing effect, not as a current implementation guarantee. The entity model explicitly says `_tracked` belongs to an older materializing implementation and has been superseded by dependency tracking that does not require modifying entities. Do not depend on `_tracked` or assert that current tracking rewrites the source log. + +**History and memory constraints:** `compaction.keep_versions` defaults to `2`; below two, dependency tracking becomes best-effort and can miss reprocessable entities. Full or partial rescans are documented countermeasures. Tracking offsets hold off compaction, including for disabled pipes. Pipe-level `dependency_tracking` thresholds warn at 10,000 entities or 33,554,432 bytes, and fail at 50,000 entities or 134,217,728 bytes by default. The exact settings are `dependency_warning_threshold`, `dependency_error_threshold`, `dependency_warning_threshold_total_bytes`, and `dependency_error_threshold_total_bytes`. `enable_hops_thresholds: true` extends these controls to regular hops and is recommended in development; it defaults to `false`. + +**Property lineage** is a best-effort graph of property dependencies built from static pipe analysis and schema-inference data. It aids navigation and explanation; it is distinct from runtime entity reprocessing. + +References: [Change tracking](../../hub/features/change-tracking.rst), [Entity reserved fields and superseded `_tracked`](../../hub/documentation/data-management/entity-data-model.rst), [Dependency tracking](../../hub/features/dependency-tracking.rst), [DTL caveats](../../hub/dtl/caveats.rst), [Compaction](../../hub/features/compaction-feature.rst), [Dependency thresholds](../../hub/documentation/service-configuration/pipes/configuration-pipes.rst), and [Property lineage](../../hub/features/property-lineage.rst). + +## Deletion and administrative progress changes + +**Deletion effects:** a dataset sink defaults to `deletion_tracking: true`. After a full run, previously existing ids not seen in the run get a new version with `_deleted: true`; this is not physical history removal. `mark_deletion_tracked: true` adds `"$deletion_tracked": true` to deletions produced by full-run/rescan tracking; it defaults to `false`. Continuation alone cannot infer deletions from absent delta entries. Import explicit deleted entities or arrange regular full synchronization when the source does not report deletions. + +Two other deletion mechanisms matter during incremental work. DTL `_filtered: true` signals a dataset sink to delete an existing entity; sinks without that support discard the filtered entity instead. Dataset-sink `track_children` compares `$children` with the previous parent version to detect removed children for `create-child` and `emit_children` flows. It is inferred as `true` when a transform uses `create-child`, but can be explicitly disabled. Neither mechanism requires inferring disappearance from an incomplete delta. + +**Empty-source acceptance:** dataset-source `if_source_empty` defaults to `"accept"`. An accepted empty full import can delete all previously synchronized entities when deletion tracking applies. `"fail"` fails when the source returns no entities, preserving previous dataset entities from that sweep. `global_defaults.if_source_empty` supplies a service-wide default, overridden on individual sources. Do not confuse an empty incremental delta with an authoritative empty full snapshot. + +**Prerequisites before administrative actions:** inspect the source-specific offset format, current `pipe_offset`, input population/completeness, deletion policy, retry backlog, and target replay behavior. Quiesce automatic scheduling and stop active work when planning disruptive state edits; `disable` alone does not stop an active run. A reset does not make non-idempotent target operations safe. Set pipe-level `disable_set_last_seen: true` to protect against accidental reset or last-seen changes (default `false`). + +The Service API entrypoint is `GET` or form-encoded `POST /api/pipes/{pipe_id}/pump`; POST uses the `operation` form field. Use credentials appropriate to the node. These actions are not interchangeable: + +| Action | Effect and safety boundary | +| --- | --- | +| **Reset** via `update-last-seen` with `last-seen` set to an empty string | Clears progress so the next run behaves like its first run. Management Studio's Reset describes the dataset sequence equivalent as setting since to 0; do not generalize that number to every source. Restart is Reset plus Start. Review completeness and deletion hazards first. | +| **Last-seen change** via `update-last-seen` with a source-specific value | Rewind to reprocess a bounded range, or move forward and skip work. The value is not a universal integer. | +| `set-last-seen-to-end` / Reset to end | Skips unread source entities and may cause data loss; not supported by all sources. Intended for deliberate development/testing scenarios. | +| `start-rescan` / `reset-rescan` | Start a rescan unless one is already active / discard its resume boundary so the next rescan begins at the start. Verify dataset-sink background-rescan support and deletion policy. | +| `reset-tracking` (experimental) | **Unsafe while running.** Tracking resumes at dependent datasets' ends as of the next pump run, not the API call. Skipped changes can make output incorrect; use only in development or with a planned full sync soon afterward. | +| `discard-retries` | Pending write-error retries are ignored on the next run. Discarded failures are **not** written to the dead-letter dataset. Treat this as abandoning recovery, not resolving delivery. | +| Delete sink dataset in Management Studio | Deletes the sink dataset and resets since to 0. This is more destructive than replaying into an existing dataset. | + +References: [Deletion tracking](../../hub/features/deletion-tracking.rst), [Sink deletion settings](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst), [Empty-source behavior](../../hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst), [Last-seen protection](../../hub/documentation/service-configuration/pipes/configuration-pipes.rst), [Pump API operations](../../hub/swagger_public.yaml), [Service API authentication](../../hub/api.rst), [Studio actions](../../hub/management-studio.rst), and [Target idempotency considerations](../../hub/idempotency.rst). + +## Automatic reprocessing versus continuing out of sync + +A pipe may fall out of sync after configuration changes, dataset deletion/recreation, source truncation, restore from backup, new joins or inputs, or deletion of a hopped-to dataset. `reprocessing_policy` is a pipe-level choice, with `global_defaults.reprocessing_policy` providing the default: + +- **`"continue"` (default):** continue processing inputs without resetting, even when factors indicate a reset is needed. The pipe maintains a list of affected datasets; continued processing is not proof of a repaired historical output. +- **`"automatic"`:** detect out-of-sync conditions and reset/full-rescan, or in some situations rewind rather than reread everything. + +Pipe `rescan_when_config_changes: true` requests reset on configuration change when automatic reprocessing is enabled; otherwise it marks the pipe out of sync. This happens on the next run, and the setting defaults to `false`, inherited from service metadata. It is not a synonym for `reprocessing_policy: "automatic"`. + +At external dataset boundaries, JSON Pull carries population, completeness, maximum committed offset, generation, and restore information in headers. A deleted/recreated dataset gets a new generation UUID; a restored dataset exposes restore UUID/offset. Automatic reprocessing uses several of these headers to decide on rewind/reset. Preserve the protocol rather than treating a saved numeric offset as sufficient recovery state. See also [Deployment and durability](../operations/deployment-and-durability.md). + +References: [Automatic reprocessing](../../hub/features/automatic-reprocessing.rst), [Configuration-change policy](../../hub/documentation/service-configuration/pipes/configuration-pipes.rst), [Metadata defaults](../../hub/documentation/service-configuration/configuration-metadata.rst), and [JSON Pull state headers](../../hub/json-pull.rst). + +## Failure handling: separate the controls + +All settings below belong under `pump`. A per-entity retry budget is not a read-retry budget, an immediate-write budget, or a circuit breaker. + +| Layer | Exact settings and defaults | Documented behavior | +| --- | --- | --- | +| **Read retries** | `max_read_retries: 0`, `read_retry_delay: 0` | Default logs the read error without retry. A nonzero budget retries reads; delay is seconds between attempts, otherwise retries are immediate. | +| **Immediate write errors** | `max_consecutive_write_errors: 1`, `write_retry_delay: 0` | Default terminates the run on the first write error. A higher consecutive-error limit allows immediate retry attempts; the delay applies when the limit exceeds 1. | +| **Retry dataset/backlog** | `max_write_errors_in_retry_dataset: 0` | Default effectively disables write-error replay. A positive value limits retryable, not-dead failed entities in the execution history. Exceeding it stops admission of more failures and terminates the run even if other retry limits are not reached. | +| **Per-entity exhaustion** | `max_retries_per_entity: 5` | Limits how often a failing entity is retried for sink writes before giving up. Raising this alone does not enable a retry backlog. | +| **Batched-write retries** | `batch_retries: 3` | Maximum retries for batched writes; only relevant when the sink supports batching. | +| **Batch fallback** | `fallback_to_single_entities_on_batch_fail: true` | A failed batch can be processed one entity at a time. Disable only with awareness of single-entity processing cost and failure isolation. | +| **Dead letters** | `dead_letter_dataset` unset | Optional destination after per-entity exhaustion, with write-error retries enabled. The dataset must be unique per pipe; access is restricted to users authorized to see the pipe configuration. | + +The “retry dataset” is the pump's execution-history dataset, documented as `system:pump_execution:`, not the dead-letter destination. It records write failures with a copy of the failed entity; depending on settings, they are retried during later runs. A successful newer source version can resolve an older failed version and make it non-retryable. A dead entity is no longer retried until a new version arrives from the source; if configured, it is copied to the dead-letter dataset. + +`track_dead_letters: false` is the default. Enabling it is documented to delete a previous dead letter when a later version is successfully written, with an execution-log lookup performance cost. **Documentation caveat:** its activation condition is still expressed in terms of deprecated `use_dead_letter_dataset` plus active retries, while `dead_letter_dataset` is the replacement setting. Do not infer from this wording that setting the modern destination alone guarantees dead-letter cleanup; verify the deployed version's behavior before relying on it. + +Execution records expose `sync_type` (`full`, `partial`, `incremental`), completion/failure, retry flags, and success/failure counters. Error or retry activity always implies logging; no-op logging is controlled by `log_events_noop_runs` (default `false`), and `log_events_noop_runs_changes_only` (default `true`) uses sink changes rather than merely source output to decide no-op status. The execution dataset's entity structure is explicitly **not a stable public application API**. See [Monitoring and troubleshooting](../operations/monitoring-and-troubleshooting.md). + +References: [Pump retry settings and dead letters](../../hub/documentation/service-configuration/pipes/configuration-pump.rst), [Execution history and write-error lifecycle](../../hub/documentation/operations/pump-execution.rst), and [Discard-retries API](../../hub/swagger_public.yaml). + +### Circuit breakers are change-volume safety, not retries + +A dataset-sink circuit breaker trips when writes in a run exceed a configured limit. It activates only once the sink dataset is populated, avoiding the initial sync. Both threshold settings default to `null`: + +- `circuit_breaker_threshold_factor`: factor of the number of unique latest entity ids, **including deleted entities**; `0.5` means 50%, not 0.5%. +- `circuit_breaker_threshold_count`: direct count limit. +- When both are set, use the **maximum** calculated limit; the count commonly supplies a floor. + +A tripped breaker prevents further pipe runs, compaction, and reposting to the dataset. Resolve it on the dataset page or with form-encoded `POST /api/datasets/{dataset_id}`: + +- **`rollback-circuit-breaker`:** deletes entities written during the tripped run and resets the breaker. +- **`commit-circuit-breaker`:** exposes the uncommitted entities and resets the breaker. + +Inspect whether the volume change was intended before choosing either action. Committing is accepting the held output, not retrying failed delivery. This dataset-write mechanism is separate from the configuration-upload circuit breaker described in [Pipes and systems](pipes-and-systems.md). + +References: [Circuit-breaker lifecycle](../../hub/features/circuit-breakers.rst), [Sink thresholds](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst), and [Dataset operations API](../../hub/swagger_public.yaml). + +## Focused verification before rollout or recovery + +The repository documents configuration testing with the Sesam client: supply `expected/.json` and `.test.json`, keep outgoing writes disabled or unable to reach real systems, run pipes until queues drain, and compare endpoint output. Run: + +```sh +sesam -vv test +``` + +Use a dedicated CI node, serialize tests because configuration uploads overwrite its state, and omit outbound-system secrets. For lifecycle changes, supplement final-output comparisons with the following **recommended scenarios**; these are a test plan derived from the contracts above, not claims that this repository contains runtime tests for them: + +1. **Continuation:** interrupt ordered input after a saved checkpoint and verify resume; interrupt unordered comparable input and verify reread. Check that replay does not create unchanged dataset versions. +2. **Dependencies:** change only a joined address and verify customer reprocessing. Repeat with chained transforms and namespace handling; confirm inverse joins still match original source values. +3. **Initialization and completeness:** withhold population or completeness upstream, then advance it. Check gating and successful-run propagation independently. +4. **Deletion safety:** remove an id from a full snapshot; test accepted versus failed empty input. Deliberately withhold a latest entity through completeness and check the full-rescan deletion hazard with deletion tracking enabled and disabled. +5. **Recovery:** simulate an unreachable source, failing sink entity, failed batch, exhausted retry budget, later successful version, and discarded retry backlog. Observe each separate control rather than treating all as “retry.” +6. **Rescan and breaker:** overlap incremental work with a background rescan and inspect final output; test breaker commit and rollback only after initial population. +7. **Out-of-sync policy:** change configuration or recreate/restore an input dataset and compare `continue` with `automatic`, including `rescan_when_config_changes`. + +Inspect offsets and execution state through the node API as well as expected output. See [Configuration change lifecycle](../testing/configuration-change-lifecycle.md) for the broader workflow and [Bidirectional synchronization](../workflows/bidirectional-synchronization.md) before applying replay policies to two-way integrations. + +Testing references: [Local configuration tests](../../hub/documentation/operations/testing-locally.rst) and [CI isolation requirements](../../hub/documentation/operations/continuous-integration.rst). diff --git a/openwiki/index.md b/openwiki/index.md new file mode 100644 index 00000000000..f178b12b7d1 --- /dev/null +++ b/openwiki/index.md @@ -0,0 +1,18 @@ +--- +okf_version: "0.2" +--- + +# Files + +- [Sesam Hub: product learning and documentation quickstart](quickstart.md) - Start learning the documented Sesam Hub model, choose an integration or operations path, and distinguish product changes from Sphinx documentation changes. Includes source-checked preview prerequisites, build behavior, and validation boundaries. + +# Directories + +- [architecture](architecture/) +- [concepts](concepts/) +- [configuration](configuration/) +- [integrations](integrations/) +- [operations](operations/) +- [references](references/) +- [testing](testing/) +- [workflows](workflows/) diff --git a/openwiki/integrations/apis-and-repository-handoffs.md b/openwiki/integrations/apis-and-repository-handoffs.md new file mode 100644 index 00000000000..74887312c07 --- /dev/null +++ b/openwiki/integrations/apis-and-repository-handoffs.md @@ -0,0 +1,315 @@ +--- +type: API boundary guide +title: Node and Portal APIs, public surfaces, and implementation handoffs +description: Locate the checked-in Node, Portal, and legacy databrowser contracts, with exact operation paths, formats, safety constraints, and authentication boundaries. Separate documented product behavior from backend and UI implementation questions that require another repository. +tags: [sesam-hub, api, swagger, authentication, configuration, repository-handoff] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-e389b2c6e31446ccc4126746 + resource: repo://hub/api.rst + - id: openwiki-source-4bbe4e83d74f3fe902420d24 + resource: repo://hub/changelog.rst + - id: openwiki-source-1e12255e14c342c8aad9322b + resource: repo://hub/connector-tools.rst + - id: openwiki-source-bdc6f7cf189904a45e19f487 + resource: repo://hub/databrowser-api.rst + - id: openwiki-source-5836a7a1bfae906d1c6a7cca + resource: repo://hub/documentation/operations/continuous-integration.rst + - id: openwiki-source-caeff9d3196d7b81403130e3 + resource: repo://hub/documentation/operations/security.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-709dcd56cf1f6f81f6584be7 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst + - id: openwiki-source-5156b81b00358c1c04a7aff2 + resource: repo://hub/features/api-config-groups.rst + - id: openwiki-source-6903130fd4e1c31a5b69b78a + resource: repo://hub/features/metrics-api.rst + - id: openwiki-source-927e754308050c77a42a0216 + resource: repo://hub/json-push.rst + - id: openwiki-source-f517d5139873e41493bf54fa + resource: repo://hub/management-studio.rst + - id: openwiki-source-839eae38482865fc4eda4486 + resource: repo://hub/sesam-client.rst + - id: openwiki-source-7af7fec6efb787f93bb5b3b9 + resource: repo://hub/swagger_databrowser.yaml + - id: openwiki-source-d0a16f79e90cff0f5bcc9290 + resource: repo://hub/swagger_portal.yaml + - id: openwiki-source-c92a884f90ca8ac7f160c79a + resource: repo://hub/swagger_public.yaml +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Node and Portal APIs, public surfaces, and implementation handoffs + +The **Node API** controls an instance's configuration, pipes, datasets, systems, and operational state. The **Portal API** manages users, subscriptions, subscription roles, and JWT issuance. Management Studio is the UI used to configure and administer a selected subscription; it is not a third interchangeable backend API. The **databrowser/Data Access Portal API** is a separate legacy, explicitly internal surface. + +> **Safety boundaries:** Do not write through the dataset API in production. Ingest through a configured `http_endpoint` source using JSON Push or the supported receiver protocol. Bulk configuration PUTs replace configuration, not merge it. Configuration `force=true` accepts errors on a best-effort basis, not as a validation bypass with a correctness guarantee. + +## Which reference to use + +| Surface | Checked-in reference | Address convention and reference UI | +| --- | --- | --- | +| Node / instance | [swagger_public.yaml](../../hub/swagger_public.yaml) | Paths such as `/pipes` are relative to the instance API URL, typically `https://instance-guid.sesam.cloud/api`. Thus `/pipes` means `/api/pipes` on that host. Self-hosted reference: `/api/reference`. | +| Portal | [swagger_portal.yaml](../../hub/swagger_portal.yaml) | Paths already contain `/api`, for example `/api/subscriptions`. Use the Portal origin, not the instance API base, and do not add another `/api`. Reference: `https://portal.sesam.io/api/reference`. The discovery path `/.well-known/openid-configuration` is an explicit exception outside `/api`. | +| Legacy databrowser / DAP | [swagger_databrowser.yaml](../../hub/swagger_databrowser.yaml) | Paths such as `/`, `/jwt_login`, and `/configuration/...` are relative to the DAP host, not the Node `/api` base. The specification says these endpoints are **only for internal use and may change or disappear at any time**. | + +All three are Swagger 2.0 documents with `info.version: 0.0.0`; none declares a `basePath`. Their path conventions must not be normalized into one shared base. [Service API](../../hub/api.rst) embeds the checked-in Node and Portal files through `openapi` directives and separately points to the running services' references. Its curl examples are **narrative usage guidance**, not additional checked-in Swagger operations. In particular, its instance-host `POST /api/jwt` example is not a `/jwt` operation in `swagger_public.yaml`; the checked-in JWT issuance contract is in the Portal file. Verify routing for the deployment rather than inferring an undocumented Node operation. + +This page reports documented contracts, not an executed API test or an inspection of sibling implementations. Some operations have no `operationId`; a method plus exact path still identifies the operation. Others use identifiers beginning `api.view_utils._not_in_use_` while remaining in the checked-in path map. Preserve those identifiers when searching an implementation; do not infer that a documented route is unavailable from its identifier alone. Many responses, including `Pump`, are lightly specified, and many operations declare only `200`. Missing media types, schemas, or error responses are specification gaps—not permission to invent them or assume no other failures are possible. + +## Authentication: Portal identity, Node permission checks + +The [security reference](../../hub/documentation/operations/security.rst) distinguishes subscription-scoped **roles** managed in the Portal from **permissions** granted to roles on Node resources. A user can have different roles in different subscriptions. + +```mermaid +sequenceDiagram + participant UI as Management Studio + participant Portal as Portal backend + participant Node as Sesam node + UI->>Portal: Authenticate with email and password + Portal-->>UI: Session and accessible subscriptions + UI->>Portal: GET /api/subscriptions/{subscription_id}/jwt + Portal-->>UI: Signed JWT with subscription roles + UI->>Node: Dataset request with Authorization Bearer JWT + Node->>Node: Verify Portal signature and resource ACL + alt Read data permission granted + Node-->>UI: Dataset contents + else Permission denied + Node-->>UI: 403 Forbidden + end +``` +*Documented identity-to-data flow: the Portal supplies identity and roles, while the Node decides resource access.* + +Send `Authorization: Bearer ` with Node requests. The Portal signs a subscription JWT using its private key; the Node verifies it with the Portal public key, then evaluates the dataset/pipe/system ACL against the user's roles. Authentication does not by itself authorize data access: the documented dataset denial is `403 Forbidden`. Runtime pipe permissions are also checked: a newly created pipe inherits the creator's roles in its config, and a run can fail if those roles cannot read the source system or write the target system. That is a Node runtime failure shown on the pipe's UI page, not a Portal subscription membership mutation. + +Never copy embedded JWTs, passwords, or client secrets from historical examples into documentation or scripts. Keep temporary credential material out of source control; the narrative API guide specifically says to remove its temporary credential file after obtaining a token. + +## Node operation map + +**All paths in this section are relative to the Node API base ending in `/api`.** Path IDs are required; optional query/form inputs are called out below. Read responses marked JSON mean `application/json`. The complete parameter and definition tables remain in [Node Swagger](../../hub/swagger_public.yaml). + +### Configuration: choose the replacement scope before uploading + +| Exact operation | Request and result | Scope / important default | +| --- | --- | --- | +| `GET /config` | `200`, JSON array of `ConfigEntity` or `application/zip` | Default group only. Description spells header selection `Accepts`. | +| `PUT /config` | Consumes `application/json`, `application/zip`, or `multipart/form-data`; `200 OK` | Replaces **all** default-group config. Query `force=false`. | +| `GET /config/{config-group}` (`api.config.get_config_from_config_group`) | `200`, JSON `ConfigEntity[]` or ZIP | Only tagged group. The checked-in GET includes query `force=false`. | +| `PUT /config/{config-group}` (`api.config.put_config_to_config_group`) | Same three upload media types; `200 OK` | Replaces **all** config in that group. The checked-in PUT does **not** list `force`; do not silently move the GET parameter into PUT. | +| `GET /config-all` (`api.config.get_config_all`) | `200`, JSON `ConfigEntity[]` or ZIP | All groups, including default; description also spells `Accepts`. | +| `PUT /config-all` (`api.config.put_config_all`) | Same three upload media types; `200 OK`; query `force=false` | Replaces **all groups**. | +| `GET /config-history/entity` (`api.config.get_history_for_config_entity`) | `200`, JSON `ConfigEntity[]`; required query `entity_id` | Optional integer `limit` (unset means all), integer opaque `since`, `reverse=false`. | +| `GET`, `PUT`, `DELETE /metadata` | `200`, JSON `ServiceMetadata[]` | Read/update service metadata; DELETE removes all service metadata. The PUT body schema/media type is not declared. | + +The [config-group narrative](../../hub/features/api-config-groups.rst) places individual pipe/system configurations in a group using `metadata.$config-group`; without it, they belong to `default`. Bulk group upload chooses the group in the URL. Swagger calls the default group “default (i.e empty)”; the narrative names it `default`. These describe the default scope, not a reason to guess a new URL spelling. + +For configuration operations that actually declare it, `force` defaults to `false`; `true` forces the server to accept configuration errors and attempt application on a best-effort basis. Export and review the intended scope before replacement. Do not treat a partial bundle as a patch or a `200` as proof of healthy runnable configuration. Inspect the returned pipe's `runtime.is-valid-config` and `runtime.config-errors`. `PipeConfigError` records `elements` (JSON path), `level` (`error` or `warning`), and `msg`. + +### Pipes, pumps, and inspection + +| Exact operation | Inputs and response | +| --- | --- | +| `GET /pipes` | JSON `Pipe[]`, `200`; `verbose=false`; optional unique `fields` array drawn from `config`, `runtime`, `storage`, `graph`. | +| `POST /pipes` | Required body `PipeConfig[]`, query `force=false`; `200` with new `Pipe[]`. Request media type is not declared. | +| `GET /pipes/{pipe_id}` (`api.pipes.get_pipe`) | JSON `Pipe`, `200`; optional `fields` with the same choices. | +| `DELETE /pipes/{pipe_id}` (`api.pipes.delete_pipe`) | JSON, `200 OK`; deletes the pipe. | +| `GET /pipes/{pipe_id}/config` (`api.pipes.get_pipe_config`) | JSON `PipeConfig`, `200`. | +| `PUT /pipes/{pipe_id}/config` (`api.pipes.put_pipe_config`) | Required body `PipeConfig`, query `force=false`; JSON `Pipe`, `200`. Request media type is not declared. | +| `GET /pipes/{pipe_id}/pump` (`api.pump.get`) | JSON `Pump`, `200`. | +| `POST /pipes/{pipe_id}/pump` (`api.pump.post`) | Consumes `application/x-www-form-urlencoded` or `multipart/form-data`; required form `operation`; JSON `Pump`, `200`. | +| `GET /pipes/{pipe_id}/entities` (`api.view_utils._not_in_use_pipe_entities`) | JSON `PipeEntity[]`, `200`; integer `limit` (unset means all), string `since`, `stage=sink`. Other stages: `source`, `before-transforms`, `after-transforms`. | +| `GET /pipes/{pipe_id}/log` (`api.view_utils._not_in_use_pipe_log`) | JSON `DatasetEntity[]`, `200`; optional `limit`, integer opaque `since`; `history=true`, `reverse=false`, `deleted=true`. Full history includes deletes regardless of `deleted`. | +| `OPTIONS /pipes/{pipe_id}/log` (`api.view_utils._not_in_use_pipe_log_options`) | `text/plain`, `200`; the log's `since`, `history`, `reverse`, `deleted` controls; experimental string `webhook` requires string `token`, otherwise Badrequest. Webhook is POSTed when new data is available after request processing. | +| `GET /pipes/{pipe_id}/generate-schema-definition` (`api.pipes.get_schema_definition`) | JSON, `200`; integer `sample_size` from source, `keys_only=false` for whole schema rather than key array. | +| `POST /pipes/{pipe_id}/webhook` (`api.pump.webhook`) | Consumes/produces JSON; body must include registered `token`; schedules pump, `200`. Mismatch/unknown pipe or webhook gives `404`, documented as causing sender-side webhook unregistration. | + +A `Pipe` separates `config.original` from `config.effective`: the latter is what runtime components use after environment-variable and shorthand expansion. Runtime fields include running/config-valid flags and dependencies. In multinode responses, `cached_response_info` can mean the aggregator returned cached subnode information because the subnode was not responding; inspect `timestamp` and `age` in seconds before treating it as live status. + +Pump operations are capability-dependent. The [narrative API guide](../../hub/api.rst) tells clients to read `pipeinfo["runtime"]["supported-operations"]`, not hard-code a universally supported menu. The [pump Swagger block](../../hub/swagger_public.yaml#L519-L693) documents: + +- `start`: manually starts a run. `enable` allows automatic scheduling; `disable` prevents automatic runs but not a manual start. The [Management Studio guide](../../hub/management-studio.rst#L194-L247) adds that disabling lets an already-running pipe finish. +- `stop`: stops normal and rescan runs, and has no effect when not running. +- `update-last-seen`: optional string form `last-seen` is source-specific, potentially an opaque value; empty string clears continuation for reprocessing from scratch. `set-last-seen-to-end` is source-dependent and **skips unread data**, potentially losing data. +- `start-rescan`: starts unless one is already running. `reset-rescan`: makes the next rescan begin at the start rather than resume an interrupted scan. +- `reset-tracking` (**experimental**): unsafe while running; tracking resumes at dependent datasets' ends when the next pump runs, not when this request is made. Skipped offsets can make output incorrect. Intended only for development or followed by full synchronization. +- `discard-retries`: records `pump-discard-retries` so the next run ignores pending write-error retries. Those discarded entities do **not** go to dead-letter storage. +- `discard-inferred-schema`: deletes accumulated schema; normally reset afterwards, especially for sources without continuation. + +Optional form `comment` is persisted with a disable event in the execution log. `dont-wait-for-pump-to-start` and `relation` are deprecated parameters for older versions; they are not a current async-start or general relation-management contract. UI labels such as **Restart**, **Reset...**, and **Delete sink dataset...** describe workflows: Restart is effectively reset plus start; deleting the sink dataset also resets `since`. Do not invent similarly named pump `operation` strings from UI text. + +### Dataset reads and administrative state + +| Exact operation | Inputs, result, and failures | +| --- | --- | +| `GET /datasets` | JSON `Dataset[]`, `200`; `verbose=false`. | +| `GET /datasets/{dataset_id}` (`api.datasets.get_dataset`) | JSON `Dataset`, `200`. | +| `DELETE /datasets/{dataset_id}` (`api.datasets.delete_dataset`) | JSON, `200 OK`; destructive dataset removal. | +| `POST /datasets/{dataset_id}` (`api.datasets.post_to_dataset`) | Form-encoded or multipart; required `operation` is `rollback-circuit-breaker` or `commit-circuit-breaker`; JSON, `200 OK`. Not entity ingestion. | +| `GET /datasets/{dataset_id}/entities` (`api.view_utils._not_in_use_dataset_entities`) | JSON `DatasetEntity[]`, `200`; defaults detailed below. | +| `GET /datasets/{dataset_id}/entity` (`api.datasets.get_dataset_entity`) | Required query `entity_id`; optional JSON-encoded string `subset`, integer `offset`, `uncommitted=false`; JSON `DatasetEntity`, `200`. Unknown subset or absent/mismatched entity at the requested offset gives `404`. | +| `GET /datasets/{dataset_id}/entities/{rest_of_path}` (`api.datasets.get_dataset_entity_with_rest_of_path`) | Deprecated single-entity lookup; use `/entity`. Optional `subset`; JSON `DatasetEntity`, `200`; unknown subset gives `404`. | +| `OPTIONS /datasets/{dataset_id}/entities` (`api.view_utils._not_in_use_dataset_entities_options`) | `text/plain`, `200`; `since`, `history=true`, `reverse=false`, `deleted=true`, `subset`. Experimental `webhook` URL requires `token`, otherwise Badrequest. Webhook is POSTed when new data becomes available after request processing. | +| `GET /datasets/{dataset_id}/indexes` (`api.datasets.get_dataset_indexes`) | JSON `DatasetIndex[]`, `200`. | +| `GET /datasets/{dataset_id}/generate-schema-definition` (`api.datasets.get_schema_definition`) | JSON, `200`; integer `sample_size`, `keys_only=false`. | +| `GET /datasets/{dataset_id}/sdshare-collection`, `GET /datasets/{dataset_id}/sdshare-fragments` | `application/atom+xml`, `200`; collection and fragment feeds. | +| `GET /datasets/{dataset_id}/sdshare-fragments/{rest_of_path}` (`api.datasets.get_dataset_sdshare_feed_fragment`) | Required entity path; `application/n-triples`, `200`. | + +The entity-list query defaults are **`history=true`, `reverse=false`, `deleted=true`, `populated=false`, `uncommitted=false`**. Unset integer `limit` returns all available entities; always choose a bounded limit for exploratory reads. Integer `since` is opaque continuation, not a page number. Full history returns replaced versions and always includes deletes; `history=false` returns only latest versions. `reverse=true` reads from the end of the log. `populated=true` adds `404` until the dataset represents a fully populated source view; having some data is insufficient. Unknown JSON-encoded `subset` gives `404`. `uncommitted=true` may expose circuit-breaker-uncommitted entities and is for debugging, not a committed-data guarantee. `DatasetEntity._updated` is the integer dataset offset. + +**Production-write prohibition remains even though Swagger lists `POST /datasets/{dataset_id}/entities`.** That operation consumes/produces JSON and declares `200 OK`; its query `force=false` means compare entity hashes and suppress unchanged writes, whereas `force=true` always writes. This is **different from configuration force**. Its presence is not a supported production ingestion plan; the [Service API warning](../../hub/api.rst#L150-L156) explicitly prohibits that use. + +### Receivers and publishers: integration entry/exit points + +A configured [`http_endpoint` source](../../hub/documentation/service-configuration/pipes/configuration-sources-http.rst) registers receiver URLs. It has no pump; entities flow through the pipe to its sink only when posted. Starting a pump is therefore not how to ingest into that pipe. + +| Exact receiver operation | Contract | +| --- | --- | +| `POST /receivers/{pipe_id}/entities` (`api.view_utils._not_in_use_receivers_post_endpoint_entities`) | JSON Push into a pipe with `http_endpoint` source; consumes/produces `application/json`; `200` with an object response. Query controls: string `sequence_id`, `request_id`, `previous_request_id`; booleans `is_full` (described default `false`), `is_first`, `is_last`. Swagger marks them optional; protocol sequencing rules still apply to full syncs. | +| `POST /receivers/{pipe_id}/sdshare-push-receiver` (`api.receivers.post_endpoint_sdshare_push_receiver`) | N-Triples into an `http_endpoint` pipe; required string body; consumes `application/n-triples` or `text/plain`; produces `text/plain`, `200`. String query `resource` is optional in Swagger, but source narrative requires at least one root resource. | + +[JSON Push](../../hub/json-push.rst) specifies a JSON **array even for one entity**, while the HTTP endpoint source narrative also permits a single object. Prefer the protocol array form for interoperable clients; do not erase the difference. Full sync uses one active `sequence_id`, chained request IDs, and first/last markers; a new full sequence replaces the active one, and `is_last=true` closes it. Incremental requests do not change the active full sequence and their sequencing parameters may be ignored. Full-sync conflicts—incorrect previous request ID, inconsistent `is_full` within a sequence, or an invalid repeat of `is_first`—require `409 Conflict`. The JSON Push sink stops and retries later; a full-sync retry starts from the beginning with a new sequence. These failure rules come from the **protocol narrative**, not the receiver Swagger response table, which only lists `200`. + +With dataset-sink `enable_optimistic_locking`, a one-entity post can return `updated_entity`. Stale `_updated` input can return `input_entity`, `existing_entity`, and `common_ancestor_entity` for a three-way merge. Swagger describes those fields in the `200` schema; it does not establish a new conflict status for optimistic locking. For SDShare, a named resource with no statements yields an entity marked `_deleted=true`; `graph` is ignored and the destination comes from the pipe sink. + +Publisher operations are all **GET**, configured on the relevant publishing pipe: + +| Exact paths | Response format (`200`) | +| --- | --- | +| `/publishers/{pipe_id}/entities`, `/publishers/{pipe_id}/entities/{filename}` | `application/json` | +| `/publishers/{pipe_id}/csv`, `/publishers/{pipe_id}/csv/{filename}` | `text/csv` | +| `/publishers/{pipe_id}/excel`, `/publishers/{pipe_id}/excel/{filename}` | `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet` | +| `/publishers/{pipe_id}/xml`, `/publishers/{pipe_id}/xml/{filename}` | `application/xml` | +| `/publishers/{pipe_id}/sdshare-collection`, `/publishers/{pipe_id}/sdshare-fragments` | `application/atom+xml` | + +These reads accept optional string `since` and integer `limit` (unset means all), **except the SDShare collection**, which only lists `pipe_id`. Filename variants require `filename` for the attachment name. CSV also accepts `linked_excel_file` (string filename), which returns an Excel file containing a connection to the original CSV URL rather than a CSV body. Exact Office compatibility operations are **`OPTIONS /publishers/{pipe_id}/csv/`**, **`OPTIONS /publishers/{pipe_id}/excel/`**, and **`OPTIONS /publishers/{pipe_id}/xml/`**: the trailing slash is part of the checked-in path; response is `text/plain`, `200`. + +Shareable links use `GET /publishers/{pipe_id}/shareable-links` (`api.publishers.get_shareable_links`, JSON `ShareableLink[]`), `POST` at that same path (`api.publishers.post_shareable_link`, required `NewShareableLink` body, JSON `ShareableLink`), and `DELETE /publishers/{pipe_id}/shareable-links/{shareable_link_id}` (`api.publishers.delete_shareable_link`, JSON OK); each declares `200`. Do not extrapolate access policy from this path map alone. See [extensions and JSON protocols](extensions-and-json-protocols.md) for payload-level integration contracts. + +### Systems, proxying, and secrets + +| Exact operation | Request / response behavior | +| --- | --- | +| `GET /systems` | JSON `System[]`, `200`; `verbose=false`; true includes disk-usage breakdown in `storage`. | +| `POST /systems` | Required `SystemConfig[]` body, query `force=false`; `200`, new `System[]`; no request media type declared. | +| `GET /systems/{system_id}` (`api.systems.get_system`), `DELETE /systems/{system_id}` (`api.systems.delete_system`) | JSON `System` / JSON OK respectively, `200`. | +| `GET /systems/{system_id}/config` (`api.systems.get_system_config`) | JSON `SystemConfig`, `200`. | +| `PUT /systems/{system_id}/config` (`api.systems.put_system_config`) | Required `SystemConfig` body, query `force=false`; JSON **`SystemConfig`**, `200` (unlike pipe config PUT returning `Pipe`). | +| `GET /systems/{system_id}/logs` (`api.systems.get_microservice_logs`) | Last 1000 lines by default; optional string `since` is an ISO datetime and returns all lines after that point; `200`. Media type/schema not declared. | +| `GET /systems/{system_id}/status` (`api.systems.get_system_status`) | System status, for microservices a subset of Docker inspect; `200`; media type/schema not declared. | +| `POST /systems/{system_id}/reload` (`api.systems.post_microservice_reload`) | Asynchronously queues image pull and microservice recreation; **`202`**, not completion confirmation. | +| `GET`, `POST`, `PUT`, `PATCH`, `DELETE /systems/{system_id}/proxy/{rest_of_path}` | Pass request to the microservice's required relative path and return proxied response; each declares `200`. No fixed consumes/produces or body schema. IDs use `api.view_utils._not_in_use_microservice_proxy_` plus method. | +| `GET /secrets`; `PUT /secrets`; `POST /secrets`; `DELETE /secrets/{secret_key}` | Global secrets: GET lists **names**, PUT/POST accept JSON name-to-value object in their descriptions and overwrite matching values; POST explicitly keeps other secrets. DELETE removes named secret (`api.secrets.delete_secret_entity`). JSON responses, `200`; no `consumes` declarations. | +| `GET /systems/{system_id}/secrets` (`api.systems.get_system_secrets`) | JSON `SecretKeys` name list, `200`. | +| `PUT /systems/{system_id}/secrets` (`api.systems.put_system_secrets`) | `SecretValues` body; **overwrites system secrets**; JSON OK, `200`. | +| `POST /systems/{system_id}/secrets` (`api.systems.post_system_secrets`) | `SecretValues` body; add/overwrite supplied values without deleting others; JSON OK, `200`. | +| `DELETE /systems/{system_id}/secrets/{secret_key}` (`api.systems.delete_system_secret`) | Deletes named system secret; JSON OK, `200`. | + +The security narrative says secrets are strongly encrypted with an instance-unique key and cannot be retrieved in their original form after upload. Keep a secure off-site copy. Global secrets last until explicit deletion; system-local secrets also disappear when their system is removed, so deleting and re-adding a system requires re-upload. `$SECRET(key)` substitutions apply only to **System configuration**, are resolved as needed at runtime, and are not exposed by the API or logs. The precise encryption/lookup implementation belongs to the runtime handoff, not this documentation repository. See [security and secrets](../operations/security-and-secrets.md). + +### Health and metrics: two different reference levels + +- **Swagger-backed Node probes:** `GET /health` returns JSON with `200` or `503` when unhealthy; `GET /ping` returns JSON with `200`. `GET /` returns JSON status with query `aggregated=true`; setting false avoids aggregation. +- **Narrative Node metrics contract:** [Metrics](../../hub/features/metrics-api.rst) documents **`/api/metrics`**, scraped with a JWT granting `Admin`, after enabling Metrics and monitoring on a clustered subscription. Output is Prometheus-compatible. **There is no `/metrics` operation in the checked-in `swagger_public.yaml`.** Do not fabricate a Swagger operationId, response schema, or status table for it. Pump metrics are not exposed for disabled pipes or `pump.mode="manual"` / `"off"`; absence does not prove a scrape failure. +- **Swagger-backed Portal monitoring:** `GET /api/monitoring/standard/{subscription_id}/pipes/{pipe_id}` (`api.monitoring_pipes.get_standard_pipe`) and `GET /api/monitoring/standard/{subscription_id}` (`api.monitoring_subscription.get_standard_subscription`) return standard monitoring information as JSON, `200`. `GET /api/monitoring/invoicing/{subscription_id}` (`api.monitoring_invoicing.get_invoice_information`) is JSON invoicing information, `200`, not the Prometheus scrape surface. + +See [monitoring and troubleshooting](../operations/monitoring-and-troubleshooting.md) for interpretation rather than treating every operational read as a metrics API. + +## Portal account, subscription, and JWT map + +**Keep `/api` in these exact paths and use the Portal host.** Unless a row says otherwise, the checked-in response is `200`; JSON means `application/json`. “Form” below means either `application/x-www-form-urlencoded` or `multipart/form-data`. This is a focused public-use map, not an assertion that every checked-in admin/UI helper is a stable external interface. + +| Exact account operation | Contract | +| --- | --- | +| `GET /api` (`api.root.get`) | JSON status plus authentication providers and login URLs. `status.feature-level` indicates supported API features. | +| `POST /api/login` | Form, required nonempty `email`, `password`; optional nonempty `g-recaptcha-response`; JSON; successful login creates an HTTP session and returns its ID in a cookie. | +| `POST /api/signup` | Form; required globally unique `email`, `password`, `name`; optional `g-recaptcha-response`; JSON. | +| `GET /api/profile` | JSON `Profile` for current user. | +| `PUT /api/profile` | Body requires `userInfo`; nested `profile` includes `nickname`, `name`, `picture`; JSON `Profile`. Sparse updates leave missing fields unchanged; name can change, email cannot. | +| `GET /api/profile2` | JSON `Profile`; explicitly returns **`401` if not logged in**. File contains a TODO to replace `/api/profile`, not proof replacement happened. | +| `DELETE /api/profile/{user_id}` (`api.profile.delete_user`) | Deletes specified user; JSON OK. | +| `GET /api/logout` (`api.authentication.logout`) | Clears session, returns `Profile`; explicitly deprecated legacy JSON logout. | +| `GET /api/logout2` (`api.authentication.logout2`) | Clears session; **`302`** to Portal frontpage or third-party logout URL. | +| `PUT /api/password` | Form `password`, `old_password`, both required; JSON object with required boolean `success`. | +| `POST /api/forgot-password` | Form required `email`, optional `g-recaptcha-response`; sends one-time password-change link; JSON object with required `success`. | +| `POST /api/reset-password` | Form required new `password`, one-time `token`; response object requires `success`; response media type is not declared. | +| `POST /api/verify-emailaddress` | Form required one-time `token`; `200` verified or **`400`** invalid, used, or expired token. | +| `POST /api/request-email-verification` | Resends verification email; `200` or **`409`** when one is already pending. | + +Provider authentication is separate: `POST /api/login/{provider_id}` (`api.authentication.login`) redirects `302` to the configured OpenID Connect provider; `GET /api/login_callback/{provider_id}` (`api.authentication.login_callback`) takes optional query `code` and redirects `302` to the Portal frontpage. `GET /api/login_implicit_flow` (`api.authentication.get_login_implicit_flow`) serves `text/html`, `200`, to extract the fragment `id_token` and call `POST /api/jwt_login` (`api.jwt_login.jwt_login_post`, `200`). These implicit-flow helpers are not the ordinary email/password token issuance operation. + +| Exact subscription operation | Contract | +| --- | --- | +| `GET /api/subscriptions` | JSON `Subscription[]` connected to current user. | +| `POST /api/subscriptions` | Optional body `NewSubscriptionInfo`; JSON `Subscription`. | +| `GET /api/subscriptions/{subscription_id}` (`api.subscriptions.get_subscription`) | JSON `Subscription`. | +| `PUT /api/subscriptions/{subscription_id}` (`api.subscriptions.put_subscription`) | Required `UpdatedSubscriptionInfo` body; JSON `Subscription`. | +| `DELETE /api/subscriptions/{subscription_id}` (`api.subscriptions.delete_subscription`) | Deletes subscription; JSON OK. | +| `GET`, `POST /api/subscriptions/{subscription_id}/available-roles` | JSON `RoleInfo[]` for built-in/custom roles; POST takes required `RoleInfo` and returns `RoleInfo`. IDs: `api.subscriptions.get_subscription_available_roles`, `api.subscriptions.add_custom_role`. | +| `GET`, `PUT`, `DELETE /api/subscriptions/{subscription_id}/available-roles/{role_id}` | Read/update/delete role; PUT requires `RoleInfo`; each returns JSON `RoleInfo`. IDs: `api.subscriptions.get_subscription_role`, `api.subscriptions.put_subscription_role`, `api.subscriptions.delete_subscription_role`. | +| `GET /api/subscriptions/{subscription_id}/members` (`api.subscriptions.get_subscription_members`) | JSON `SubscriptionMemberInfo[]`; query `start=0`, optional integer `limit` (unset means all). | +| `POST /api/subscriptions/{subscription_id}/members` (`api.subscriptions.post_subscription_members`) | Required `InvitedUser` body invites user; JSON `SubscriptionMemberInfo`. | +| `GET`, `PUT /api/subscriptions/{subscription_id}/members/{user_id}` | Read/update user's subscription roles; PUT requires `UpdatedSubscriptionMemberInfo`; JSON `SubscriptionMemberInfo`. IDs: `api.subscriptions.get_subscription_member`, `api.subscriptions.put_subscription_member`. | + +These mutations own membership and subscription state; they do not replace Node pipe/system config or Node ACLs. + +| Exact token operation | Format and lifecycle | +| --- | --- | +| `GET /api/jwt` | Current logged-in user's JWT as **`text/plain`**, not a JSON wrapper. | +| `POST /api/jwt` | Form required `email`, `password`; optional `subscription_id`. Unset subscription returns JWT for all user's subscriptions; `text/plain`. | +| `GET /api/subscriptions/{subscription_id}/jwt` (`api.jwt.get_subscription_jwt`) | Current user's JWT scoped to subscription; `text/plain`. | +| `GET /api/jwt/publickey` | RSA verification public key; `text/plain`. | +| `GET /api/subscriptions/{subscription_id}/api_json_web_tokens` (`api.subscription_api_jwts.get_json_web_tokens`) | JSON `SubscriptionJWT[]`. | +| `POST` at that same path (`api.subscription_api_jwts.post_json_web_token`) | Required `jwt_settings` body with **`exp` and `principals`**; optional `name`, `description`, `owner`, `refresh_interval`. Creates long-lived role-scoped API token for scripts/cron; JSON `SubscriptionJWT`. | +| `PUT` at that same path (`api.subscription_api_jwts.put_json_web_token`) | Required `jwt_settings` body including token `id` property and editable settings; JSON modified `SubscriptionJWT`. No individual settings fields are marked required in this PUT schema. | +| `DELETE /api/subscriptions/{subscription_id}/api_json_web_tokens/{api_json_web_token_id}` (`api.subscription_api_jwts.delete_json_web_token`) | Deletes token record; JSON OK. | +| `GET /.well-known/openid-configuration` (`api.openid_connect.get_configuration`) | JSON OpenID Provider Configuration Response. | +| `POST /api/openid_connect/token` (`api.openid_connect.token_endpoint_post`) | Form `grant_type` enum `client_credentials` / `refresh_token`, `client_id`, `client_secret`; JSON. Checked-in schema supplies no token-response fields or detailed errors. | + +`exp` is seconds since Epoch. With `refresh_interval`, it is the last refreshable time; the signed token's actual expiry is current time plus refresh interval. `SubscriptionJWT.jwt_string` and refreshable `client_secret` are returned **only on creation**; persist them securely then, not by assuming a later GET can recover them. Its payload includes `api_token_id` so the Node can check invalidation, and `principals` maps exactly one subscription ID to its principals for these API tokens. Invalidation polling timing and refresh enforcement are implementation handoffs, not established here by the deletion response. See [Portal Swagger token definitions](../../hub/swagger_portal.yaml#L4647-L4788). + +## Legacy databrowser: historical configuration, not a new integration target + +The [databrowser API guide](../../hub/databrowser-api.rst) announces end-of-life **December 31, 2023**. The [2022-03-21 changelog](../../hub/changelog.rst#L921-L927) names Integrated Search as its successor. Keep the historical DAP host and APIs distinct from both Portal subscription APIs and Node inspection APIs; Management Studio's current browse/search documentation does not establish support for the old DAP API. + +For historical configuration investigations only: + +- Base layer: `GET`, `PUT`, `DELETE /configuration/{config_file_path}`. For the INI this is `/configuration/databrowser.ini`. The base `/sesam/data` layer overrides `/sesam/conf/databrowser.ini` and all numbered upload layers. +- Numbered layer: `OPTIONS`, `GET`, `PUT`, `DELETE /configuration/conf/{config_layer}/{config_file_path}`. Higher-numbered layers override lower ones; the base layer is applied last. The narrative introduction also writes `/configuration//databrowser.ini` without `conf`, whereas its curl example and Swagger use `/configuration/conf/...`. Use the checked-in operation to identify the route and record the discrepancy rather than silently repairing the narrative. +- GET returns `text/plain` or `application/octet-stream`, `200`, with an **empty body if the file is absent**, not a documented `404`. PUT/DELETE produce JSON `ConfigFilePutOrDeleteResponse`; `200` can still contain configuration errors; `403` prevents changes that would lock the current user out of further config modification. +- PUT/DELETE query `validate_only=false`; true runs validation without changing files. Response requires `is-valid-config`, `current-user-would-be-locked-out`, and `config-errors`. Errors cover the **whole configuration set**, not just this file, with `warning`, `error`, or `critical` severity. +- `config_file_path` is really a rest-of-path; Swagger explicitly warns its representation is imperfect and says not to URL-escape that path. `GET /configuration` returns an HTML configuration view; string query `content_only='true'` supports embedding in Management Studio. +- The historical configuration-file API requires JWT-enabled databrowser configuration and an `Authorization` JWT granting `Admin`. That does not turn all DAP internal endpoints into a public supported interface. + +Sources: [legacy configuration operations](../../hub/swagger_databrowser.yaml#L397-L569), [parameters and response](../../hub/swagger_databrowser.yaml#L1109-L1256). For broader historical scope, see [legacy data access](../references/legacy-data-access.md). + +## Implementation ownership and not-yet-linked handoffs + +The following are **handoff-routing assignments for this wiki**, not findings from sibling source inspection. **Only this repository was researched.** Product roles are grounded in the local API, security, and Management Studio references above; no sibling implementation or workspace page is linked or claimed inspected. + +| Owner | Responsibility | Not-yet-linked implementation question | +| --- | --- | --- | +| `docs` | Documented product semantics, examples, checked-in specifications, and rendered reference guidance. | Reconcile copied Swagger with deployed references; resolve misplaced `force`, header spelling, narrative/Swagger route differences, and underspecified schemas. | +| `lake` | Data-processing runtime and related services, including Node behavior. | Trace handlers for configuration replacement/validation, pump capability dispatch, receiver sequencing and sink writes, proxies, secret deletion, ACL checks, caching, and metrics exposure. Check implementation tests before claiming transactional replacement, retry status codes, or cache freshness guarantees. | +| `portal` | Account and subscription management. | Trace session and JWT issuance, role/member mutations, token refresh/invalidation, subscription lifecycle, and response/error handling. Verify how a deployment routes the narrative instance JWT URL. | +| `webconsole` | Management Studio UI. | Verify actual calls behind Save, Start, Restart, Reset, Preview, and error/ACL displays; distinguish composite UI workflows from individual API operations. | +| `counting-semaphore` | Semaphore service. | Locate service protocol, callers, lease/release/failure behavior, and tests in its owning repository. This repository does **not** establish a semaphore API, a pump dependency, or a solution to concurrent configuration uploads. | + +Connector tooling is another documented client boundary: [Connector Tools](../../hub/connector-tools.rst) describes manifest-to-system/pipe generation, `expand` during `sesam upload`, `collapse` after `sesam download`, and automatic OAuth 2.0 authorization (explicit `sesam authenticate`). Those are client workflows, not Node/Portal Swagger operations. The source links an external Sesam Client README; its implementation was not researched here. See [connectors and contracts](connectors-and-contracts.md). + +## Safe validation and change planning + +Use the exact operation block first, then the product narrative for semantic constraints, then route unproven implementation details to the owning repository. A focused change review should cover: + +1. **URL and wire compatibility:** distinguish Node `/api` base from Portal paths containing `/api`, text JWTs from JSON records, form pump operations from JSON entity pushes, and publisher filename/trailing-slash variants. +2. **Configuration safety:** verify selected group versus `/config-all`, inspect validation errors with force disabled, and check that deleting systems does not accidentally lose required local secrets. +3. **Data and continuation safety:** bounded reads, latest versus history semantics, population checks, full-sync request ordering/`409`, manual start capability, and explicit approval for skipping last-seen/tracking offsets or discarding retries. +4. **Authorization:** subscription roles and Node ACL denial separately; never validate an Admin-only scrape with an unrelated identity token. + +The repository documents **configuration tests**, not local backend API test implementations. [Testing locally](../../hub/documentation/operations/testing-locally.rst) uses `expected/.json` and `.test.json`, runs pipes until queues drain, and compares endpoint output with expected results via `sesam -vv test`. Output systems must be disabled or unreachable. Default inspection is `/pipes//entities` at sink stage; published endpoint tests can use `/publishers//` with bound parameters, making them relevant to publisher compatibility. + +[Continuous integration](../../hub/documentation/operations/continuous-integration.rst#L7-L24) requires a designated CI node, **one test at a time**, because uploads overwrite configuration. It must be unable to write to external systems and should lack outbound connection secrets/variables. The [Sesam Client guide](../../hub/sesam-client.rst#L21-L36) forbids running the client on production subscriptions, allows only one client at a time on a subscription, and warns against concurrent manual edits. These client restrictions are not a blanket ban on all production Node administration. No live API calls, servers, containers, or tests were run for this page. + +Further context: [Hub model and boundaries](../architecture/hub-model-and-boundaries.md), [pipes and systems](../configuration/pipes-and-systems.md), [configuration-change lifecycle](../testing/configuration-change-lifecycle.md), and [documentation maintenance](../workflows/documentation-maintenance.md). diff --git a/openwiki/integrations/connectors-and-contracts.md b/openwiki/integrations/connectors-and-contracts.md new file mode 100644 index 00000000000..c0cfde324f0 --- /dev/null +++ b/openwiki/integrations/connectors-and-contracts.md @@ -0,0 +1,430 @@ +--- +type: integration-contract +title: Connector manifests, templates, and desired-state contracts +description: Explains reusable Sesam connector configuration, template expansion, authentication and webhook validation, and the collect, desired-state transform, and share-result boundaries. Includes operation-specific entity requirements and warnings about inconsistent examples and discontinued onboarding metadata. +tags: [connectors, configuration, contracts, synchronization, authentication, templates] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-4bbe4e83d74f3fe902420d24 + resource: repo://hub/changelog.rst + - id: openwiki-source-1e12255e14c342c8aad9322b + resource: repo://hub/connector-tools.rst + - id: openwiki-source-9e95181dcc2c580afc7962d4 + resource: repo://hub/documentation/connectors/available-connectors.rst + - id: openwiki-source-5b0e5c612ac69fd9d3f16975 + resource: repo://hub/documentation/connectors/available-connectors/hubspot-connector.rst + - id: openwiki-source-576efc56874e673056a4b1a4 + resource: repo://hub/documentation/connectors/connector-config-file.rst + - id: openwiki-source-c6d5aa14c22dee096c021ea3 + resource: repo://hub/documentation/connectors/connector-configuration.rst + - id: openwiki-source-a0efd05d2f703badad608052 + resource: repo://hub/documentation/connectors/connector-contract.rst + - id: openwiki-source-f4567af7e8b277231c1062ec + resource: repo://hub/documentation/connectors/connector-manifest.rst + - id: openwiki-source-36c7218e5df74db2a077715a + resource: repo://hub/documentation/connectors/connector-templates.rst + - id: openwiki-source-ab28f0a659eec676b26e672b + resource: repo://hub/documentation/data-management/entity-data-model.rst + - id: openwiki-source-8ba125d38b3099a8d9fc7516 + resource: repo://hub/documentation/data-synchronization/authentication-schemes-pattern.rst + - id: openwiki-source-118fd252aeab56da4d82736d + resource: repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst + - id: openwiki-source-9b634518e174395c6097e870 + resource: repo://hub/documentation/data-synchronization/delete-pattern.rst + - id: openwiki-source-ba7f43a38586ace6423b8bff + resource: repo://hub/documentation/data-synchronization/duplicate-hops-block-pattern.rst + - id: openwiki-source-0d0f309b3cb8bdad3cff77fa + resource: repo://hub/documentation/data-synchronization/establish-origin-pattern.rst + - id: openwiki-source-8a748388db2125b74986696b + resource: repo://hub/documentation/data-synchronization/insert-pattern.rst + - id: openwiki-source-53655b7209277527d54131bc + resource: repo://hub/documentation/data-synchronization/namespace-split-pattern.rst + - id: openwiki-source-827922f146088ec43efe47b0 + resource: repo://hub/documentation/data-synchronization/optimistic-locking-pattern.rst + - id: openwiki-source-1a4787e87d2e7846e4e9b8d3 + resource: repo://hub/documentation/data-synchronization/receive-webhook-events-pattern.rst + - id: openwiki-source-cc3f1c0ea421f0ba74f9eab5 + resource: repo://hub/documentation/data-synchronization/share-template-extension-points-pattern.rst + - id: openwiki-source-8386a3acf9a4b3716faf0004 + resource: repo://hub/documentation/data-synchronization/synthetic-properties-pattern.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-9c3ad765d7f032ba45c225e7 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst + - id: openwiki-source-709dcd56cf1f6f81f6584be7 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst + - id: openwiki-source-c32b360d8e1b5891f21864d1 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst + - id: openwiki-source-89e59f155188034abce5bfff + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst + - id: openwiki-source-c734d3226c0f5253ac569339 + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst + - id: openwiki-source-12eefe420238d0851d538a0d + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms.rst + - id: openwiki-source-d496de71635dcd7d5827ad5d + resource: repo://hub/features/durable-data.rst + - id: openwiki-source-bcbee3728e5f87e8d24258b4 + resource: repo://hub/index-management-console.rst +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Connector manifests, templates, and desired-state contracts + +A connector is the system-facing configuration that collects API-shaped entities and applies a desired state back to that system. Its reusable configuration has three building blocks: **manifest**, **templates**, and environment-specific **`config.json`**. Model mapping supplies the desired-state dataset; the connector is responsible for making the external system reflect it. This page describes the contracts documented in this repository, not an inspected implementation of the external connector tooling or connector repositories. [Configuration overview](../../hub/documentation/connectors/connector-configuration.rst), [contract](../../hub/documentation/connectors/connector-contract.rst) + +For a particular product, start at the authored [Available connectors catalog](../../hub/documentation/connectors/available-connectors.rst), then follow its FAQ and repository links. For example, the HubSpot entry hands off to `sesam-io/hubspot-connector` and describes `playground` as typically the most complete branch. **Those external repositories were not inspected here**; their current manifests, operation definitions, tests, and branch compatibility must be checked before deployment. This page intentionally does not reproduce a connector-by-connector catalog. [Representative catalog entry](../../hub/documentation/connectors/available-connectors/hubspot-connector.rst) + +## Configuration ownership and expansion + +| Building block | Responsibility | Change here when… | +| --- | --- | --- | +| Manifest | Selects a datatype template per datatype and the system template; declares authentication and datatype parameters. | Adding a datatype, reusing a flow, selecting auth variants, or changing datatype-specific expansion inputs. | +| Connector template file | Contains pipe configurations for collect and share patterns. It can use `{{@ system @}}` and `{{@ datatype @}}` rather than hard-coded names. | Changing system-facing collect/share behavior or reusable DTL. | +| `config.json` → `connector_config` | Environment configuration: an embedded pipe named `connector_config`, whose embedded-source entities configure connectors. | Selecting the connector repository revision, API environment, or manifest parameter overrides. | + +The Sesam Client documentation says `sesam upload` runs `expand` to generate system and pipe configurations, while `sesam download` runs a subsequent `collapse` to reflect downloaded configuration changes locally. OAuth2 authorization participates in that workflow; `sesam authenticate` is the explicit authorization entrypoint. Installation and implementation are external handoffs to [sesam-py](https://github.com/sesam-community/sesam-py/blob/master/readme.usage.md), not code in this documentation repository. [Connector Tools](../../hub/connector-tools.rst) + +For the underlying pipe/system configuration, see [Pipes and systems](../configuration/pipes-and-systems.md). For repository and API boundaries, see [APIs and repository handoffs](apis-and-repository-handoffs.md). + +### Manifest: selection, not duplicated flows + +`datatypes` is a dictionary keyed by datatype name. Each entry requires `template`; the key is substituted into every `{{@ datatype @}}` in the selected file. Multiple datatypes can select the same template when the flows differ only in names or parameters. The system template supplies the system configuration. A synthetic selection example, using the spelling in the manifest **property table**, is: + +```json +{ + "auth": "api_key", + "datatypes": { + "contact": { + "template": "templates/object.json", + "parameters": {"api_object": "contacts"} + }, + "project": { + "template": "templates/object.json", + "parameters": {"api_object": "projects"} + }, + "country": { + "template": "templates/country.json", + "sync_frequency": "weekly" + } + }, + "system_template": "templates/system.json" +} +``` + +**Spelling discrepancy:** the [manifest example](../../hub/documentation/connectors/connector-manifest.rst) uses `system-template`, but its required-property table uses `system_template`. This repository does not establish that both are accepted aliases. Verify the expected key against the exact expander/connector revision; do not silently normalize or copy the example as a validated schema. + +Other datatype fields are `label` (human-readable name), `parameters` (Jinja-accessible values), `parent` (parent datatype for child collection, including the `-all` source dataset), `sync_frequency`, and `webhook`. `auth` is required; optional authentication fields are discussed below. [Manifest reference](../../hub/documentation/connectors/connector-manifest.rst) + +### Two different meanings of “template” + +A **connector template file** is a file containing configurations to expand. The supplied contact example is an array with: + +1. `{{@ system @}}-{{@ datatype @}}-all`, reading REST operation `{{@ datatype @}}-list`. +2. `{{@ system @}}-{{@ datatype @}}-collect`, reading `-all`, invoking `transform-collect-rest`, and optionally deriving `$last-modified` with DTL. +3. `{{@ system @}}-{{@ datatype @}}-share`, reading the corresponding `-transform` dataset and invoking `transform-share-rest` with datatype-specific lookup, insert, update, and delete operation names. + +A **runtime template transform** is a transform configuration with `"type": "template"`, `template`, and `properties`. The built-in names include `transform-collect-rest`, `transform-defaults-rest`, and `transform-share-rest`. The `template` value can also be an object containing a template body to override the built-in version for development. These are not the same as a manifest path such as `templates/object.json`. [Connector template example](../../hub/documentation/connectors/connector-templates.rst), [runtime template reference](../../hub/documentation/service-configuration/pipes/configuration-transforms-template.rst) + +### Substitution and parameter sources + +Non-expanded connector configuration uses Jinja-like strings of the form `{{@ foo @}}`, injected by tooling such as sesam-py. Most supported variables must be declared in the manifest, with exceptions such as `system` and datatype-context `datatype`. + +| Variable/input | Documented expansion source or effect | +| --- | --- | +| `system` | Always available; name of the system. | +| `datatype` | Available in configurations belonging to a datatype; its manifest key. | +| `parent` | The datatype's `parent` value. | +| Datatype `parameters` | Replaces occurrences of that parameter in the datatype configuration. Boolean values are supported; preserve their type rather than substituting a string such as `"true"`. | +| `base_url`, `token_url` | Connector configuration supplies the API base URL and OAuth2 token endpoint. | +| `parameter_values` in a connector configuration entity | Overrides parameters specified in the manifest, for example `base_url`. | +| `service_url` | `requires_service_api_access: true` signals replacement with `$ENV(service_url)` and injection of system secret `service_jwt`, referenced as `$SECRET(service_jwt)`. | +| `_webhook_dataset` | Declaring this under manifest `additional_parameters` signals replacement with `$ENV(_webhook_dataset)`. | +| `account_id`, `connected_ts`, `is_fullsync` | Described as coming from Consumer portal onboarding: connected account, datatype enablement timestamp, and experimental fullsync Boolean. Treat these as historical onboarding-dependent inputs, not guaranteed current automatic values. | + +The source documents `additional_parameters`, `requires_service_api_access`, and datatype `schedule_interval` in the contract even though the manifest's main property table is not exhaustive. Expansion and secret provisioning are documented tooling behavior, not verified here in an expander implementation. [Injected variables and parameters](../../hub/documentation/connectors/connector-contract.rst), [parameter overrides](../../hub/documentation/connectors/connector-config-file.rst) + +### Generated pump settings + +The contract describes collect scheduling injection as follows: + +- Default: every **300 seconds**. +- Collect pipe `metadata.supports_since: true`: every **10 seconds**. +- Datatype `sync_frequency: "slow"`: once per day at midnight. +- Datatype `sync_frequency: "weekly"`: Monday at 00:00. +- Datatype `webhook: true`: slower polling, default once per hour. +- Datatype `schedule_interval`: explicit custom setting, taking precedence over **all** of the above. + +The source does not give a complete precedence order among the non-custom options. Inspect the expanded pump when combining them; do not infer an ordering from this list. These are connector expansion settings, distinct from receiver pipes: an `http_endpoint` source has no pump and only receives data through HTTP posts. [Injected pump properties](../../hub/documentation/connectors/connector-contract.rst), [HTTP endpoint source](../../hub/documentation/service-configuration/pipes/configuration-sources-http.rst) + +## `config.json` metadata and the discontinued UI boundary + +Within `config.json`, `connector_config` holds an embedded pipe configuration, not merely a dictionary of credentials. Each connector entity has required `_id` (connector identifier) and `type: "connector"`. Material deployment settings include: + +- `url`: raw connector repository URL **including branch or commit hash**. The source example is `https://raw.githubusercontent.com/sesam-io/wave-connector/playground`. +- `parameter_values`: manifest parameter overrides. +- `auth`: an object describing authorization settings. This differs from the manifest's string `auth`. +- `auth.api_base_url`: replaces `{{@ base_url @}}` to select an API environment. + +[Config file reference](../../hub/documentation/connectors/connector-config-file.rst) + +**Do not interpret the remaining UI descriptions as a supported current onboarding workflow.** The changelog records removal of multitenancy and Management Console support on **2025-04-11**, and the Management Console index explicitly says it is discontinued. The connector config reference still contains the older fields below. They are useful for recognizing existing configurations, but their presence does not demonstrate a current UI consumer. [Removal notice](../../hub/changelog.rst#changelog-2025-04-11), [discontinuation warning](../../hub/index-management-console.rst) + +| Historical metadata group | Exact fields and intended meaning in the older reference | +| --- | --- | +| Card/branding | `title`, `description`, `docs_url`, `logo`, `logo_symbol`, `favicon`; `visible` defaults to true. `category` and `stage` are described as unused in that UI. | +| User-supplied values | `additional-properties`, with `.name` and `.description` controlling labels/help text. This hyphenated property is **not** manifest `additional_parameters`. | +| Account choice | `account_selection.endpoint` specifies a POST endpoint to list accounts; `payload_property` traverses the response, then `id_property` and `label_property` select account values. These selectors accept a string or list of strings. | +| Filtering and tenancy | `hidden_entity_types` references manifest entity-type IDs; `multi-tenant` describes per-tenant availability, with shared connectors as exceptions. Do not use this as evidence that multitenancy remains supported. | +| Connect flow | `connect_flow.custom_sections` contains `order`, `title`, and `content`. | +| Vendor dashboard | `vendor.banner`, `vendor.description`, `vendor.title`, `vendor.supported_connectors`, `vendor.hidden_entity_type_options`, `vendor.homepageLogo.logo`, `vendor.homepageLogo.homepageUrl`. | + +For API-key config, the reference describes `auth.type`, `auth.api_base_url`, and `auth.label`. OAuth2 config adds `auth.access_token_url`, `auth.authorize_scopes`, `auth.identity_url`, `auth.login_url`, and `auth.tenant_id_expression`. Despite its name, `auth.tenant_id_expression` selects **`account_id`**, not a Sesam tenant ID, from the authorization response, using a property name or path list. Several requirements are written in terms of the old Management Console or a particular connector; do not assume every OAuth provider needs an identity endpoint. [Metadata and auth reference](../../hub/documentation/connectors/connector-config-file.rst) + +For policy/history context, see [History and policies](../references/history-and-policies.md). + +## Authentication and webhook trust + +### Manifest auth and system secrets + +Manifest `auth` selects `oauth2` or `api_key`; the latter also covers manually supplied tokens and similar credentials. `auth_variant` documents `superoffice-ticket` for `oauth2`, and `jwt`, `tripletex`, and `service_account` for `api_key`. Optional OAuth2 manifest settings are `oauth2.login_url`, `oauth2.scopes`, and `oauth2.token_url`. [Manifest auth fields](../../hub/documentation/connectors/connector-manifest.rst) + +The documentation distinguishes credential inputs from the secrets that templates use: + +| Scheme | Documented inputs | Documented injected system secrets | +| --- | --- | --- | +| API key | `api_key` | `api_key` | +| OAuth2 | `client_id`, `client_secret`, with tokens obtained during onboarding | `oauth_access_token`, `oauth_client_id`, `oauth_client_secret`, `oauth_refresh_token` | +| Tripletex variant | `consumer_token`, `employee_token` | `consumer_token`, `employee_token` | +| SuperOffice variant | OAuth2 client credentials | Contract: regular OAuth secrets plus `so_ticket`. The authentication-pattern reference also names `SO-Apptoken` for the client secret. Check the actual system template rather than treating those names as interchangeable. | +| JWT variant | `api_key` application token used to request JWT access | `jwt_access_token`, `jwt_refresh_token` | +| Service account variant | Listed as supported by the manifest reference | No detailed secret mapping in the inspected contract/authentication-pattern references; verify the selected connector/tooling. | + +Use secret references such as `$SECRET(api_key)` and `$SECRET(oauth_client_secret)`, with actual values provisioned out of band as `` or ``. Do not embed credentials in committed connector templates. Automatic onboarding injection described by the older sources is not a substitute for checking that the required system secrets exist in the deployment. [Injected secrets](../../hub/documentation/connectors/connector-contract.rst), [authentication schemes](../../hub/documentation/data-synchronization/authentication-schemes-pattern.rst), [Security and secrets](../operations/security-and-secrets.md) + +### Webhook validation is the trust boundary + +Manifest `use_webhook_secret: true` signals generation of system secret `webhook_secret` and anonymous write access for the connector's receiver endpoints ending in `-event`. Anonymous access is intentional for clients that cannot use a Sesam JWT, **not** permission to accept unvalidated requests. The receiver must validate the provider's signature or shared-secret mechanism. Some providers sign with an existing OAuth client secret instead of a separately registered webhook secret. [Manifest](../../hub/documentation/connectors/connector-manifest.rst), [webhook contract](../../hub/documentation/connectors/connector-contract.rst), [receiving events](../../hub/documentation/data-synchronization/receive-webhook-events-pattern.rst) + +The HTTP source's `validation_expression` is a Jinja template evaluated per request: + +- **Empty rendered string:** accept. +- **Non-empty rendered string:** reject, reporting that string as an error in the response. +- `secret(...)` can read system and global secrets; a system secret takes precedence. A receiver using system secrets must be associated with the system and have permission to read it. + +A synthetic source fragment using the documented HMAC pattern follows. `X-Example-Signature` must be replaced by the provider's real header and encoding, and `` provisioned as the system's `webhook_secret`, not pasted into the expression: + +```json +{ + "type": "http_endpoint", + "system": "example", + "validation_expression": "{% if request_headers['X-Example-Signature'] == b64encode(hmacsha256digest(secret('webhook_secret'), request_body)) %}{% else %}FAIL!{% endif %}" +} +``` + +[Validation semantics](../../hub/documentation/service-configuration/pipes/configuration-sources-http.rst), [HMAC example](../../hub/documentation/data-synchronization/receive-webhook-events-pattern.rst) + +**Another spelling discrepancy:** the receiving-events pattern says `use_webhook_secrets` (plural), whereas the manifest and connector contract specify `use_webhook_secret` (singular). Do not assume both work. Also, the older advice to manually put a client secret into a development validation expression should not be copied into committed configuration; use provisioned secrets. + +Webhook registration precedes consumption. For partial events, the documented pattern keeps reception fast in `-event` and performs the full-entity lookup downstream in `-event2`; collect merges full-scan `-all` data with event data. This avoids blocking the HTTP receiver on external lookups. [Webhook collection pattern](../../hub/documentation/data-synchronization/receive-webhook-events-pattern.rst) + +## Collect → desired-state transform → share + +```mermaid +flowchart TD + Api["External system API"] --> Collect["SYSTEM-DATATYPE-collect"] + Collect --> Mapping["Model mapping and target identity split"] + Mapping --> Desired["SYSTEM-DATATYPE-transform: desired state"] + Desired --> Share["Share transform: lookup and CRUD"] + Share --> Api + Share --> Results["SYSTEM-DATATYPE-share: persisted results"] + Results --> OriginJoin["Join system primary key to $generated_id"] + OriginJoin --> Collect +``` + +*The contract flow separates API-shaped collection, model-owned desired state, external writes, and persisted share results used to restore `$origin` on later collection.* + +This diagram is grounded in the [connector contract](../../hub/documentation/connectors/connector-contract.rst), [template example](../../hub/documentation/connectors/connector-templates.rst), and [collect/share runtime template reference](../../hub/documentation/service-configuration/pipes/configuration-transforms-template.rst). It is a contract-level flow, not a promise that every connector uses exactly three pipes. See [Bidirectional synchronization](../workflows/bidirectional-synchronization.md) for the wider mapping loop. + +### Collect output + +The connector output dataset must be named `SYSTEM-DATATYPE-collect`, for example `example-person-collect`. Expose data as close to the original API as possible. Connector-added business properties absent from the API use the prefix `sesam_`; contract metadata such as `$origin` and `$last-modified` keeps its specified name. + +| Field | Meaning | +| --- | --- | +| `_id` | Required Sesam entity identity, always a string. Do not confuse it with an API's numeric or composite primary key. | +| Raw API properties | Keep API names, datatypes, and structure. | +| `$origin` | Optional, opaque, managed by model mapping. Describes the entity/entities in other systems that caused this entity's creation. Retrieve it from the share sink by joining the entity's system primary key to `$generated_id`. | +| `$last-modified` | Optional Datetime of the last modification in the external system; collect it from the system or as close to it as possible. It is not Sesam's `_ts`. | + +Synthetic collected record for an entity originally inserted from another system: + +```json +{ + "_id": "7", + "id": 7, + "key": "sample", + "value": 10, + "$origin": "~:other-person:42", + "$last-modified": "~t2025-01-01T12:00:00Z" +} +``` + +An already-existing entity may omit `$origin`. `~:` denotes a JSON-encoded namespaced identifier (NI), and `~t` a typed datetime; ordinary `_id` is still a string. `$` fields are semi-reserved, stored and hashed as normal entity content. Root `_` fields are reserved; when writing a dataset, fields other than `_id` and `_deleted` are ignored. [Collect contract](../../hub/documentation/connectors/connector-contract.rst), [entity model and type encoding](../../hub/documentation/data-management/entity-data-model.rst) + +`transform-collect-rest` performs the origin join. Its reference also covers parameterized lookup and delete verification: `operation_lookup_delete` takes precedence over `operation_lookup` and can rewrite `_deleted` to false if a purportedly deleted entity still exists in the system. Match those options to the chosen collect pattern rather than assuming that a raw deletion notification is proof of absence. [Collect template options](../../hub/documentation/service-configuration/pipes/configuration-transforms-template.rst) + +### Desired-state transform input and target identities + +The input dataset must be named `SYSTEM-DATATYPE-transform`, for example `example-person-transform`. It represents the **desired target state**, not a generic mutation payload. Its business properties have the same names, datatypes, and structure as collect output, with property namespaces removed. **Do not remove the namespace from the `_id` value.** + +Identity splitting is mandatory at this boundary: + +- If the mapped entity includes one or more entities from the target system, output one desired-state entity for **each** target entity, using that target's system-specific enriched, namespaced `_id`. +- If it includes **no** target-system entity, output one entity and copy the source `_id` unchanged; that identity is treated as the origin of the inserted target entity. +- `$ids` contains the current `_id` identity and all other identities that may previously have been emitted as `_id` for the object, as NI values. This is not a list of unqualified API primary keys. + +The namespace-split pattern describes a `-transform-split` between a global pipe and `-transform` for this purpose. Without the correct target identity, cross-system updates can acquire the wrong semantic identity and introduce duplicate risks. [Input contract](../../hub/documentation/connectors/connector-contract.rst), [namespace split](../../hub/documentation/data-synchronization/namespace-split-pattern.rst) + +### Operation-specific field requirements + +These are the normative requirements in the contract's property table, **not** its incomplete example snippets: + +| Field | Insert | Update | Delete | +| --- | --- | --- | --- | +| `_id` | Required; source identity unchanged if no target exists | Required; target enriched identity | Required; target enriched identity for a physical delete | +| `_deleted` | Non-deleted, normally `false` | Non-deleted, normally `false` | `true` | +| `$ids` (`List`) | **Required**, including current and previously emitted identities | Optional | Optional | +| `$origin` (opaque) | **Required**; missing is an error | May be absent if the entity originated in this target system | May be absent if the entity originated in this target system | +| `$based_on` (`Dict`) | **Disallowed** | **Required** | **Required** | +| `$based_on_properties` (`List`) | **Disallowed** | **Required** | **Required** | +| `$replaced` (Boolean) | **Disallowed** | **Disallowed** | Optional; `true` means identity replacement, **not a real external delete** | + +`$based_on` carries the collected values for the relevant version of the target entity, covering raw properties to be written back. It is a subset of collect output, not a copy of the new desired values. `$based_on_properties` enumerates comparison property names or dot-separated paths. Together they support detection of later external modifications and avoidance of unnecessary writes. Synthetic `sesam_` properties must be removed from optimistic-locking comparisons because they do not exist in the external system. [Field requirements](../../hub/documentation/connectors/connector-contract.rst), [synthetic-property comparison warning](../../hub/documentation/data-synchronization/synthetic-properties-pattern.rst) + +The merge source emits `_deleted: true` and `$replaced: true` when an old identity is replaced by a new one. Communicate that identity change downstream, but **filter it out of physical deletes**. It is not evidence that the external entity was deleted. The dataset source offers `include_replaced: false` for filtering replaced entities. [Merge behavior](../../hub/documentation/service-configuration/pipes/configuration-sources-merge.rst), [delete pattern](../../hub/documentation/data-synchronization/delete-pattern.rst), [dataset source](../../hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst) + +### Complete synthetic desired-state examples + +These examples assume an API whose server-generated primary key is `id`, and business properties `key` and `value`. A natural-key connector may need different operation selection; absence of `id` is not a universal insert test. + +**Insert:** no target `id`, preserves source identity, includes `$ids` and `$origin`, omits baseline fields. + +```json +{ + "_id": "other-person:42", + "_deleted": false, + "$ids": ["~:other-person:42"], + "$origin": "~:other-person:42", + "key": "sample", + "value": 10 +} +``` + +**Update:** desired value differs from the collected baseline. + +```json +{ + "_id": "example-person:7", + "_deleted": false, + "id": 7, + "key": "sample", + "value": 20, + "$based_on": {"id": 7, "key": "sample", "value": 10}, + "$based_on_properties": ["id", "key", "value"], + "$origin": "~:other-person:42" +} +``` + +**Physical delete:** includes the target key and baseline, not `$replaced: true`. + +```json +{ + "_id": "example-person:7", + "_deleted": true, + "id": 7, + "$based_on": {"id": 7, "key": "sample", "value": 20}, + "$based_on_properties": ["id", "key", "value"], + "$origin": "~:other-person:42" +} +``` + +**Source example problems to avoid:** the contract's insert example omits the explicitly required `$origin`; its update example uses invalid JSON array syntax for the dictionary `$based_on` and omits `$based_on_properties`; its delete example omits required baseline fields and the illustrative API key `id`. The replacement paragraph says `_delete`, but the examples and entity model use **`_deleted`**. Its merged-identity sentence also mixes `foo-person:123` and `foo:person:124`. Use actual enriched namespace values, not that mixed spelling as a convention. The short `$replaced` example is an identity-change notification, not a complete physical-delete request. [Original contract examples](../../hub/documentation/connectors/connector-contract.rst) + +## Share results, locking, and extension points + +### Persist the result, not just the outgoing payload + +`transform-share-rest` performs CRUD against a REST system and checks optimistic locking to avoid overwriting changes made since collection. Its required core properties are `rest_system`, `primary_key` (string or list of key-property names), and `share_dataset`. Optional `primary_key_insert` handles a different insert key; `is_natural_key: true` means the key is part of the entity rather than server-generated. `operation_lookup`, `operation_insert`, `operation_update`, and `operation_delete` default to `lookup`, `insert`, `update`, and `delete`; the connector template example explicitly chooses datatype-specific operation IDs. [Share template reference](../../hub/documentation/service-configuration/pipes/configuration-transforms-template.rst) + +For an externally modified entity, the locking pattern defers the update until a new import rather than overwriting the unseen change. This reduces risk; it is not documented as an atomic cross-system transaction. `$unsafe_skip_optimistic_locking: true` explicitly allows updating despite a `modified-in-system` comparison result and is intended primarily for repair. Do not emit it by default. [Locking pattern](../../hub/documentation/data-synchronization/optimistic-locking-pattern.rst), [unsafe bypass](../../hub/documentation/service-configuration/pipes/configuration-transforms-template.rst) + +The template example persists results in `SYSTEM-DATATYPE-share`, and the contract requires passing `$origin` through to the share sink entity. The essential identity loop is: + +1. Obtain the inserted target's primary key from the external response. +2. Persist it as `$generated_id` alongside the originating metadata. +3. Later collect joins its raw target key to that stored `$generated_id` to recover `$origin`. + +Without that relationship, a recollected insertion can be treated as unrelated and cause another insertion in the original system. A direct external sink does not capture the response for this purpose; the documented pattern communicates through a transform and stores its result in a dataset. [Origin contract](../../hub/documentation/connectors/connector-contract.rst), [establish origin](../../hub/documentation/data-synchronization/establish-origin-pattern.rst), [capture response](../../hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst) + +**Result-schema boundary:** the inspected references do not provide a complete universal `transform-share-rest` sink schema or an exhaustive list of result/error codes. They do establish `$origin` pass-through and the `$generated_id` join. Do not invent a fixed `$status` schema or assume response fields from a custom pattern are built-in guarantees. + +The custom capture-response pattern uses configurable `response_body` and `response_status` names, writes `$error: "error-insert"` for its non-success statuses, and trips if a successful insert has a missing/incomplete generated key. A **synthetic result sketch for that custom single-key pattern**, not a universal share result, is: + +```json +{ + "_id": "other-person:42", + "$ids": ["~:other-person:42"], + "$origin": "~:other-person:42", + "$generated_id": 7, + "response_body": {"id": 7}, + "response_status": 201 +} +``` + +Match `$generated_id` representation and datatype to the chosen key/join logic; verify composite keys separately. In a REST transform, `response_property` defaults to `response`, `replace_entity` defaults to false, and configured status/header fields are emitted only when `replace_entity` is false. [Custom result pattern](../../hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst), [REST response configuration](../../hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst) + +### Rewrite at the supported boundary + +Prefer the share template's extension points over extra transforms around it when they express the needed adaptation: + +| Configuration dictionary | Named rule(s) | Contract at the boundary | +| --- | --- | --- | +| `rewrite_rules_payload` | `rewrite_insert_payload`, `rewrite_update_payload` | Rewrite outgoing payloads. Receives `_S.`; original source is `_S.$source`. Return a dictionary with the new payload in `$payload`. These rules take precedence over the entity's `$payload`. | +| `rewrite_rules_payload` | `rewrite_update_payload_after_patch` | Runs after client-side patching. Patched payload is `_S._payload`; original source is `_R._S.$source`. | +| `rewrite_rules_lookup` | `rewrite_lookup` | Rewrite lookup response body; receives `_S.` returned from lookup. | +| `rewrite_rules_mutation` | `rewrite_insert`, `rewrite_update`, `rewrite_delete` | Rewrite mutation responses, for example to normalize an API's returned key. Receives `_S.` returned from the mutation. | +| `rules` | `lookup_rewrite`, `lookup_rewrite_based_on`, `lookup_rewrite_update` | Comparison/patch-specific lookup rewrites. `lookup_rewrite` is the fallback; `lookup_rewrite_based_on` prepares `$based_on_lookup`, while `lookup_rewrite_update` prepares client-side patching input. | + +`client_side_patching: true` builds an update payload from the lookup result and patches it with the actual payload, for APIs requiring complete replacements instead of partial patches. The entity's `$payload` can customize update/insert requests; the share template's `payload_property` chooses the request payload property and defaults to `payload`. Do not confuse this with the raw REST transform's `payload_property`, which selects a sub-property of the **response**. [Extension-point pattern](../../hub/documentation/data-synchronization/share-template-extension-points-pattern.rst), [template details](../../hub/documentation/service-configuration/pipes/configuration-transforms-template.rst), [raw REST transform](../../hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst) + +**Reference inconsistency:** the prototype under the `transform-share-rest` heading says `"template": "transform-collect-rest"`. The share heading, CRUD description, and connector template example identify `transform-share-rest`; do not copy that prototype unchanged. [Runtime template prototype](../../hub/documentation/service-configuration/pipes/configuration-transforms-template.rst), [connector usage](../../hub/documentation/connectors/connector-templates.rst) + +### Failure and replay safety + +- Each share template `*_allowed_status_codes` option defaults to `100-599`; restricting it makes excluded statuses fail the pipe. This differs from the raw REST transform default of `200-299`. Passing a response downstream is not the same as success—allowed error statuses need handling. [Template status options](../../hub/documentation/service-configuration/pipes/configuration-transforms-template.rst), [REST status options](../../hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst) +- The connector example uses `batch_size: 1`, sink `set_initial_offset: "onload"`, and `deletion_tracking: false` for share. The insert/capture patterns explain why one-entity batches and stored successful responses matter: external mutations and local dataset writes are not transactional, and replay can repeat inserts. Duplicate checks should consult persisted successful insert results, without dependency tracking that retriggers mutations. [Connector template](../../hub/documentation/connectors/connector-templates.rst), [insert safety](../../hub/documentation/data-synchronization/insert-pattern.rst), [duplicate check](../../hub/documentation/data-synchronization/duplicate-hops-block-pattern.rst), [capture safety](../../hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst) +- Durable data (`metadata.durable: true`) is recommended for pushed inbound data and non-idempotent endpoint/share data and state. It reduces data-loss risk; it is not an exactly-once guarantee. [Durable data](../../hub/features/durable-data.rst) +- Preview executes transforms. Mark mutations as having `side_effects: true`; do not preview non-idempotent operations against production with the guard disabled. The common transform default is false, but the REST transform default is true. [Common transform options](../../hub/documentation/service-configuration/pipes/configuration-transforms.rst), [REST guard](../../hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst) + +## Focused validation when changing a connector + +This repository supplies reference documentation, not an inspected connector runtime/test suite. The following is a recommended contract-focused test plan, not a report of tests executed here: + +1. **Expansion:** reuse one template for two datatypes; confirm IDs, dataset references, operation IDs, `parent`, Boolean parameters, overrides, and generated pump settings. Resolve `system-template` versus `system_template` against the selected tooling. +2. **Collect fidelity:** verify raw types/structure, `sesam_` additions, timestamps, and recovery of `$origin` using the correct generated key type. Test an existing entity with no origin as well as a previously inserted entity. +3. **Transform requirements:** cover insert/update/delete, missing insert `$origin`, missing `$ids`, invalid baseline type, absent comparison paths, forbidden baseline fields on insert, and forbidden `$replaced` on non-delete operations. Assert one output per target identity and unchanged source identity when no target exists. +4. **Locking:** use synthetic external lookup responses for unchanged baseline, changed target, already-desired value, nested comparison paths, and synthetic properties excluded from comparison. Exercise the repair bypass only as a separate explicit scenario. +5. **Share results and replay:** test generated-key extraction, missing key failure, mutation-response rewrites, rejected versus passed-through HTTP errors, stored origin recovery, repeated insert input, and identity-replacement tombstones that must not physically delete or reinsert records. +6. **Webhook trust:** valid signature, invalid signature, changed body, wrong header, wrong secret, and permission configuration. Verify that partial-event lookups are downstream of reception. Resolve singular/plural manifest spelling; confirm secrets are provisioned without committed plaintext. + +The documented local workflow runs pipes until queues drain, with output pipes disabled or unable to send to external systems, then compares endpoint output with expected results. It uses `expected/.json` plus `expected/.test.json`; test options include `stage`, `endpoint`, `blacklist`, and endpoint-bound `parameters`. Run: + +```text +sesam -vv test +``` + +Inspect actual results rather than blindly updating snapshots. The local-testing source itself has imperfect examples and an ambiguous internal-property filtering paragraph; verify the selected client's comparison behavior, particularly around `_deleted`. [Local testing reference](../../hub/documentation/operations/testing-locally.rst) + +Continue with [Configuration change lifecycle](../testing/configuration-change-lifecycle.md), [Build an integration](../workflows/build-an-integration.md), or [Extensions and JSON protocols](extensions-and-json-protocols.md) for broader validation and extension boundaries. diff --git a/openwiki/integrations/extensions-and-json-protocols.md b/openwiki/integrations/extensions-and-json-protocols.md new file mode 100644 index 00000000000..0387a344fb1 --- /dev/null +++ b/openwiki/integrations/extensions-and-json-protocols.md @@ -0,0 +1,467 @@ +--- +type: integration-contract +title: Custom sources, transforms, sinks, and JSON streaming protocols +description: HTTP extension contracts for Sesam sources, transforms, and sinks, including JSON Pull continuation and JSON Push full synchronization. Explains remote URL/REST services versus managed microservices, authentication, hosting, retries, deletion handling, and adapter test boundaries. +tags: [integrations, extensions, http, json, microservices, synchronization] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-e389b2c6e31446ccc4126746 + resource: repo://hub/api.rst + - id: openwiki-source-e71b9a4d7905cda109adae3d + resource: repo://hub/custom-data-sink.rst + - id: openwiki-source-859607aeae4d97d50f4df39e + resource: repo://hub/custom-data-source.rst + - id: openwiki-source-85f46d9392a00b2d45c14aef + resource: repo://hub/custom-data-transform.rst + - id: openwiki-source-5fd606e14966f8a238296bce + resource: repo://hub/documentation/building-blocks/secrets.rst + - id: openwiki-source-ab28f0a659eec676b26e672b + resource: repo://hub/documentation/data-management/entity-data-model.rst + - id: openwiki-source-80eedbbd35c9d596a2d38fe2 + resource: repo://hub/documentation/operations/behind-the-scenes.rst + - id: openwiki-source-caeff9d3196d7b81403130e3 + resource: repo://hub/documentation/operations/security.rst + - id: openwiki-source-b0873caaed9a7f3931985514 + resource: repo://hub/documentation/operations/self-hosted-k8s.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-9b06b9e105f615155cf1f604 + resource: repo://hub/documentation/service-configuration/environment-variables/environment-variables.rst + - id: openwiki-source-811b94c0236de6dfe3bad74f + resource: repo://hub/documentation/service-configuration/pipes/configuration-pump.rst + - id: openwiki-source-05bf7439a418093a5a72733a + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-http.rst + - id: openwiki-source-9ee2e148f16e9bce026dd91c + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-json.rst + - id: openwiki-source-709dcd56cf1f6f81f6584be7 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst + - id: openwiki-source-34a5868158cdab3512bd05e8 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-json.rst + - id: openwiki-source-0b016c49ad5a5e105f9d582d + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst + - id: openwiki-source-d6b1a7911ad4b2f54edfb598 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources.rst + - id: openwiki-source-9ab42454ff803b278c631c1f + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-http.rst + - id: openwiki-source-d7b57e98b18e9bdc4aac23c0 + resource: repo://hub/documentation/service-configuration/systems/configuration-systems-microservice.rst + - id: openwiki-source-e3ab6d41e79b5df3ed8f521c + resource: repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst + - id: openwiki-source-4b9a915a059dfbaf16712b15 + resource: repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst + - id: openwiki-source-3902473100e6919f4481c8d0 + resource: repo://hub/extension-points.rst + - id: openwiki-source-782bcbded2c4efbea17fb497 + resource: repo://hub/features/automatic-reprocessing.rst + - id: openwiki-source-abbaf1a032635daa7f6e9355 + resource: repo://hub/idempotency.rst + - id: openwiki-source-37fc6bff358e9ead6ffde752 + resource: repo://hub/json-pull.rst + - id: openwiki-source-927e754308050c77a42a0216 + resource: repo://hub/json-push.rst + - id: openwiki-source-dd380c4c75f5646d47204a6b + resource: repo://hub/microservices-in-sesam.rst + - id: openwiki-source-c92a884f90ca8ac7f160c79a + resource: repo://hub/swagger_public.yaml + - id: openwiki-source-d1d05121b2727486737b7147 + resource: repo://hub/tutorial-custom-data-source-microservice.rst + - id: openwiki-source-7329a9d7f6dff5e134a90895 + resource: repo://hub/tutorial-microservice-continuation-support.rst +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Custom sources, transforms, sinks, and JSON streaming protocols + +Sesam extensions adapt systems that the built-in components cannot handle directly. The custom code lives in an HTTP service, not inside the pipe configuration. A **system** supplies connectivity and authentication; the pipe's **source, transform, or sink** determines what the service must do with entities. Hosting an adapter as a microservice does not change its wire contract. + +The key distinction is between **synchronizing an entity stream** and **transforming a batch**. JSON Pull and JSON Push carry synchronization state. An HTTP transform is an array-in/array-out request-response operation, even though it also uses JSON over HTTP. + +## Choose the role and the hosting boundary separately + +| Role | Sesam configuration | Direction and responsibility | +|---|---|---| +| Custom pull source | `source.type: "json"` with a URL or microservice system | Sesam GETs an entity array using JSON Pull. The adapter exposes source data and, when supported, interprets `since` and returns change markers. | +| Custom transform | `transform.type: "http"` with a URL or microservice system | Sesam POSTs an array and consumes the returned array as the next transformation stage. The service may modify, filter, or create entities. | +| Custom push sink | `sink.type: "json"` with a URL or microservice system | Sesam POSTs entity batches using JSON Push. The adapter applies them to a target, including deletions and full-sync boundaries. A legacy-system adapter should make repeated writes appear idempotent. | +| External producer pushing into Sesam | `source.type: "http_endpoint"` | Registers `/api/receivers/{pipe_id}/entities`. Incoming POSTs drive the pipe and write to its sink; no pump is configured for this source. | +| External consumer pulling from Sesam | `sink.type: "http_endpoint"` | Registers `/api/publishers/{pipe_id}/entities`. Incoming GETs drive retrieval from the pipe; no pump is configured for this sink. | + +The first three roles are outbound HTTP interactions initiated by Sesam. The last two expose the complementary protocols through the Service API. Dataset reads at `/api/datasets/{dataset_id}/entities` also support JSON Pull. Publisher query parameters are available to DTL as `_B`, so a publisher transform can affect which entities a client sees. + +Choose the system independently: + +- **Remote URL service — `system:url`:** represents an already-running HTTP/HTTPS server. It provides sessions, connection pooling, and authentication, but does not start an adapter. The service can run anywhere reachable over HTTP from Sesam. `url_pattern` inserts a pipe's relative URL at `%s`; without `%s`, the relative URL is appended. `base_url` is deprecated, and exactly one of `base_url` and `url_pattern` must be specified. +- **Remote REST service — `system:rest`:** extends the URL system with named operations, HTTP methods, templates, and response/pagination mapping. Prefer REST source/sink/transform components for APIs that do not implement Sesam's contracts. A JSON-capable API is not automatically a JSON Pull/Push endpoint. REST sources support pagination in bodies or link headers and continuation in query parameters or headers. REST operations can be shared on the system or overridden on a component; component definitions take precedence, and secret-bearing operations belong on the system. +- **Managed adapter — `system:microservice`:** supplies similar HTTP connectivity but also provisions the configured Docker image. It works with the JSON source, HTTP transform, and JSON push sink, and determines its own service address rather than taking `base_url`. + +See [Pipes and systems](../configuration/pipes-and-systems.md) for configuration ownership and [Connectors and contracts](connectors-and-contracts.md) for built-in alternatives. The role contracts are documented in [custom sources](../../hub/custom-data-source.rst), [custom transforms](../../hub/custom-data-transform.rst), and [custom sinks](../../hub/custom-data-sink.rst). + +## Entity and media-type contract + +For portable Pull/Push implementations, send an **array of entities**, including for a single entity. The protocols specify arrays. The Sesam HTTP receiver additionally accepts a single object, but that is an endpoint convenience, not the array-only HTTP transform contract. Receiver POSTs require `Content-Type: application/json`; HTTP transforms require `application/json` in both request and response. + +An entity is a dictionary with string keys and values that may be literals, lists, or nested dictionaries: + +| Field | Contract at the extension boundary | +|---|---| +| `_id` | Required string primary key, unique for a logical entity within a flow. Multiple versions may share that identity. | +| `_deleted` | Optional; omitted means not deleted. Boolean `true` marks deletion; the entity model interprets other values as not deleted. Emit booleans rather than strings such as `"true"`. | +| `_updated` | Optional string or integer source sequence/token. Needed for continuation; meaningful to the producing source, not a timestamp that every consumer should parse. It can be relayed as `since`. | +| Other root-level `_...` fields | Reserved. When writing to a dataset, only `_id` and `_deleted` are accepted as stored input fields; other reserved input fields are ignored. The source can still use incoming `_updated` for continuation before that write. The reservation does not apply to nested child dictionaries. | + +Dataset-generated metadata such as `_updated`, `_hash`, `_previous`, and `_ts` may be present on exported entities. A JSON push sink includes reserved fields. Do not forward them blindly into a legacy target: interpret `_deleted: true` as a target deletion operation where appropriate, and remove metadata that the target does not understand. + +### Preserve typed values, not just JSON shape + +Sesam supports JSON values and a limited set of Transit-style extension strings. Preserve their prefixes when exchanging entities: + +| Type | Wire example | +|---|---| +| Namespaced identifier | `"~:example:123"` | +| URI | `"~rhttps://example.invalid/resource"` | +| Date | `"~t2024-01-02"` | +| Datetime | `"~t2024-01-02T03:04:05.123456789Z"` | +| Bytes, base64 encoded | `"~bAAECAwQF"` | +| UUID | `"~u531a379e-31bb-4ce1-8690-158dceb64be6"` | +| Arbitrary-precision decimal | `"~f12345678901234567890.1234567890"` | + +Datetime strings require both date and time, UTC, and the final `Z`; fractional seconds are optional, with up to nanosecond precision. Unrecognized Transit tags are treated as strings, and the documentation reports no escape mechanism for literal strings beginning with `~`. Treat that as a compatibility constraint for an adapter handling such strings. Decimal is arbitrary precision; Float is IEEE 754 binary64 and can lose precision. The HTTP receiver defaults `do_float_as_decimal` and `do_float_as_int` to `true`: fractional numbers become Decimal, while numbers whose fractional digits are all zero become Integer. + +**Illustrative payload derived from documented contracts; unexecuted, with synthetic data:** + +```json +[ + { + "_id": "contact-001", + "_deleted": false, + "_updated": 42, + "name": "Example Contact", + "reference": "~:example:123", + "modified_at": "~t2024-01-02T03:04:05Z", + "amount": "~f12345678901234567890.1234567890" + } +] +``` + +See [Entities, datasets, and identifiers](../concepts/entities-datasets-and-identifiers.md) and the [entity model](../../hub/documentation/data-management/entity-data-model.rst) for the full data contract. + +## JSON Pull: continuation belongs to the source and pump + +JSON Pull uses GET to retrieve entity streams across one or more requests. The [protocol](../../hub/json-pull.rst) defines: + +| Query parameter | Meaning | +|---|---| +| `since` | Start **after** the specified stream offset/token, which refers to `_updated`. Omission requests the beginning. For an ordered stream, use the last received entity's `_updated` to continue. The documented publisher example `since=21` starts at `_updated: 22`. | +| `limit` | Integer cap on the number of returned entities. The protocol default is unlimited, but an endpoint may choose another default. It is not a page number. | +| `subset` | JSON-encoded subset expression. If the endpoint supports subsets but the requested subset does not exist, it returns `404`. An endpoint without subset support may ignore the parameter entirely. | + +URL-encode query values, particularly subset expressions. A documented subset form is `["eq", "_S.vowel", true]`, with an index expression on the left and a subset value on the right. Do not assume that an arbitrary REST filter provides this subset contract. + +### Configure only capabilities the source actually has + +The JSON source defaults to `supports_since: false`, `is_since_comparable: true`, and `is_chronological: false`. Setting `supports_since: true` causes Sesam to add `since` to its requests. The pump chooses its tracking strategy in this order: + +1. **Chronological:** `supports_since` and `is_chronological` are true. Store `_updated` values in stream order; the pump can checkpoint during a run and resume after an interrupted run. +2. **Max:** otherwise, `supports_since` and `is_since_comparable` are true. Store the maximum marker seen in the run. For an unordered source, the new marker is known at the end, and a failed request must be reread rather than resumed at an arbitrary last entity. +3. **None:** otherwise, no continuation tracking. + +The marker is stored in the pump's `pipe_offset`, visible through the Service API and execution logs. The pump's `update-last-seen` operation can update or reset it. On initial import or reset, a source without `initial_since_value` has no stored marker and is requested from the beginning. If configured, `initial_since_value` deliberately changes that behavior. + +For built-in JSON-source paging, set `page_size` to an integer at least 1. Sesam then passes it as `limit` and requests pages until there is no more data. This requires **all three** flags—`supports_since`, `is_chronological`, and `is_since_comparable`—to be true. Do not enable chronology merely to turn paging on when the upstream results are unordered. + +```mermaid +sequenceDiagram + participant Pump as Sesam pump and JSON source + participant Adapter as Pull adapter endpoint + Note over Pump,Adapter: Ordered integer-token example with page_size 2 + Pump->>Adapter: GET entities?limit=2 without since + Adapter-->>Pump: JSON array with _updated 0 and 1 + Pump->>Pump: Track pipe_offset 1 + Pump->>Adapter: GET entities?since=1&limit=2 + Adapter-->>Pump: JSON array with _updated 2 and 3 + Pump->>Pump: Track pipe_offset 3 + Pump->>Adapter: GET entities?since=3&limit=2 + Adapter-->>Pump: Empty JSON array + Note over Pump,Adapter: Later run continues from the stored marker + Pump->>Adapter: GET entities?since=3&limit=2 + Adapter-->>Pump: Newly changed entities after 3 +``` +*Pull continuation for an adapter that really supplies ordered, comparable tokens; each response may also carry dataset-state headers.* + +The continuation tutorial maps a remote modification field into `_updated`, then maps incoming `since` into the remote API's changed-record query. This is a mapping pattern, not a universal API implementation. Verify the remote API's ordering, filter operator, and pagination. In particular, timestamp ties at a page boundary deserve a focused test so that a strict “after” query does not skip records. The tutorial's unordered example uses the max strategy; it does not establish chronological paging support. + +### Dataset-state response headers + +Do not reduce a Pull response to its array and discard its state metadata: + +| Header | Meaning | +|---|---| +| `X-Dataset-Populated` | `true` or `false` for the dataset's populated flag. Missing means **unknown**, not false. | +| `X-Dataset-Max-Updated` | JSON-encoded highest committed offset. For an unfiltered complete retrieval, the last entity should have this `_updated`. | +| `X-Dataset-Filtered` | `true` when the source stream is filtered. The entity at `X-Dataset-Max-Updated` is then not guaranteed to appear, for example through a publisher with a transform. | +| `X-Dataset-Generation` | UUID assigned at creation. Deleting and recreating the dataset gives it a new generation UUID. | +| `X-Dataset-Completeness` | When set, completeness as integer microseconds since the Unix epoch. | +| `X-Dataset-Restore-Uuid` | UUID assigned when the dataset is restored from backup. | +| `X-Dataset-Restore-Offset` | JSON-encoded highest committed offset at the last restore. | + +Automatic reprocessing uses several of these headers to detect when a pipe must rewind or reset. That feature is policy-controlled: `reprocessing_policy` defaults to `continue`, not automatic reset. See [Synchronization and state](../configuration/synchronization-and-state.md). + +### Absence is not a delta deletion + +A continuation response describes changes, not an authoritative snapshot. An entity absent from it is not automatically deleted. Emit deletion entities or periodically perform a full rescan to detect disappearance. The tutorial demonstrates `rescan_cron_expression` for periodic complete imports. + +For a snapshot-style JSON source, an empty successful import can delete previously synchronized entities. `if_source_empty` defaults to `"accept"`; setting it to `"fail"` fails an empty import and preserves previous entities instead. This is especially important when an adapter might confuse an upstream outage with an empty collection. Propagate an upstream failure as a failure rather than returning a successful error array or `[]`. + +## HTTP transform: a batch operation, not a synchronization session + +An HTTP transform POSTs a JSON array and must receive a JSON array, containing **zero or more** entities. It may change cardinality: drop inputs, expand them, or create new entities. Its result continues through later transforms and into the sink; it is not merely an acknowledgement that the input was stored. + +- Both request and response must be `application/json`. +- Non-`2xx` responses raise an exception. +- `system` and `url` identify the endpoint. Optional `headers` require string keys and string values. +- `batch_size` limits entities per request and defaults to `100`. +- `side_effects` defaults to `true`, protecting against unintended external changes through features such as pipe preview. Set it to `false` only when the transform is actually safe to preview or those effects are explicitly acceptable. +- `trigger_on` can select entities by a property and value, with `*` substring wildcards. Its default key is `_trigger`; entities with a missing key or nonmatching value pass through without transformation. + +Do not implement `since`, `is_first`, `is_last`, or full-sync deletion detection merely because this operation uses POST. They belong to the Pull/Push contracts, not the [HTTP transform contract](../../hub/documentation/service-configuration/pipes/configuration-transforms-http.rst). A later DTL stage can normalize the response and supply the required `_id` before it reaches a dataset. + +## JSON Push: full versus incremental synchronization + +JSON Push POSTs entity arrays in batches. It is implemented by the JSON push sink and accepted by the HTTP endpoint source. The [protocol](../../hub/json-push.rst) defines these query parameters: + +| Parameter | Type and scope | +|---|---| +| `sequence_id` | String token generated when a sync starts, included in all protocol requests. A UUID is recommended for uniqueness. | +| `request_id` | String token generated for each request, included in all requests. It is local to the sequence, so numeric-looking string tokens are acceptable. | +| `previous_request_id` | String reference to the prior request's `request_id`; omitted on the first request. | +| `is_full` | Boolean in all requests, default `false`. `true` declares that the sequence contains the complete set. | +| `is_first` | Boolean `true` on the first request of a **full** sync only. | +| `is_last` | Boolean `true` on the last request of a **full** sync only. | + +### Incremental push + +Incremental requests add/update the supplied entities and can explicitly delete them with `_deleted: true`. The server may silently ignore the sequence parameters and accept the entities. The documented minimal receiver example omits query parameters entirely and is treated as incremental. + +An incremental request does **not** change an active full-sync sequence. Omission from an incremental push is not deletion: the HTTP endpoint source registers incoming data as a stream of changes. A producer that stops including a record has not, by that act alone, removed it downstream. + +### Full push and the final batch + +A full sequence declares an authoritative set. Only one full `sequence_id` should be active at a time. A different full sequence replaces the active sequence, and `is_last=true` ends its scope. Entities previously present but missing from the completed full sequence are marked deleted. The documented examples show updates visible between requests; do not design the target around an assumed all-batches atomic commit. + +The Sesam JSON push sink defaults to batches of `100` and **always sends a final empty batch**. For 150 entities, the adapter receives arrays of 100, 50, and 0 entities. A full sync uses the last request to signal completion. An empty final array is therefore meaningful control flow, not malformed input. An external producer may instead include entities in its last batch, as the protocol examples do. + +```mermaid +sequenceDiagram + participant Sender as Sesam JSON push sink + participant Receiver as Custom sink adapter + Note over Sender,Receiver: Full sequence S1 with 150 entities and batch_size 100 + Sender->>Receiver: POST 100 entities with sequence_id S1 and request_id R1 + Note over Sender,Receiver: is_full true and is_first true + Receiver->>Receiver: Start full sequence and apply batch + Receiver-->>Sender: Success response + alt Ordered continuation + Sender->>Receiver: POST 50 entities with sequence_id S1 and request_id R2 + Note over Sender,Receiver: is_full true and previous_request_id R1 + Receiver->>Receiver: Validate chain and apply batch + Receiver-->>Sender: Success response + Sender->>Receiver: POST empty array with sequence_id S1 and request_id R3 + Note over Sender,Receiver: is_full true and previous_request_id R2 and is_last true + Receiver->>Receiver: Finish sequence and handle missing-entity deletions + Receiver-->>Sender: Success response + else Invalid predecessor on the next request + Sender->>Receiver: POST next batch with a wrong previous_request_id + Receiver-->>Sender: 409 Conflict + Sender->>Sender: Stop active sync and retry later + Sender->>Receiver: Restart from beginning with a new sequence_id + end +``` +*Multi-batch full push, including Sesam's empty closing batch, with an alternative ordering-conflict and restart path.* + +### Conflicts are restart signals + +For a full sync, the HTTP server should return `409 Conflict` when: + +- `previous_request_id` does not match the preceding request's `request_id`; +- `is_full` differs from the preceding request in the same sequence; +- `is_first=true` is supplied when the server knows it is not the first request in the active sequence. + +On `409`, the JSON push sink must stop the active sync and try again later. For a full sync it restarts **from the beginning with a new sequence**, rather than resending only the disputed page. Implement ordering validation and restart behavior together. General retry settings are not a substitute for this protocol rule. + +A sink adapter also needs target-specific idempotency and deletion handling. Test replay against the actual target operation: a repeated create must not accidentally create duplicates, and a deleted entity must not become an ordinary update just because reserved fields were stripped too early. + +## Configuration and hosting + +The following configurations are **illustrative, derived from documented examples, and unexecuted**. Hosts, image names, entity IDs, variables, and secrets are synthetic placeholders. No endpoints were contacted and no adapter containers were started for this page. + +### An already-running remote adapter + +```json +{ + "_id": "remote-adapter", + "type": "system:url", + "url_pattern": "https://adapter.example.invalid/api/%s", + "verify_ssl": true, + "authentication": "jwt", + "jwt_token": "$SECRET(adapter-jwt)", + "connect_timeout": 60, + "read_timeout": 1800 +} +``` + +Point a JSON source or sink at this system only if that endpoint implements Pull or Push. Otherwise use a REST system and REST components to map its real API. + +### A managed adapter and a chronological pull source + +```json +[ + { + "_id": "managed-adapter", + "type": "system:microservice", + "docker": { + "image": "registry.example.invalid/team/adapter:1.0.0", + "port": 5000, + "memory": 128, + "environment": { + "UPSTREAM_URL": "$ENV(upstream-url)", + "UPSTREAM_TOKEN": "$SECRET(upstream-token)", + "OPTIONS": {"collection": "contacts"} + } + }, + "connect_timeout": 60, + "read_timeout": 1800 + }, + { + "_id": "contacts-collect", + "type": "pipe", + "source": { + "type": "json", + "system": "managed-adapter", + "url": "/entities", + "supports_since": true, + "is_since_comparable": true, + "is_chronological": true, + "page_size": 100 + }, + "sink": {"type": "dataset", "dataset": "contacts"}, + "pump": {"rescan_cron_expression": "0 0 ? * *"} + } +] +``` + +This source configuration assumes `/entities` implements chronological, comparable continuation and `limit`. It is not a declaration that the image acquires those capabilities automatically. For an unordered but comparable source, use the max strategy and omit chronological paging. + +The same managed system can be referenced in the other roles, if it implements the corresponding routes: + +```json +[ + { + "_id": "contacts-enrich", + "type": "pipe", + "source": {"type": "dataset", "dataset": "contacts"}, + "transform": { + "type": "http", + "system": "managed-adapter", + "url": "/transform", + "batch_size": 100 + } + }, + { + "_id": "contacts-export", + "type": "pipe", + "source": {"type": "dataset", "dataset": "contacts"}, + "sink": { + "type": "json", + "system": "managed-adapter", + "url": "/receive", + "batch_size": 100 + } + } +] +``` + +### Provisioning, reachability, and lifecycle + +- `docker.image` and `docker.port` are required. The port must be exposed by the container and match the service listener. The system supports private image repositories through `docker.username` and `docker.password`; those credentials are separate from HTTP authentication with the running service. +- Managed microservices are individual Docker containers in the documented single-machine architecture, and individual Kubernetes deployments in the clustered architecture. The `docker` configuration describes the image even when the runtime is Kubernetes. Self-hosted cluster installation is a separate deployment concern; its repository guide is explicitly marked draft. +- Microservice HTTP is the default; `use_https: true` selects HTTPS. URL and microservice `verify_ssl` both document a default of `false`. Set certificate verification deliberately; a URL system can use `custom_ca_pem_chain` when verification is enabled. +- A microservice `_id` becomes a local-network domain name. Follow the documented 2–63 character length, start with an ASCII letter or number, use only letters, numbers, `_`, and `-`, and use lower-case letters to avoid DNS lookup errors. +- Check both hops: Sesam must reach the adapter, and the adapter must reach the upstream/target service. `docker.hosts` adds hostname-to-IP mappings inside the container; URL systems offer HTTP(S)/SOCKS5 proxy settings. The Service API proxy can access a managed route through `/api/systems/{system_id}/proxy/{rest_of_path}`; it is not the same endpoint as a pipe receiver or publisher. +- `docker.skip_pull` defaults to `false`: restarts, including configuration changes, attempt to pull the image. `docker.pull_image_cron_expression` schedules pulls and restarts the container if a newer image is pulled. Plan for restart-safe adapter behavior and deliberate image versioning. +- `eager_load: false` lets Sesam defer starting an unconnected microservice. The documented default is `true`, except `false` for developer subscriptions. The property overrides the service-metadata default. +- `docker.memory` defaults to 128 MB. Container resource use can affect the whole node. The documentation recommends small containers and streaming rather than retaining entire imports/exports in adapter memory. + +See [Deployment and durability](../operations/deployment-and-durability.md) for platform concerns and the [microservice configuration](../../hub/documentation/service-configuration/systems/configuration-systems-microservice.rst) for resource and lifecycle settings. + +### Environment, secrets, and authentication + +`$ENV(name)` resolves configuration environment values; `$SECRET(name)` references a secret in a supported configuration location. Pass adapter-wide values in `docker.environment`, pipe-specific routing values in URLs, and synchronization state in the protocol parameters. String environment values are passed as-is; other values are serialized to JSON strings, so the adapter must decode values such as `OPTIONS` itself. + +Secrets are write-only through the API and should be used for credentials. Prefer system-local secrets. Removing and re-adding a system removes its local secrets, so re-upload them as part of recovery. Receiving a secret through a container environment does not excuse the adapter from protecting it in its own logs. + +Keep the authentication domains distinct: + +| Connection | Documented authentication contract | +|---|---| +| Client to Sesam Service API | Normally `Authorization: Bearer YOUR-JWT-TOKEN`, with appropriate permissions. The protocol examples use `Authorization: bearer YOUR-JWT-TOKEN`. | +| Sesam to URL/REST server | Authentication is opt-in. URL values are `basic`, `digest`, `ntlm`, `tripletex`, or `jwt`; provide the corresponding credentials. `jwt` requires `jwt_token`, which overwrites an `Authorization` header set in system headers. | +| Sesam to managed microservice | Authentication is opt-in, with `basic` or `digest`. Set `authentication`, `username`, and `password`; without authentication selection, username/password are ignored. | +| Managed adapter to its upstream | Implemented by adapter code using its own supplied credentials and the upstream API contract. Hosting does not supply upstream authentication logic. | + +URL OAuth2 configuration supports client-credentials and refresh-token grants. It cannot be combined with JWT authentication or `jwt_token`; TLS is required for token and target endpoints. Token refresh is controlled by `refresh_window`, default 30 seconds before expiry. + +A receiver has an alternative for clients unable to use JWT: `validation_expression` is a Jinja template rendered for each request. **Empty rendered text accepts; nonempty text is the error response.** It has `url`, `request_params`, and `request_headers`, plus `secret(...)` and custom filters such as `decode_jwt`. A documented form is: + +```jinja +{{ '' if request_headers['X-Sesam-Authorization'] == secret('webhook_secret') else 'Invalid authorization header value' }} +``` + +Without JWT, the receiver pipe must grant `write_data` to `group:Anonymous`; custom validation then becomes the critical guard. System secrets take precedence over same-named global secrets, and using system secrets requires the pipe to have permission to read that system. Do not turn on anonymous access without installing and testing validation. + +On receiver POSTs, sink-dataset completeness defaults to the current time. A positive integer `X-Dataset-Completeness` request header can override it; microseconds since epoch are recommended. `auto_populate_dataset` defaults to `true` and applies only to a dataset sink. These are separate from whether a full synchronization has completed. + +See [Security and secrets](../operations/security-and-secrets.md), [URL configuration](../../hub/documentation/service-configuration/systems/configuration-systems-url.rst), and [receiver configuration](../../hub/documentation/service-configuration/pipes/configuration-sources-http.rst). + +## Timeouts, retries, and operational diagnosis + +URL and microservice systems default to `connect_timeout: 60` seconds and `read_timeout: 1800` seconds. These govern Sesam's connection to and wait for the HTTP service. Configure the adapter's upstream HTTP calls separately; do not assume Sesam's system settings are propagated into its HTTP library. + +`retry_strategy` on URL systems—and through the microservice system's reference to the same policy—sets pump retry defaults by HTTP status code. Keys can be individual codes, ranges such as `400-428`, lists such as `500,502,504`, or `default`. A property set directly on the pump takes precedence. Supported policy properties are: + +`max_read_retries`, `read_retry_delay`, `write_retry_delay`, `max_retries_per_entity`, `max_consecutive_write_errors`, `max_write_errors_in_retry_dataset`, and `batch_retries`. + +The documented example treats `400-428` as nonretryable writes, delays `429` by 30 seconds, and delays selected server errors by 60 seconds. Those are example policies, not automatic defaults. In particular, retain the special JSON Push `409` restart semantics. + +The pump owns retries, execution logging, and optional dead letters. Defaults include `max_read_retries: 0`, `max_consecutive_write_errors: 1`, and `max_write_errors_in_retry_dataset: 0`; the last setting effectively disables failed-write retries recorded in that dataset. `batch_retries` defaults to 3, and `fallback_to_single_entities_on_batch_fail` defaults to `true`. Review the combined settings rather than assuming that increasing only `max_retries_per_entity` enables a durable retry queue. + +For diagnosis: + +1. Inspect the managed system's **Status** page and adapter logs. Log relevant route, sequence, batch, and upstream-failure context from adapter code. System APIs expose logs, status, reload, and proxy access. +2. Inspect the pipe execution log for failures, `pipe_offset`, and `processed_last_run`. The continuation tutorial uses the offset and changed-record count to check behavior. Adapter logging often gives more context than a pipe traceback alone. +3. Enable receiver `trace` only deliberately. It can log request/response headers and body prefixes in execution events; defaults are trace off, 100-byte body prefixes, and 600 redacted bytes of the `Authorization` request header. `trace.log_secret_redacted_bytes: -1` redacts that entire header. Other sensitive headers and bodies still need scrutiny. +4. Distinguish reachability, authentication, upstream failure, malformed entity data, transform media-type failure, and Push ordering conflict. Do not mask any of these as a successful empty source response. + +See [Monitoring and troubleshooting](../operations/monitoring-and-troubleshooting.md) and [pump configuration](../../hub/documentation/service-configuration/pipes/configuration-pump.rst). + +## Adapter implementation boundary and focused tests + +This repository documents contracts and configuration examples; the starter implementations are external repositories. For example, the documentation links [Python datasource](https://github.com/sesam-io/python-datasource-template), [Python transform](https://github.com/sesam-io/python-transform-template), and [Python datasink](https://github.com/sesam-io/python-datasink-template) templates, with source templates also available for ASP.NET, Java, and NodeJS. Those links are implementation handoffs, not evidence that their current code or dependency versions have been validated here. + +The [source microservice tutorial](../../hub/tutorial-custom-data-source-microservice.rst) and [continuation tutorial](../../hub/tutorial-microservice-continuation-support.rst) are **documented but unexecuted examples**. Their API-specific filters, credentials, and illustrative Flask code must be reviewed in the adapter's implementation repository before deployment. They establish the integration pattern, not a tested production implementation for a current upstream API. + +Recommended contract tests, derived from the behaviors above: + +| Area | Focused checks | +|---|---| +| Entity round-trip | String `_id`, booleans for deletion, integer/string tokens, nested dictionaries, typed prefixes, and decimals that would lose precision through Float. Verify reserved-field handling at dataset and target boundaries. | +| Pull | Initial request without `since`, resume after the last marker, `limit` paging, timestamp ties, unsorted input never advertised as chronological, empty change responses, and interruption under both chronological and max strategies. | +| Pull metadata | Missing populated header remains unknown; filtered streams need not contain the max-offset entity. Exercise generation changes and restores under the intended reprocessing policy. | +| Transform | Arrays for one, zero, and many outputs; non-JSON media type; non-`2xx` failure; batch splitting; trigger bypass; and preview protection for side effects. | +| Push | Incremental omission leaves entities intact; explicit deletion reaches the target; full omission marks deletion only on completion; empty closing batches are accepted. Inject wrong predecessor IDs, inconsistent `is_full`, and repeated `is_first`, then check `409` and a new full sequence from the beginning. | +| Failure and operations | Upstream outage is not a successful empty snapshot. Check connection/read timeouts, configured status policies and pump overrides, replay idempotency, restart during a full sequence, secret restoration after system recreation, and trace redaction. | +| Receiver security | Valid/invalid JWT or custom validation, anonymous write permission only when intended, secret precedence, and completeness-header validation. | + +The documented Sesam client testing workflow compares endpoint-pipe output against fixtures in `expected/`, using `.json` and `.test.json`, and runs `sesam -vv test`. It recommends disabling output pipes or making them unable to send to real target systems during tests. Use adapter-local tests as well: fixture comparison alone does not verify remote writes, deletion operations, or synchronization ordering. This page has not run either workflow. + +For the surrounding workflow, continue with [Build an integration](../workflows/build-an-integration.md) and [APIs and repository handoffs](apis-and-repository-handoffs.md). diff --git a/openwiki/integrations/index.md b/openwiki/integrations/index.md new file mode 100644 index 00000000000..920d7505dcb --- /dev/null +++ b/openwiki/integrations/index.md @@ -0,0 +1,5 @@ +# Files + +- [Node and Portal APIs, public surfaces, and implementation handoffs](apis-and-repository-handoffs.md) - Locate the checked-in Node, Portal, and legacy databrowser contracts, with exact operation paths, formats, safety constraints, and authentication boundaries. Separate documented product behavior from backend and UI implementation questions that require another repository. +- [Connector manifests, templates, and desired-state contracts](connectors-and-contracts.md) - Explains reusable Sesam connector configuration, template expansion, authentication and webhook validation, and the collect, desired-state transform, and share-result boundaries. Includes operation-specific entity requirements and warnings about inconsistent examples and discontinued onboarding metadata. +- [Custom sources, transforms, sinks, and JSON streaming protocols](extensions-and-json-protocols.md) - HTTP extension contracts for Sesam sources, transforms, and sinks, including JSON Pull continuation and JSON Push full synchronization. Explains remote URL/REST services versus managed microservices, authentication, hosting, retries, deletion handling, and adapter test boundaries. diff --git a/openwiki/operations/deployment-and-durability.md b/openwiki/operations/deployment-and-durability.md new file mode 100644 index 00000000000..2adff4e2b80 --- /dev/null +++ b/openwiki/operations/deployment-and-durability.md @@ -0,0 +1,266 @@ +--- +type: operations concept +title: Deployment variants, backups, compaction, and durable data +description: Documented Sesam service topologies and the division of deployment, storage, backup, and recovery responsibilities. Explains durable pipe data, compaction, deletion history, and deployment-documentation conflicts that require subscription-specific confirmation. +tags: [deployment, operations, storage, backup, durability, compaction] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-4bbe4e83d74f3fe902420d24 + resource: repo://hub/changelog.rst + - id: openwiki-source-ab28f0a659eec676b26e672b + resource: repo://hub/documentation/data-management/entity-data-model.rst + - id: openwiki-source-80eedbbd35c9d596a2d38fe2 + resource: repo://hub/documentation/operations/behind-the-scenes.rst + - id: openwiki-source-49571473fa45e8e4222ff14e + resource: repo://hub/documentation/operations/files/selfcert/docker-compose.yaml + - id: openwiki-source-c94755807a371458dd1724cb + resource: repo://hub/documentation/operations/files/selfcert/traefik.yaml + - id: openwiki-source-df359fe2b6d76dac2e1df0a5 + resource: repo://hub/documentation/operations/files/standard/docker-compose.yaml + - id: openwiki-source-b0873caaed9a7f3931985514 + resource: repo://hub/documentation/operations/self-hosted-k8s.rst + - id: openwiki-source-74e58bacc76582c2e6b8a46b + resource: repo://hub/documentation/operations/self-hosted.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-3feb3cb0150ced7c7dca37f9 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst + - id: openwiki-source-782bcbded2c4efbea17fb497 + resource: repo://hub/features/automatic-reprocessing.rst + - id: openwiki-source-0ad01ca73409795763a8fc50 + resource: repo://hub/features/bring-your-own-key.rst + - id: openwiki-source-b16009034f286ce228a41a35 + resource: repo://hub/features/compaction-feature.rst + - id: openwiki-source-c4f45d3a0f3643170205d462 + resource: repo://hub/features/dependency-tracking.rst + - id: openwiki-source-d496de71635dcd7d5827ad5d + resource: repo://hub/features/durable-data.rst + - id: openwiki-source-3b18059c0de46330cdb99d29 + resource: repo://hub/features/network-policy.rst + - id: openwiki-source-b8c1aa2cd0b984f516a8bc50 + resource: repo://hub/features/software-channels.rst + - id: openwiki-source-cba998551ab4133c8eef25c8 + resource: repo://hub/features/vpn.rst + - id: openwiki-source-abbaf1a032635daa7f6e9355 + resource: repo://hub/idempotency.rst + - id: openwiki-source-5061e0804c08ee434d45bc56 + resource: repo://hub/roadmap.rst + - id: openwiki-source-d0a16f79e90cff0f5bcc9290 + resource: repo://hub/swagger_portal.yaml + - id: openwiki-source-c7a64279defb397411144f15 + resource: repo://pricing.rst +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Deployment variants, backups, compaction, and durable data + +Sesam offers hosted and self-hosted services. **A subscription plan, its actual provisioner, and its backup policy are separate operational facts.** Do not infer a recovery guarantee or a deployment architecture from a plan name alone: the architecture overview, migration history, and roadmap do not all describe the same deployment generation. + +## Deployment and ownership boundaries + +| Variant | Documented scope and responsibilities | +| --- | --- | +| Hosted developer | A cloud-only, restricted environment for one developer or CI. Developer and Developer Pro have no backup, VPN, or SLA support and cannot host test, staging, or production environments. | +| Hosted production/test | Pricing documents automated backup and support for SLA and VPN, with geo-replicated backup included in cloud environments. It lists Single, Flexi, and Multi compute plans; Single is limited to four engines, and Flexi is recommended for scalable production workloads. | +| Single-machine service | The architecture overview associates Developer and Single compute with one VM. A host agent supervises/upgrades the containerized service components. The single-machine self-hosted installation guide is the documented non-cloud entrypoint. | +| Clustered service | The overview associates Multi compute with a Kubernetes service that can scale across machines. API aggregation, topology/configuration storage, pipe provisioning, and pipe execution are separate roles. Later migration documentation describes clustered provisioning beyond Multi compute. | +| Self-hosted Kubernetes | There is a **draft, subject-to-change** guide, not a complete standalone installation recipe. Licenses, secrets, and chart installation require Sesam support assistance. Confirm support status before treating it as a supported production deployment. | + +Sources: [pricing](../../pricing.rst), [architecture overview](../../hub/documentation/operations/behind-the-scenes.rst), [single-machine guide](../../hub/documentation/operations/self-hosted.rst), [draft Kubernetes guide](../../hub/documentation/operations/self-hosted-k8s.rst). + +### Documented runtime topology + +```mermaid +flowchart TD + Client["API clients"] + subgraph Single["Single-machine service"] + ProxyS["Reverse proxy: TLS and routing"] + NodeS["Node: service API and pipes"] + AgentS["Host agent: supervision and upgrades"] + MicroS["User microservices: Docker containers"] + DiskS["Managed network disks"] + TeleS["Log shipper and metrics agent"] + ProxyS --> NodeS + NodeS --> DiskS + AgentS -.-> ProxyS + AgentS -.-> NodeS + end + subgraph Cluster["Clustered Kubernetes service"] + ProxyC["Reverse proxy: TLS and routing"] + Agg["Aggregator: service API"] + Store["Storage node: configuration and topology"] + Prov["Provisioner: Kubernetes operator"] + Nodes["Nodes: one or more pipes each"] + MicroC["User microservices: Kubernetes deployments"] + DiskC["Local NVMe and/or managed network disks"] + TeleC["Log shipper and metrics agent"] + ProxyC --> Agg + Prov -->|provisions| Nodes + Nodes --> DiskC + end + Client -->|HTTPS 443| ProxyS + Client -->|HTTPS 443| ProxyC + TeleS --> Sesam["Sesam monitoring and operations"] + TeleC --> Sesam +``` +*The overview's two service layouts, showing only documented routing, supervision, provisioning, storage, and telemetry relationships; it does not specify the aggregator's internal RPC path.* + +Hosted software is distributed as OCI/Docker images from a private Docker Hub repository. The overview describes Azure infrastructure provisioned with Terraform. In the single-machine layout, subscriptions have individual resource groups in a shared Azure subscription and store data on managed network disks. In the clustered layout, provisioning uses one Azure subscription per customer, with local NVMe and/or managed network disks. Each has its own Azure Network Security Group. Subscription groups share a common network; a clustered group sits in its own Azure subscription. + +Both layouts include a port-443 TLS-terminating reverse proxy, log shipping, metrics shipping, and user microservices. The overview documents automatic Let's Encrypt certificates for both proxies, with operator-provided certificates also possible in the single-machine layout. The single-machine node owns the service API; the cluster's aggregator owns that API, its storage node holds configuration/provisioner topology, and its Kubernetes operator provisions processing pipes. User microservices run as individual Docker containers or Kubernetes deployments respectively. The overview and the supplied self-hosted Compose examples describe different update mechanisms: a host agent versus Watchtower. Do not assume they are the same setup. + +Sesam persists data in **RocksDB**, using **MessagePack** and RocksDB's default compression. This physical persistence is distinct from retained dataset history, backup copies, or opting a pipe into high-durability storage. See [Hub model and boundaries](../architecture/hub-model-and-boundaries.md) for the logical model and [monitoring and troubleshooting](monitoring-and-troubleshooting.md) for telemetry responsibilities. + +Source: [Behind the scenes](../../hub/documentation/operations/behind-the-scenes.rst). + +### Conflicts and version-sensitive instructions + +These are documentation differences to resolve with the actual subscription and [Sesam support](https://support.sesam.io/), not gaps to fill with guessed configuration. + +| Issue | Evidence and safe interpretation | +| --- | --- | +| Region versus geo-replication | The [overview](../../hub/documentation/operations/behind-the-scenes.rst) names North Europe (Dublin, Ireland) and says data never leaves that region. Its own backup sections describe geo-redundancy, while [pricing](../../pricing.rst) and [BYOK](../../hub/features/bring-your-own-key.rst) describe geo-replicated backup storage. This is an unresolved scope tension, not evidence of a specific secondary region. Do not extend the region statement into an all-copies residency guarantee. Confirm primary and backup locations. | +| BYOK support and cost | The overview says BYOK is not supported. The focused [BYOK feature](../../hub/features/bring-your-own-key.rst) instead documents opt-in support for **new single subscriptions**, not multi subscriptions, through support. It is badged free, but the [portal API schema](../../hub/swagger_portal.yaml) says enabling `byok` incurs additional costs. Confirm eligibility and charging rather than promising either universal support or zero cost. | +| Plan name versus provisioner | The overview maps Developer/Single to one machine and Multi to a cluster. The [2022-02-11 changelog](../../hub/changelog.rst) describes migration and checking `Subscription` > `Basics`: `version 1` is single-machine, `version 2` is clustered, and self-hosted is labeled `self-hosted`. The 2022-03-24 entry says portal-created subscriptions now use clustered architecture; the [roadmap](../../hub/roadmap.rst) says all cloud subscriptions now run on it. Treat the overview as a description of layouts, not a reliable current mapping from every plan to infrastructure. | +| Self-hosted cluster support | The roadmap still describes self-hosted clustering as planned and self-hosting as single-machine only, whereas the Kubernetes guide supplies a draft GKE setup. Neither makes that draft a complete supported deployment contract. | +| Compose and chart paths | The [self-hosted guide](../../hub/documentation/operations/self-hosted.rst) links `files/env`, which is absent from the documented files directory in this repository. It tells operators to use `traefik.yaml`, but the [selfcert Compose file](../../hub/documentation/operations/files/selfcert/docker-compose.yaml) mounts `traefik.yml`. Certificate names differ between the prose and [Traefik template](../../hub/documentation/operations/files/selfcert/traefik.yaml). The directory/symlink examples spell the base path concatenation differently. The draft Helm repository URL contains `https://https://github.com/sesam-io/helm-charts/`. Follow the authored references with support review; this page does not silently repair or present them as tested commands. | + +The focused BYOK reference says disks and their backup storage account use platform-managed keys by default. In its BYOK model, Sesam manages the key, while the customer can decide to revoke it; this generally requires that Sesam can reload the data afterwards. Revocation is therefore a data-availability decision, not merely a settings change. + +The migration changelog provides dated deployment evidence, not a new region or BYOK contract. Feature-specific lifecycle evidence is also important: durable data was added on **2022-03-25**, TTL deletes on **2024-11-27**, and retract on **2026-04-07**. The roadmap still has a planned history-removal item, but the current compaction reference and retract changelog document the implemented feature. + +## Software release channels + +Self-hosted subscriptions must run the latest image of their **chosen channel**, not necessarily the image tagged `latest`. + +| Channel | Authored intended use and rollout | +| --- | --- | +| `weekly-prod` | Production; weekly, two weeks behind `nightly`, most stable. | +| `weekly` | Staging; weekly, one week behind `nightly`. | +| `nightly` | Development; nightly. | +| `latest` | Expert development use only; every merged pull request. | + +Weekly/nightly upgrades are documented for 00–03 CET, with weekly upgrades on the night to Monday. Promotions may be withheld, so build dates indicate a minimum rather than maximum age. Security hotfixes need not wait for the scheduled window. **Downgrades are unsupported.** + +Sources: [software channels](../../hub/features/software-channels.rst), [self-hosted requirements](../../hub/documentation/operations/self-hosted.rst), [draft Kubernetes requirements](../../hub/documentation/operations/self-hosted-k8s.rst). + +## Self-hosted preparation and failure boundaries + +### Single machine + +The guide recommends at least **4 CPUs, 16 GB RAM, and a 350 GB fast-storage data partition**, adjusted for workload. It requires Docker and Ubuntu ≥ 20.04 or RHEL ≥ 8, preferring Ubuntu. Before installation, obtain a portal subscription, a valid license, support-provided private Docker repository login, and a `sesam` VM user. + +The authored data layout assumes `/srv/data`, with `/srv/data/sesam/node-00/data` linked to `/sesam/node-00/data`; a root-disk alternative is described. The license is saved in the data directory as `license.key`. **Without a valid license, pipes stop running.** The guide finishes by adding the node URL in the portal's network tab and uploading the license. Migration from an old installation explicitly starts with a backup, then stopping/removing containers and moving the store and license to the configured location. Review this migration boundary with support; it is not an instruction to perform it during documentation work. + +The supplied [standard Compose](../../hub/documentation/operations/files/standard/docker-compose.yaml) and [selfcert Compose](../../hub/documentation/operations/files/selfcert/docker-compose.yaml) describe Watchtower, Traefik, `sesam-node`, and Fluent Bit. Watchtower checks hourly and targets the node, Fluent Bit, and Traefik. Both node commands enforce licensing, enable engine-managed microservices, and select checkpoint backups under `/sesam/data/backup`. They mount the host data directory into `/sesam/data`, use external `sesam` and `microservices` networks, and route Traefik to the node's internal port 9042. These examples do **not** supply the host-agent/metrics-agent layout from the overview in the same form. + +### Kubernetes — draft only + +The [draft guide](../../hub/documentation/operations/self-hosted-k8s.rst) calls for Kubernetes ≥ 1.22 and one worker with at least **8 CPU cores and 32 GB RAM**. Its GKE example recommends a dedicated `n2-standard-8` node pool labeled `sesam.io/nodepool: primary`, client access via `kubectl`, namespace `sesam`, and a persistent volume claim. The sample requests **512Gi**, `ReadWriteOnce`, and storage class `standard`; that is the sample PVC, not a universal sizing guarantee. + +At the time of the authored guide, only **Azure Storage Accounts** are supported as the cluster backup backend, even for its GKE example. Helm manages the services, but the guide ends by requiring a license and various secrets and directing installation assistance to support. Do not substitute a PVC for a backup plan. + +### Firewall, TLS, and VPN + +For self-hosting, client access to the node API requires inbound **443**; it may be private-network or VPN access. Automatic HTTP-challenge certificate generation/renewal requires public inbound **80** from any source. With operator-provided or self-signed certificates, the guide says that port opening can be skipped, although the selfcert Compose example still publishes 80. + +Required self-hosted outbound HTTPS destinations are: + +- `*.docker.com`, `*.docker.io`: image pulls/updates; blocking them prevents self-update. +- `*.letsencrypt.org`: needed for managed certificates; blocking it prevents renewal. +- `*.sesam.io`, `*.sesam.cloud`: portal communication, log/metric shipping, and agent updates. Blocking them breaks portal retrieval, notifications, and billing-related telemetry. +- `files.pythonhosted.org`, `pypi.org`, `pypi.python.org`: Python dependencies used by the agent; blocking them prevents self-update. + +The guide treats the required outbound openings as necessary to operate under the terms of service. CDN addresses can change, so it recommends domain/wildcard-aware rules or a proxy rather than fixed IP assumptions. The hosted overview separately says cloud NSGs can expose only port 443; do not apply that statement to self-hosted certificate challenges. + +[Network policy](../../hub/features/network-policy.rst) can block public access or allowlisted addresses/ranges. It describes reverse-proxy allowlisting and custom per-pipe public/restricted rules in the new architecture, and says outgoing traffic is currently unrestricted. That is a product-policy statement, **not** permission to ignore self-hosted firewall dependencies. + +[VPN](../../hub/features/vpn.rst) is a paid IPSec feature, enabled through the portal's Products and VPN tabs; operators supply gateway, routed address spaces, and authentication details. Multi and Flexi support advanced highly available BGP/redundant connections and custom IPSec rules, arranged by support. Developer subscriptions do not support VPN. Keep credentials, private keys, licenses, and actual account configuration out of documentation; see [security and secrets](security-and-secrets.md). + +Sources: [self-hosted firewall requirements](../../hub/documentation/operations/self-hosted.rst), [hosted isolation/firewall](../../hub/documentation/operations/behind-the-scenes.rst). + +## Backup policy is subscription-scoped + +The following policies belong to the authored architecture sections. They are not defaults for every developer, self-hosted, Flexi, or migrated subscription. + +| Authored scope | Cadence, retention, and ownership | +| --- | --- | +| Single-machine `Local` backup | Once per 24 hours; seven daily checkpoints on local disk. | +| Sesam-hosted Single compute `Geo-redundant` | Daily Azure VM backup. Keeps the last backup, seven daily, four weekly, and four monthly backups. | +| Single-machine self-hosting | The owner is responsible for off-site copies of checkpoint directories or the VM. Local checkpoints alone are not off-site recovery. | +| Clustered service | Every 24 hours, with a geo-redundant copy to the Azure subscription's storage account at the same time. Keeps the last backup, seven daily, four weekly, and four monthly backups. | +| Developer / Developer Pro | No backup support under the pricing scope, regardless of general cloud-backup language elsewhere. | + +The overview says termination deletes subscription data and backups, but the Azure backups described in its single-machine section are retained **30 days after deletion**, as mandated by Azure. This exception is not a universal deletion delay for all stores or a promise of customer restoration access. + +Sources: [backup and termination sections](../../hub/documentation/operations/behind-the-scenes.rst), [subscription scope](../../pricing.rst). + +## Recovery replay and durable pipe data + +For the cloud-backup scenario described by [Durable Data](../../hub/features/durable-data.rst), the last 24 hours of writes can be lost during disaster recovery. Pull sources may be able to supply the lost data again; pushed HTTP endpoint input may not have an automatic resend path. Rewinding to a checkpoint also replays output: the documented invoice example restores a 10:00 backup after an invoice was sent at 12:00, causing that invoice to be sent again. **External side effects are not rolled back just because Sesam is restored.** + +```mermaid +flowchart TD + Restore["Restore last backup"] --> Rebuild["Rebuild and reprocess after checkpoint"] + Rebuild --> Pull["Pull source: lost input can be fetched again"] + Rebuild --> Push["Pushed input: automatic resend may be unavailable"] + Rebuild --> Send["Previously delivered output may be sent again"] + Send --> Target["Non-idempotent target: duplicate side effects"] +``` +*The durable-data guide's recovery risk model, not a universal recovery algorithm or exactly-once delivery guarantee.* + +`metadata.durable` is a pipe-level boolean, default **`false`**. Setting it to `true` places the pipe's **data and state** on high-durability disk; the guide also describes replicas as reducing loss risk. It recommends enabling it for pushed inbound pipes, non-idempotent endpoint pipes, and **both endpoint pipes and the share pipes that feed them**. It reduces risk rather than guaranteeing zero loss, replay-free recovery, or recovery of compacted history. + +Durable data is a paid feature; the focused guide says it increases durable pipes' data consumption **3×**. The roadmap says it is available on all cloud subscriptions, and the changelog records its introduction on 2022-03-25. Availability does not override developer subscriptions' lack of backups or establish self-hosted eligibility. Confirm subscription-specific costs and storage behavior with support. + +Restoring datasets can also make pipes out of sync. [Automatic reprocessing](../../hub/features/automatic-reprocessing.rst) can reset/rescan or sometimes rewind when enabled. Its default `reprocessing_policy` is `continue`, not `automatic`; recovery must not assume every pipe automatically resets. See [synchronization and state](../configuration/synchronization-and-state.md) and [bidirectional synchronization](../workflows/bidirectional-synchronization.md) for offset and external-state considerations. + +## Compaction, deletion, and permanent removal + +A dataset is an append-only immutable log. New or changed content is appended after comparison with the latest entity's content hash. Retention/compaction limits that log's growth; it is not the same operation as setting deletion state or retaining a backup. + +### Retention controls and dependency tracking + +The default policy keeps **two unique versions per entity**. Two versions are needed for reliable dependency tracking; fewer than two changes it to best effort and may miss reprocessable entities, especially hops involving a sink dataset. The reference suggests full or partial rescans as a countermeasure. + +Compaction cannot advance past the **lowest tracking offset** held by any pipe doing dependency tracking on that dataset, preserving the history those pipes need to stay correct. **Disabled pipes still hold back compaction.** For long-term disabling, the guide suggests removing the pipe or commenting out its hops; assess the effect on the dataflow before doing either. + +| Pipe property | Documented default and behavior | +| --- | --- | +| `compaction.automatic` | `true`: eligible for automatic compaction. With sink compaction disabled, automatic dataset compaction is documented once per 24 hours. | +| `compaction.sink` | `true`: incremental dataset compaction as the sink writes. Automatic compaction does not run on that dataset itself, but index compaction is scheduled and requires no dataset lock. | +| `compaction.keep_versions` | `2`; must be ≥ `0`. Setting `0` requires a time threshold; values below `2` weaken dependency tracking. | +| `compaction.time_threshold_hours` | `null`: optional age threshold for compaction candidates. | +| `compaction.time_threshold_hours_pump` | `720`: pump execution datasets are always time-trimmed; 30 days is the minimum. | +| `compaction.growth_threshold` | `1.0`, the minimum/default growth factor for automatically scheduled compaction; new writes make it eligible to run. | +| `compaction.compaction_interval` | `0`: sink compaction each pipe run. A positive value requires that many seconds since the last sink compaction. | +| `compaction.ttl_deletes_hours` | `null`: opt-in age threshold for removing all versions of a deleted entity. | +| `compaction.retract` | `false`: opt-in honoring of `$retract: true` in output entities. | +| `compaction.ttl_deletes_timeout_seconds`, `compaction.retract_timeout_seconds` | Both `60`: limit time spent per pipe run; unfinished work resumes from where it stopped on the next run. | + +Source: [Compaction](../../hub/features/compaction-feature.rst). Dependency tracking discovers transform dependencies such as DTL hops and reprocesses affected entities; the [dependency-tracking reference](../../hub/features/dependency-tracking.rst) restricts that mechanism to `dataset` sources. + +### Three different meanings of removal + +| Operation | Effect on current state and history | +| --- | --- | +| Logical deletion | `_deleted: true` means the entity is deleted. It is still represented in the log under retention rules. Dataset-sink deletion tracking defaults to `true`: after a full run, previously existing entities not seen in that run are deleted. This is not physical erasure of their history. | +| Ordinary retention compaction | Prunes eligible versions under count/age policy and tracking-offset constraints. A `_previous` reference can point to a version already reclaimed by compaction. | +| TTL delete compaction | When the latest version has `_deleted: true` and exceeds the configured TTL, **all versions**, including the deletion marker, are removed from the database. The 2024-11-27 changelog says recovery then requires a backup that still contains them. No such backup is implied for a developer subscription. | +| Retract | With `compaction.retract: true`, output `$retract: true` permanently removes **earlier versions in that pipe's sink dataset**, retaining the current version. Deletion state is unchanged, the operation is idempotent, and it overrides `keep_versions` for that entity. It is irreversible; the feature reference says pruned versions cannot be recovered. | + +Retract is **not** a global purge: upstream datasets and external consumers are unchanged. `$retract` propagates as an ordinary field but can be dropped by merge sources or `emit_children`. Every downstream pipe expected to honor it must enable `compaction.retract` and explicitly include `$retract` in its output. Do not read retraction as deletion of backup copies, external side effects, or all downstream history. + +Sources: [entity data model](../../hub/documentation/data-management/entity-data-model.rst), [dataset sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst), [compaction/retract](../../hub/features/compaction-feature.rst), [TTL and retract changelog](../../hub/changelog.rst). See [entities, datasets, and identifiers](../concepts/entities-datasets-and-identifiers.md) for entity version semantics. + +## Focused operational checks + +Before deployment or a storage-policy change, review the actual provisioner, chosen channel, license validity, data mounts/PVC, TLS renewal path, required egress, backup policy/off-site owner, and the pushed-input/non-idempotent-output paths. For unexpected disk growth, inspect dependency-tracking offsets and disabled pipes before lowering retained versions. + +For configuration regression checks, the [local testing guide](../../hub/documentation/operations/testing-locally.rst) documents using the Sesam client to drain input queues, keeping output pipes disabled or unable to contact real targets, and comparing endpoint output with files in `expected/`. It uses paired `.json` and `.test.json` files. This validates configuration outputs, not Azure backup retention, disk durability, or restoration safety. + +Recommended additional checks in an isolated, supported environment are: exercise hop-triggered changes with the proposed version policy; verify the latest-version/TTL boundary; verify retract retains the current version and reaches only explicitly configured downstream pipes; and review replay handling against a non-idempotent target before approving a restore plan. These are operator review targets derived from the documented semantics, not claims that this repository contains an infrastructure recovery test suite. No deployment, migration, compaction, or restore commands were executed to produce this page. + +For chronology and policy context, see [history and policies](../references/history-and-policies.md). diff --git a/openwiki/operations/index.md b/openwiki/operations/index.md new file mode 100644 index 00000000000..2cd8f6faf82 --- /dev/null +++ b/openwiki/operations/index.md @@ -0,0 +1,5 @@ +# Files + +- [Deployment variants, backups, compaction, and durable data](deployment-and-durability.md) - Documented Sesam service topologies and the division of deployment, storage, backup, and recovery responsibilities. Explains durable pipe data, compaction, deletion history, and deployment-documentation conflicts that require subscription-specific confirmation. +- [Metrics, execution logs, lineage, and failure diagnosis](monitoring-and-troubleshooting.md) - A read-first workflow for diagnosing stalled Sesam pipes, source and target failures, dependency problems, incorrect output, and infrastructure faults. Explains Prometheus metrics, internal execution evidence, search and property lineage, and the risks of corrective operations. +- [Authorization, secret lifecycle, and network security](security-and-secrets.md) - Explains subscription roles, node ACL enforcement, runtime pipe identity, write-only secrets, and outbound authentication. Covers configuration replacement risks, TLS verification, hosted network controls, VPN, encryption-at-rest limits, and security-focused validation. diff --git a/openwiki/operations/monitoring-and-troubleshooting.md b/openwiki/operations/monitoring-and-troubleshooting.md new file mode 100644 index 00000000000..3d4ffb1388a --- /dev/null +++ b/openwiki/operations/monitoring-and-troubleshooting.md @@ -0,0 +1,419 @@ +--- +type: operational guide +title: Metrics, execution logs, lineage, and failure diagnosis +description: A read-first workflow for diagnosing stalled Sesam pipes, source and target failures, dependency problems, incorrect output, and infrastructure faults. Explains Prometheus metrics, internal execution evidence, search and property lineage, and the risks of corrective operations. +tags: [operations, monitoring, troubleshooting, metrics, lineage, synchronization] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-e389b2c6e31446ccc4126746 + resource: repo://hub/api.rst + - id: openwiki-source-23abea229a889d8e8f0ae64f + resource: repo://hub/bidirectional-synchronization.rst + - id: openwiki-source-4bbe4e83d74f3fe902420d24 + resource: repo://hub/changelog.rst + - id: openwiki-source-80eedbbd35c9d596a2d38fe2 + resource: repo://hub/documentation/operations/behind-the-scenes.rst + - id: openwiki-source-9716504d4d8cee95ea2fa440 + resource: repo://hub/documentation/operations/low-level-debugging.rst + - id: openwiki-source-548d0921be659fba11227af8 + resource: repo://hub/documentation/operations/metrics.rst + - id: openwiki-source-77b000efded2deb34b873d22 + resource: repo://hub/documentation/operations/pump-execution.rst + - id: openwiki-source-74e58bacc76582c2e6b8a46b + resource: repo://hub/documentation/operations/self-hosted.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-92b30a880e4f783e38f1db9c + resource: repo://hub/documentation/operations/troubleshooting.rst + - id: openwiki-source-6a5de2a911806771b5cfd05a + resource: repo://hub/documentation/service-configuration/configuration-metadata.rst + - id: openwiki-source-811b94c0236de6dfe3bad74f + resource: repo://hub/documentation/service-configuration/pipes/configuration-pump.rst + - id: openwiki-source-aaf268a57b21ad7662b6f5da + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-sql.rst + - id: openwiki-source-c32b360d8e1b5891f21864d1 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst + - id: openwiki-source-048a533187623407575421a0 + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-emit-children.rst + - id: openwiki-source-9ab42454ff803b278c631c1f + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-http.rst + - id: openwiki-source-89e59f155188034abce5bfff + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst + - id: openwiki-source-e3ab6d41e79b5df3ed8f521c + resource: repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst + - id: openwiki-source-4b9a915a059dfbaf16712b15 + resource: repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst + - id: openwiki-source-c27c69f00f9a3913135cc0c4 + resource: repo://hub/dtl/caveats.rst + - id: openwiki-source-e222c4aa209056e7340716af + resource: repo://hub/dtl/dtl-functions-hops.rst + - id: openwiki-source-b080c011b8382aaeafbbc37b + resource: repo://hub/dtl/dtl-functions-transforms.rst + - id: openwiki-source-133c24a94ca8f7beb23e7ab4 + resource: repo://hub/dtl/joins.rst + - id: openwiki-source-37c7f6d871629d1cd07528c6 + resource: repo://hub/features/circuit-breakers.rst + - id: openwiki-source-b16009034f286ce228a41a35 + resource: repo://hub/features/compaction-feature.rst + - id: openwiki-source-444c59bcbf1ae7540ab05a9d + resource: repo://hub/features/completeness-feature.rst + - id: openwiki-source-c4f45d3a0f3643170205d462 + resource: repo://hub/features/dependency-tracking.rst + - id: openwiki-source-b7fe0a062d08b595ab024630 + resource: repo://hub/features/integrated-search.rst + - id: openwiki-source-6903130fd4e1c31a5b69b78a + resource: repo://hub/features/metrics-api.rst + - id: openwiki-source-cdddf93a1e40c7459b0e0f3b + resource: repo://hub/features/property-lineage.rst + - id: openwiki-source-abbaf1a032635daa7f6e9355 + resource: repo://hub/idempotency.rst + - id: openwiki-source-839eae38482865fc4eda4486 + resource: repo://hub/sesam-client.rst + - id: openwiki-source-c92a884f90ca8ac7f160c79a + resource: repo://hub/swagger_public.yaml +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Metrics, execution logs, lineage, and failure diagnosis + +Diagnose **where progress stopped and what evidence explains it** before resetting offsets, increasing retries, or replaying data. A pump reads entities from a source, moves them through the pipe to its sink, owns failed-write retries, and records execution history. A downstream symptom may therefore originate in a source system, a transform or dependency, the target, or the hosting infrastructure—not in the pipe where the queue is visible. + +> **Lifecycle warning:** The [2025-04-02 changelog](../../hub/changelog.rst) announced Notifications end-of-life on **June 30th 2025**, with **Metrics** as its replacement. Older pages still describe notification rules, a notifications/insights bundle, activation menus, and pricing. Treat those as historical guidance, not a promise of current notification delivery, product availability, or price. Confirm the subscription's current products and access in the portal or with support; build monitoring around the supported metrics exposure rather than legacy Notifications. + +> **Internal evidence, not an application API:** `system:pump_execution:` is the pump execution dataset. Its entity IDs and structure are explicitly **non-public and subject to change**. Use it for investigation, not as a stable integration contract. Logs can contain complete failed entities and user metadata; never paste raw log entities, credentials, tokens, or HTTP payloads into tickets or this wiki. + +## Read-first incident workflow + +1. **Fix the scope:** record subscription, affected pipe and system IDs, observed time window in UTC, configuration revision, and the expected versus observed behavior. Preserve a sanitized evidence summary before changing state. +2. **Inspect configuration and runtime:** look at source, transform chain, sink, pump mode/schedule, enablement, completeness inputs, retry settings, and the dependency graph. Read-only API entrypoints include `GET /api/pipes/{pipe_id}/config`, `GET /api/pipes/{pipe_id}`, and `GET /api/pipes/{pipe_id}/pump`. Pipe information can select `config`, `runtime`, `storage`, and `graph` fields. The pump endpoint's **POST** operations change state; they are not inspection commands. +3. **Compare observations over time:** use queue gauges, run success, last-completion and scheduled timestamps, retry counts, and storage usage. A single queue snapshot or missing metric does not establish failure. +4. **Correlate execution evidence:** inspect the latest logged run and its errors, then follow the earliest failed or incomplete upstream dependency rather than restarting every downstream pipe. +5. **Trace data only when needed:** compare stored input and output for a small, authorized sample; navigate search and property lineage to find the producer of an incorrect property. A preview is not automatically read-only when external transforms are involved. +6. **Choose the narrowest correction:** repair connectivity, authentication, data shape, join criteria, or target ordering first. Review replay/idempotency and deletion effects before performing any recovery operation. Verify progress and output after the change. + +```mermaid +flowchart TD + Scope["Record symptom and time window"] --> Inspect["Read configuration, metrics and execution log"] + Inspect --> Reachable{"API reachable over TLS?"} + Reachable -->|No| Infra["Inspect proxy, certificates and host health"] + Reachable -->|Yes| Ready{"Valid, enabled and scheduled?"} + Ready -->|No| Config["Explain configuration and pump metric gaps"] + Ready -->|Yes| Gate{"Breaker or upstream readiness gate?"} + Gate -->|Yes| Upstream["Trace failed or incomplete dependencies"] + Gate -->|No| ErrorKind{"What does execution evidence show?"} + ErrorKind -->|Read error| Source["Inspect source connection and authentication"] + ErrorKind -->|Write error| Target["Inspect target feedback, batches and retries"] + ErrorKind -->|No error explains symptom| Output{"Incorrect output or high cardinality?"} + Output -->|Yes| Data["Inspect joins, search and property lineage"] + Output -->|No| Slow["Inspect stage timings and thread evidence"] + Infra --> Review["Review prerequisites and impact before correction"] + Config --> Review + Upstream --> Review + Source --> Review + Target --> Review + Data --> Review + Slow --> Review + Review --> Verify["Verify progress, output and target feedback"] +``` +*Diagnostic decision flow based on pump modes, readiness/completeness, execution error types, and the documented low-level evidence tools; it is an operator workflow, not an automatic recovery algorithm.* + +### Symptom routing + +| Symptom | First evidence to collect | Do not jump straight to | +| --- | --- | --- | +| Growing queues, missing entities, stalled completeness | Source/tracking/replica queues, mode/schedule, upstream completeness and population, breaker status | Resetting the downstream pipe or bypassing completeness | +| Read or authentication errors | `read-error`, original source error, connected system configuration, token expiry metadata | Increasing write retries | +| Failed batches or exhausted retries | `write-error` state, target feedback, effective retry settings, dead-letter counts | Reposting every failed entity | +| Duplicates or repeated bidirectional changes | Target identifiers, insert feedback/origin mapping, before/after values | Blindly replaying inserts or merging all matches | +| Dependency limit failures or excessive hops | Tracking queue, hops cardinality/trace, join keys and inverse traversal | Raising memory thresholds | +| Incorrect merge or child output | Source versions, equality/identity rules, lineage, child IDs and deletion history | Deleting global datasets | +| Disk pressure or slow/frozen node | Pipe bytes and log/index counts, tracking offsets, host telemetry, recent stacktraces | Forcing compaction or leaving global profiling on | +| Certificate failures | Which TLS connection failed, proxy certificate/renewal path, outbound system verification settings | Disabling certificate verification | + +## Metrics: endpoint, units, and blind spots + +The documented endpoint is **`/api/metrics`**, exposing Prometheus-compatible metrics for scraping into Prometheus and dashboards such as Grafana. Scraping requires a JWT with the **`Admin` role**. This token is separate from the credentials used to authenticate a pipe to an external system. + +In the following source example, `SESAM_API_URL` is the service API base URL **including `/api`**, and `JWT` is supplied securely in the environment—not copied into documentation: + +```sh +curl -s -H "Authorization: bearer $JWT" "$SESAM_API_URL/metrics" +``` + +Do not confuse customer scraping with infrastructure telemetry shipping. The deployment documentation describes a metrics agent pushing Prometheus-compatible memory, disk, and resource telemetry to Sesam, alongside log shipping. Those signals help distinguish resource or service faults from entity failures; they are not all named in the customer Metrics API table. + +That reference lists shipped service/error logs, health/status, configuration without secrets or embedded data, and kernel logs. Its conditional pipe-execution shipment description excludes the embedded entities that caused failures. The associated notification-rule explanation is historical; shipment filtering is not a guarantee that local logs are safe to share. + +### Service and pipe signals + +| Metric | Type and unit/value | Interpretation | +| --- | --- | --- | +| `sesam_health` | Enum: `healthy`, `unhealthy`, `unknown` | Whether the Sesam API is up | +| `sesam_backup_health` | Same enum | Whether there are failed backups | +| `sesam_service_restarts` | Gauge, count | Restarts **since last upgrade**, not a lifetime total | +| `sesam_pipe_enabled` | Gauge: `1.0` enabled, `0.0` disabled | Check before diagnosing a stopped pump | +| `sesam_pipe_config` | Gauge: `1.0` valid, `0.0` invalid | Labels include `config_group` and `leaf` (`1` for no downstream pipes) | +| `sesam_pipe_usage` | Gauge, **bytes** | Storage used by the pipe | +| `sesam_pipe_queue_source` | Gauge, entity count | Source entities queued | +| `sesam_pipe_queue_tracking` | Gauge, entity count | Untracked entities queued | +| `sesam_pipe_queue_replicas` | Gauge, entity count | Entities in replica queues | +| `sesam_pipe_circuit_breaker_tripped` | Gauge: `1.0` tripped, `0.0` otherwise | A tripped breaker prevents running | + +For either prefix `sesam_pipe_sink_dataset_count_` or `sesam_pipe_dead_letter_dataset_count_`, the following gauge suffixes distinguish current IDs from log versions: + +| Suffix | Counted item | +| --- | --- | +| `index_exists` | Non-deleted entity IDs | +| `index_deleted` | Deleted entity IDs | +| `log_exists` | Non-deleted entities in the log | +| `log_deleted` | Deleted entities in the log | + +Thus `sesam_pipe_dead_letter_dataset_count_index_exists` measures current non-deleted IDs, whereas `sesam_pipe_dead_letter_dataset_count_log_exists` measures log entries. Do not equate a growing log with an equal number of newly failing business objects. + +### Pump signals + +**Pump metrics are not exposed for disabled pipes or pipes with `pump.mode="manual"` or `pump.mode="off"`.** Absence is not a zero or proof of a healthy run. `manual` pumps are API-operated, not scheduled; `off` pumps cannot start at all. Runtime scheduler disablement is another reason to inspect configuration rather than infer activity from missing runs. + +| Metric | Type and unit/value | +| --- | --- | +| `sesam_pump_total_time` | Gauge, runtime in **seconds**; `0.0` if never run | +| `sesam_pump_successful` | Gauge: `1.0` last run successful, `-1.0` unsuccessful, `0.0` never run | +| `sesam_pump_started_total`, `sesam_pump_completed_total` | Counters of starts/completions; no-op runs are currently not counted | +| `sesam_pump_failed_total` | Counter of non-interrupted failure events | +| `sesam_pump_interrupted_total` | Counter of interrupted failure events | +| `sesam_pump_entities_seen_total` | Counter of entities seen | +| `sesam_pump_entities_changes_total` | Counter of entities changed | +| `sesam_pump_entities_retryable` | Gauge, entity count in the retry queue | +| `sesam_pump_entities_compacted_total` | Counter of entities compacted away | +| `sesam_pump_entities_deletion_tracked_total` | Counter of deletion-tracked entities | +| `sesam_pump_scrape_time` | Gauge, scrape time in **seconds since epoch** | +| `sesam_pump_last_completed_time` | Gauge, last completion **or failure** time in **seconds since epoch** | +| `sesam_pump_scheduled_time` | Gauge, next scheduled run in **seconds since epoch** | +| `sesam_pump_previous_scheduled_time` | Gauge, previous scheduled run in **seconds since epoch** | + +Use counter changes/rates over a time window for activity, gauges for present state, and timestamps relative to the scrape time and configured schedule for freshness. A recent `sesam_pump_last_completed_time` alone does not mean success. The Metrics documentation also describes counter pairs suffixed `_counter` and `_created`; check the actual exposition and its type metadata rather than inventing a series name from prose. + +[Metrics reference](../../hub/features/metrics-api.rst) · [Infrastructure monitoring boundary](../../hub/documentation/operations/behind-the-scenes.rst) + +## Execution evidence: correlate a run, not just the latest entity + +Use the pipe's execution log view or `GET /api/pipes/{pipe_id}/log`. The API reference provides `limit`, `reverse`, and `history`: reading in reverse starts at the newest end, and `history=true` includes replaced versions. A bounded history read is useful because run-event IDs such as `pump-started` repeat; a latest-entity view is not a complete timeline. + +**Keep the non-public/changeable status of `system:pump_execution:` in mind even when using this read endpoint.** A logged run starts with `pump-started`, then records successful completion or failure and any error evidence. Logging policy matters: `log_events_noop_runs=false` suppresses no-op runs by default; `log_events_noop_runs_changes_only=true` judges no-op by sink changes even when source entities were produced. Errors and retries always imply execution logging. The legacy name `notification_granularity` is documented as forcing periodic no-op logging; it does not establish current Notifications availability. + +| Event | Diagnostic meaning and useful fields | +| --- | --- | +| `pump-started` | Written before processing. `start_time`, `sync_type` (`full`, `partial`, `incremental`), pipe/pump definition, and initiating user if available | +| `pump-completed` | Run completed successfully. Correlate `start_time`, `end_time`, `total_time` in seconds, `pump_started_location`, `entities_succeeded`, `entities_failed`, `retry_entities_exist`, and `next_interval` in seconds | +| `pump-failed` | Termination due to failure. In addition to run metadata/counts, inspect `reason_why_stopped`, `traceback`, `original_traceback`, `original_error_message`, `node_build_info`, and `exception_entity` if present | +| `read-error` | `error_code=0`: unable to establish source communication. `error_code=1`: error reading a particular entity. Inspect `event_time` and original source error | +| `write-error` | `error_code=0`: unable to establish target communication. `error_code=1`: error writing a particular entity. Inspect `retry_attempts`, `retryable`, `resolved`, `dead`, and original sink error | +| `pump-enabled`, `pump-disabled` | Administrative enablement evidence; the API supports persisting a disable comment | +| `pump-offset-set` | Explicit offset set/reset, including original/new offset and `is_reset` | +| `entities-reposted` | User repost evidence containing `_id`, `_deleted`, and `_updated` for reposted entities | +| `pump-discard-retries` | Evidence of intentionally abandoning pending retries | + +For custom authentication or OAuth2 on connected systems, log entities may also contain **`tokens` expiry metadata**. It exposes expiry dates useful for diagnosing token refresh configuration, not a reason to export token material. + +A `write-error` embeds the failed entity; a `pump-failed` can embed the exception entity. Inspect these only within authorized tooling. A newer version successfully written to the sink can resolve an old failure, mark it non-retryable, and optionally record a different `resolved_entity`. A `dead=true` failure has been given up on and is not retried again until a new source version comes along; with a configured dead-letter dataset it is written there. `retry_entities_exist` only tells you that retryable entities were logged during the run—not that the target's business state is correct. + +### Per-run metrics that explain cost and amplification + +The log's `metrics` property adds evidence beyond the Prometheus summary: + +- `entities.entities_last_run`: source entities seen and processed. +- `entities.changes_last_run`: changed dataset entities or entities written to an external sink. Dataset change tracking means this can differ from the number sent to the sink. +- `entities.read_errors_last_run`, `entities.write_errors_last_run`: run error counts. +- `entities.source_time`, `entities.transform_time`, `entities.sink_time`: **seconds** in each stage. Optimizations can make these timings misleading; use them as leads rather than exact additive accounting. +- `hops.max-cardinality` and `hops.max-cardinality-last-run`: maximum entities retrieved through hops for one source entity in the run; `hops.total-rows-last-run`: total traversal rows, potentially containing multiple bound entities per row. +- `memory.batch-max-mem-size`, `memory.total-peak`: maximum batch and worker-thread memory footprints. The execution reference does not specify units for these fields; do not silently equate them with `sesam_pipe_usage` bytes. + +[Execution dataset reference](../../hub/documentation/operations/pump-execution.rst) · [Pump logging/retry policy](../../hub/documentation/service-configuration/pipes/configuration-pump.rst) · [Read and mutation API contracts](../../hub/swagger_public.yaml) + +## Queues, missing entities, and stalled completeness + +**Inspect:** compare source, tracking, and replica queues over several expected run intervals. Check valid configuration, enabled state, `pump.mode`, scheduler disablement, `schedule_interval`/`cron_expression`, and upstream failures. Scheduling and signalling are separate: signals are best-effort and not persisted, so retain a scheduled fallback. Cron and long intervals greater than an hour have persisted scheduled start times; a missed run is attempted when the service can run it again. + +**Explain the gate:** completeness deliberately holds back newer source entities until dependent processing has completed. A successful pipe run propagates the smallest completeness timestamp from source and related datasets into its sink. Dataset-source `completeness=true` uses the source timestamp; a list uses the smallest timestamp of the listed datasets. `initial_completeness` only requires the specified datasets to have a completeness value, not a particular timestamp. Inspect `include_completeness`, `exclude_completeness`, and `require_populated_input` as well as the dependency graph. Recover the upstream producer whose readiness or timestamp is holding the flow back. + +A tripped dataset-sink circuit breaker is another deliberate stop: it applies only once the sink is populated and trips on a configured per-run write limit. It prevents further runs, compaction, and reposts. Determine whether the change surge is legitimate before choosing rollback or commit. + +For incremental SQL or similar ingestion, a missing row can be a source/since-window problem rather than a failed run. The troubleshooting guidance recommends partial rescans for incremental connect pipes. `partial_rescan_run_count` requires `partial_rescan_delta`; the delta shifts the since value backward, subtracting an integer delta or seconds from a timestamp. Review the source's actual incremental semantics before setting a window. + +**Safe correction boundary:** fixing an upstream failure is preferable to removing completeness checks. Full rescans combined with completeness filtering can hide recent entities from deletion tracking and cause their sink IDs to be deleted. Do not reset/rescan until that interaction and the sink's `deletion_tracking` policy have been reviewed. See [Synchronization and state](../configuration/synchronization-and-state.md). + +[Completeness](../../hub/features/completeness-feature.rst) · [Scheduling/signalling configuration](../../hub/documentation/service-configuration/configuration-metadata.rst) · [Circuit breakers](../../hub/features/circuit-breakers.rst) + +## Read failures and authentication errors + +**Inspect:** start with `read-error.error_code`, `original_error_message`, and `original_traceback`; distinguish inability to connect from entity-specific decoding/query failures. Trace the pipe's source to its system definition: URL pattern/base URL, selected authentication method, secret references, proxy, and connection/read timeouts. For URL systems, `jwt_token` overwrites a supplied `Authorization` header, so inspecting only custom headers can miss the effective authentication choice. + +Compare the log's `tokens` expiry dates with the failure window and the configured refresh policy. Custom authentication's `expires_in_expression` must yield **seconds**; `expires_at_expression` must yield a date and takes priority when both yield usable expiry information. The changelog specifically introduced expiry evidence to expose misconfigured expressions producing the wrong date. Do not confuse external-system token expiry with the Admin JWT needed for a metrics scrape. + +**Correct only after classification:** repair the endpoint, secret reference, authentication selection, or expiry conversion first. `max_read_retries` defaults to `0` (log immediately rather than retry), and `read_retry_delay` defaults to zero seconds. More immediate retries can exhaust quickly without fixing a persistent authentication error. Where configured, HTTP-status `retry_strategy` supplies retry defaults; explicit pump properties take precedence. Check the effective policy before changing it. + +For a microservice failure, also inspect its exception handling and memory/resource evidence. An HTTP transform POSTs JSON arrays, expects a JSON-array response, and raises on non-2xx status; do not diagnose such a failure as a sink write simply because the pipe eventually failed. + +[URL system configuration](../../hub/documentation/service-configuration/systems/configuration-systems-url.rst) · [Custom authentication](../../hub/documentation/service-configuration/systems/configuration-systems-rest.rst) · [HTTP transform contract](../../hub/documentation/service-configuration/pipes/configuration-transforms-http.rst) · [Security and secrets](security-and-secrets.md) + +## Failed batches, retry exhaustion, and target failures + +**Inspect:** correlate write errors with target result/status/feedback, not just pump success. The operational guidance recommends storing target feedback in a dataset and separating **system failures** from **entity failures**. Check non-idempotent inserts/updates, missing parent prerequisites, dependent deletes, already-deleted objects, invalid values, and payload shape. Monitor and handle dead-letter datasets explicitly; configuring one is not error handling by itself. + +### Retry policy is layered + +| Setting | Documented default | Failure semantics | +| --- | --- | --- | +| `max_consecutive_write_errors` | `1` | Terminate the current run after the first consecutive write error | +| `write_retry_delay` | `0` seconds | Delay for retrying write errors when the consecutive-error allowance is greater than one | +| `max_write_errors_in_retry_dataset` | `0` | Effectively disables failed-write retries; when enabled, bounds retryable, non-dead failures in execution history and can terminate the run before other limits | +| `max_retries_per_entity` | `5` | Give up on a failing entity after its permitted retries; optionally send to the dead-letter dataset | +| `batch_retries` | `3` | Maximum batch-write retries, only for batching-capable sinks | +| `fallback_to_single_entities_on_batch_fail` | `true` | Try individual entities after a batch failure; useful for isolating the offender but potentially expensive | + +A dead-letter dataset is unique per pipe and requires non-zero `max_write_errors_in_retry_dataset` plus exhausted per-entity retries. The documentation restricts access to users authorized to see the pipe configuration. Inspect `retry_attempts`, `resolved`, `retryable`, and `dead` before assuming every historical error needs replay. + +**Risky correction:** changes to batch size, retry allowance, or fallback can multiply external requests. Confirm target idempotency and partial-batch behavior, required object ordering, accepted duplicate handling, and a rate/load budget first. Validate outgoing data and capture feedback. Ignore an already-deleted-target response only when its meaning has been verified; do not suppress all delete errors. For SQL bulk failures, retained bulk files can help an authorized host administrator, but contain data and consume disk: `keep_failed_bulk_operation_files=true` preserves failed-operation files in a temporary folder until the next node restart. + +[Pump retry configuration](../../hub/documentation/service-configuration/pipes/configuration-pump.rst) · [Operational failure examples](../../hub/documentation/operations/troubleshooting.rst) · [SQL bulk-file debugging](../../hub/documentation/service-configuration/pipes/configuration-sinks-sql.rst) + +## Duplicates and bidirectional loops + +**Inspect:** trace the entity through source namespace, global record, target namespace split, insert/share response, returned target ID, and origin mapping. Compare values sent to the target with those read back. A target that automatically normalizes or modifies written values can cause a bidirectional loop. A wrong target identifier can produce unexpected updates or deletes even when all runs succeed. + +The documented protections are distinct: + +- Namespace splitting blocks inserts of entities that already have the target system's namespace. +- The duplicate hops block prevents another insert after a successful insert is already recorded in the share pipe's sink dataset. +- Capturing the insert response and establishing origin connects a newly created target object to its originating entity. +- Pre-existing duplicates require a justified global merge criterion; insert-retry configuration does not resolve them. +- Completeness addresses propagation races; optimistic locking reduces the window for overwriting source-system changes Sesam has not yet imported. + +**Safe correction boundary:** identify whether the issue is repeated creation, pre-existing duplicates, target normalization, or stale feedback before altering merge or feedback rules. Replaying non-idempotent operations can produce different results on each attempt. Use the documented [Bidirectional synchronization](../workflows/bidirectional-synchronization.md) pattern, rather than building an ad hoc loop fix by clearing offsets. + +[Bidirectional safeguards](../../hub/bidirectional-synchronization.rst) · [Non-idempotency](../../hub/idempotency.rst) + +## Dependency-cardinality problems and missed reprocessing + +**Inspect:** a high tracking queue, dependency-limit failure, large `hops.max-cardinality`, or rising traversal rows directs attention to joins. Blank or overly common keys can produce large equality groups. Joins succeed when **any values overlap**; this is not necessarily the scalar comparison intended by the data model. `null` values and deleted entities are not indexed, so distinguish null keys from non-null blank strings. + +Use a unique `trace` name on the last HOP_SPEC to collect per-hops maximum join-cardinality statistics in completion/failure logs. This is an instrumentation/configuration change, not an initial read-only step. Prefer testing it on sanitized fixtures first. + +Dependency tracking traverses hops in reverse from a changed referenced entity to affected source entities. It only supports dataset-source pipes: hops in a merge-source pipe do not get that tracking. Chained transforms that change join-key values, namespace rewriting, or dynamic `$ids` rewriting can make the inverse traversal fail to match the stored source entity. `lookup-entity` also does **not** trigger automatic dependency reprocessing when the looked-up entity changes. + +Service-metadata defaults bound dependency tracking's in-memory work: + +- `dependency_tracking.dependency_warning_threshold`: **10,000 entities**, warn. +- `dependency_tracking.dependency_error_threshold`: **50,000 entities**, fail. +- `dependency_tracking.dependency_warning_threshold_total_bytes`: **33,554,432 bytes (32 MiB)**, warn. +- `dependency_tracking.dependency_error_threshold_total_bytes`: **134,217,728 bytes (128 MiB)**, fail. +- `dependency_tracking.enable_hops_thresholds`: default **false**; when true, applies these limits to ordinary hops too, and is recommended in development. + +**Corrective options:** use more selective, semantically valid composite keys built with `tuples`, filter invalid join values, and preserve join-key compatibility with stored source entities. Splitting merge ingestion from a dataset-source transform can restore tracking support. Rescans may be required where tracking is unsupported or cannot cover the data. Do not merely raise thresholds: the limits protect against excessive memory use. + +For self-hops into a pipe's sink, the documented caveats are especially important: unflushed batch entities are invisible, so `batch_size=1` is required to guarantee visibility, and dataset-sink `set_initial_offset="onload"` avoids waiting forever for its own initial population. Treat this as a special design review, not a general tuning recommendation. + +[Dependency caveats](../../hub/dtl/caveats.rst) · [Hops tracing and self-hop caveats](../../hub/dtl/dtl-functions-hops.rst) · [Join semantics](../../hub/dtl/joins.rst) · [Threshold configuration](../../hub/documentation/service-configuration/configuration-metadata.rst) · [DTL joins and transformation patterns](../workflows/dtl-joins-and-transformation-patterns.md) + +## Incorrect merges, child output, and property provenance + +### Search and lineage: locate the producer + +When enabled, Integrated Search indexes globals for free-text search and navigation. Search results are restricted to data the user may read; a missing result is not proof that the entity is absent. Indexing incurs a documented **2x global-pipe data-size requirement**, so enabling it is not a cost-free disk-pressure investigation. + +Search uses default **OR**, ranks by relevance, and supports `+` for AND, `|` for OR, `-` for negation, quotes for phrases, `*` for prefix search, `~N` for phrase slop or term fuzziness, and parentheses for precedence. Use an exact identifier and known dataset inspection when diagnosing identity collisions rather than treating a relevance-ranked first result as authoritative. + +Property lineage is a **best-effort property dependency graph**, built by static analysis of pipe configuration combined with schema inference. It shows upstream properties a namespaced property depends on and downstream properties depending on it; it is not an execution trace proving the origin of one particular value. Entry points are: + +- `Ctrl/Cmd+Click` on a namespaced property in Integrated Search's entity view. +- The same gesture in a pipe's Input/Output entity view. +- A property in Browse/Entity Types or the pipe's Inferred Schema tab. + +The feature documentation describes lineage as part of Integrated Search, historically enabled by the payment method owner for clustered subscriptions. Verify current entitlement and menus rather than assuming the older activation instructions apply unchanged. + +### Explain the transformation or identity error + +**Merge:** inspect equality sets, source versions, identity strategy, and intervening source changes. Merge sameness is transitive: an unintended bridge can merge an entire group. Null or empty-list equality values do not cause merging. Obsolete merged IDs can be emitted as deletes with `$replaced=true`; a source-deleted entity is emitted separately with `_deleted=true` rather than merged. A change in output IDs can therefore be legitimate merge behavior, not evidence of lost input. + +Added equality rules do not retroactively merge already-processed entities without a reset/rescan; removing datasets requires a full run to clear their merge state. During a background rescan after merge configuration changes, incremental runs can temporarily use the old merge state and produce erroneous output that is cleaned up at completion. Keep outgoing effects controlled while validating such a change. + +**Selection:** the generic troubleshooting page warns about using `first` on hops to choose a unique entity. The specific hops reference clarifies that identical input entities give deterministic `_id`-based result order, but it is not a business-property ordering. Apply an explicit `sorted*` rule when order matters; `first` does not establish business uniqueness. + +**Children:** inspect whether two parents generate the same child ID, and whether removed children are tracked. `create` emits independent entities and can leave orphans without rescans. `create-child` instead stores children in `$children`; a dataset sink compares the previous parent's children and adds deletion information for removed children. `emit_children` emits child entities with IDs, not the parent, and belongs in a **separate pipe** so parent retention/deletion tracking remains possible. + +**Safe correction boundary:** reproduce with a small sanitized parent/global sample and compare all affected IDs, deletes, and values before changing merge rules or running full reprocessing. See [Master data management](../workflows/master-data-management.md). + +[Integrated Search](../../hub/features/integrated-search.rst) · [Property lineage](../../hub/features/property-lineage.rst) · [Merge state and deletes](../../hub/documentation/service-configuration/pipes/configuration-sources-merge.rst) · [Child creation](../../hub/dtl/dtl-functions-transforms.rst) · [Emit children](../../hub/documentation/service-configuration/pipes/configuration-transforms-emit-children.rst) + +## Disk pressure, slow processing, and frozen nodes + +**Inspect storage first:** compare `sesam_pipe_usage` with log-versus-index counts, queue growth, retry history, dead letters, global search indexing, and host disk telemetry. Datasets are append-only logs; unchanged content is suppressed, but changed versions accumulate. The default retention keeps two versions, needed for reliable dependency tracking. Reducing `compaction.keep_versions` below two makes tracking best-effort and may miss reprocessable entities. + +Compaction stops at the lowest dependency-tracking offset to preserve synchronization. **Disabled dependent pipes still hold back compaction.** Resolve that stalled dependency or review its long-term design rather than assuming automatic compaction is broken. Removing a pipe or commenting out its hops to release the hold is a configuration/behavior change requiring a recovery plan, not harmless cleanup. Tripped circuit breakers also block compaction. Execution datasets are time-trimmed, with `compaction.time_threshold_hours_pump` defaulting to **720 hours (30 days)**, the documented minimum. + +**Inspect execution cost:** compare stage timings, traversal cardinality, and recent service restarts. For an apparently frozen node, inspect already-created `stacktrace.html` files and `node_health.log` if authorized host access is available. The node periodically calls its own `/api/health`; a failed health check creates a stacktrace. `/api/status` includes psutil memory information and `/api/status/heap` provides a higher-level memory breakdown. + +Do not leave debug artifacts growing unchecked. Global API profiling produces files that are not automatically cleaned up and can fill the disk; retained SQL bulk files also need controlled handling. Storage, backups, and recovery ownership belong in [Deployment and durability](deployment-and-durability.md). + +[Compaction safety](../../hub/features/compaction-feature.rst) · [Low-level debugging](../../hub/documentation/operations/low-level-debugging.rst) + +## Certificates and TLS failures + +**Locate the failing connection:** client-to-Sesam TLS terminates at the reverse proxy on port **443**; a pipe's outbound HTTPS connection uses its system's SSL verification configuration. Do not change outbound `verify_ssl` to address an expired inbound proxy certificate. + +For the documented self-hosted Traefik/Let's Encrypt setup, certificate renewal requires inbound **80/HTTP from public sources** and outbound **443/HTTPS to `*.letsencrypt.org`**. A bring-your-own-certificate setup can skip the inbound ACME opening, but then requires the operator's own certificate lifecycle. Check the actual deployment and renewal configuration; do not apply self-hosted firewall instructions indiscriminately to managed subscriptions. + +For outbound URL-system TLS, inspect `verify_ssl`, any service-metadata default, and `custom_ca_pem_chain`. The custom PEM chain is used when verification is enabled. Although the older configuration reference documents a false default for verification, that is not a security recommendation. Fix expiry, trust chain, endpoint configuration, or renewal connectivity instead of bypassing verification. Keep private keys and credential-bearing traces out of shared evidence. + +[Self-hosted renewal requirements](../../hub/documentation/operations/self-hosted.rst) · [Proxy ownership](../../hub/documentation/operations/behind-the-scenes.rst) · [Outbound SSL configuration](../../hub/documentation/service-configuration/systems/configuration-systems-url.rst) · [Security and secrets](security-and-secrets.md) + +## Escalation and dangerous operations + +The low-level debugging reference is aimed at **self-hosting system administrators** and often requires host filesystem access. For hosted environments, escalate with sanitized pipe IDs, timestamps, build/version information, original error summaries, and observed queue/metric changes. Do not assume a subscription API call can reach every worker-local diagnostic endpoint. + +| Action | Prerequisites and impact | +| --- | --- | +| `GET /api/status/stacktrace` | Unofficial HTML endpoint; authenticated nodes require JWT `group:Admin`. Restrict access to the resulting diagnostic file. | +| Send `SIGUSR1` to the node process | Authorized host access and correct process identity required. Writes/rotates `stacktrace.html` even when the API is broken; not a restart. Avoid copying the source's example PID. | +| Change log level with `/api/logs` | State-changing diagnostic action, sent **directly to the worker node**, not the subscription service API. Choose a narrow logger and time window, protect the output, and restore the previous level. | +| HTTP trace logging | `global_defaults.trace` records REST/source/sink/HTTP-endpoint request and response information in completion/failure events, including headers and partial bodies by default. Configure capture narrowly, prefer full secret redaction (`trace.log_secret_redacted_bytes=-1`), and inspect sanitized output: redaction is explicitly best-effort. | +| Preview external transforms | HTTP and REST transforms default `side_effects=true` to prevent inadvertent external changes in previews. Do not set false merely to make a preview work; confirm the transform is genuinely safe or use an isolated target. | +| Profile one API request with `SESAM-API-PROFILER` | `pstats` or `calltree` returns profile data **instead of the normal response**. Restrict to a suitable diagnostic request and account for profiling cost. | +| Global `--enable-api-profiler` | Requires service restart and filesystem access; documented as unavailable for Sesam cloud operation. Generates unbounded, non-auto-cleaned profile files: use only with a cleanup/disk budget. | +| Pump `profiler=true` with `operation=start` | Starts a real pump run and writes `.pstat`/`.calltree` files in the logs folder. Requires isolated or replay-safe targets and an artifact budget. | +| `max_seconds_per_entity` | Deliberately **fails** a run when average transform time per entity in a batch exceeds the limit. The first batch entity is embedded in the failure; `batch_size=1` isolates the exact offender at a performance cost. Use in a controlled test. | +| Disable the pump scheduler | `task_manager.disable_pump_scheduler=true` prevents automatic starts across the instance. Plan the backlog and restoration. The host-file fallback `/sesam/node/data/startup_options.json` requires a node restart to take effect. | +| `stop`, `disable`, `start`, `start-rescan` | Pump POST operations interrupt runs or alter scheduling/processing. `disable` stops automatic scheduling but still allows manual start; `stop` stops normal and rescan runs. Review external side effects and concurrent work first. | +| Clear `last-seen` / reset | Reprocesses from the beginning; a full run performs deletion tracking. Check idempotency, completeness, deletion policy, and downstream effects. Background rescans are supported only with dataset sinks and need explicit enablement. | +| `set-last-seen-to-end` | Skips unread source entities and can cause data loss. Development/testing only unless an explicit loss decision and reconciliation plan exist. | +| `reset-tracking` | Experimental, unsafe while running. Skips untracked dependency offsets, continuing from dataset ends at the next run; output may be wrong. Use only in development or with a planned full synchronization. | +| `discard-retries` | Pending failed-write retries are ignored at the next run and **are not copied to dead letters**. Preserve authorized evidence and plan reconciliation first. | +| Commit/rollback circuit breaker | Both reset the breaker. Commit exposes pending entities; rollback deletes entities written during the tripped run. Review whether the surge is valid and its downstream implications before choosing. | +| Force configuration acceptance | `force=true` on pipe configuration updates accepts configuration errors with best-effort application. The API calls it rarely a good idea; do not use it to hide a validation failure. | + +[Low-level diagnostic procedures](../../hub/documentation/operations/low-level-debugging.rst) · [Mutation semantics](../../hub/swagger_public.yaml) · [Pump debug/rescan settings](../../hub/documentation/service-configuration/pipes/configuration-pump.rst) + +## Verify the fix without changing production by accident + +Use a personal/local or dedicated CI subscription with **output pipes disabled or unable to reach production targets**. The documented local testing workflow runs pipes until internal queues drain, then compares endpoint output against expected fixtures. It uses an `expected` directory with `.json` and `.test.json`; tests can select pipe, output stage, endpoint, and ignored properties. + +```sh +sesam -vv test +``` + +The Sesam client is explicitly **not for production subscriptions**. Only one client should operate on a subscription at once, and manual concurrent changes should be avoided. + +Build focused regression cases for the diagnosed failure: + +- A missing/late incremental update and the chosen partial-rescan window. +- A failed batch with one invalid entity, a transient system failure, and an exhausted-retry case with inspected dead-letter behavior. +- A blank/common join key, a composite key, and a changed referenced entity requiring reverse dependency reprocessing. +- An unintended transitive merge bridge and expected obsolete-ID deletes. +- Two parents colliding on a child ID, a removed child, and correct parent/child deletion propagation. +- A repeated insert and a target-normalized value round trip, verifying feedback/origin and loop prevention. + +These are recommended incident-specific fixtures, not a claim that the repository contains runtime tests for every scenario. In production, close the incident only after expected progress resumes, retries/dead letters have an explicit disposition, representative output is correct, and target feedback confirms the intended effect. Use [API and repository handoffs](../integrations/apis-and-repository-handoffs.md) for promoting the tested configuration and [History and policies](../references/history-and-policies.md) for lifecycle context. + +[Local test workflow](../../hub/documentation/operations/testing-locally.rst) · [Sesam client safety](../../hub/sesam-client.rst) diff --git a/openwiki/operations/security-and-secrets.md b/openwiki/operations/security-and-secrets.md new file mode 100644 index 00000000000..c9e8ff522a5 --- /dev/null +++ b/openwiki/operations/security-and-secrets.md @@ -0,0 +1,364 @@ +--- +type: security-concept +title: Authorization, secret lifecycle, and network security +description: Explains subscription roles, node ACL enforcement, runtime pipe identity, write-only secrets, and outbound authentication. Covers configuration replacement risks, TLS verification, hosted network controls, VPN, encryption-at-rest limits, and security-focused validation. +tags: [security, authorization, secrets, authentication, networking, operations] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-e389b2c6e31446ccc4126746 + resource: repo://hub/api.rst + - id: openwiki-source-8b35a0ce0ffe588f380e6470 + resource: repo://hub/documentation/building-blocks/environment-variables.rst + - id: openwiki-source-5fd606e14966f8a238296bce + resource: repo://hub/documentation/building-blocks/secrets.rst + - id: openwiki-source-80eedbbd35c9d596a2d38fe2 + resource: repo://hub/documentation/operations/behind-the-scenes.rst + - id: openwiki-source-5836a7a1bfae906d1c6a7cca + resource: repo://hub/documentation/operations/continuous-integration.rst + - id: openwiki-source-caeff9d3196d7b81403130e3 + resource: repo://hub/documentation/operations/security.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-6a5de2a911806771b5cfd05a + resource: repo://hub/documentation/service-configuration/configuration-metadata.rst + - id: openwiki-source-9b06b9e105f615155cf1f604 + resource: repo://hub/documentation/service-configuration/environment-variables/environment-variables.rst + - id: openwiki-source-b88ab8bcd7069b9437346a72 + resource: repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst + - id: openwiki-source-daba448c9f0497c50826d185 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-rest.rst + - id: openwiki-source-709dcd56cf1f6f81f6584be7 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-http.rst + - id: openwiki-source-e3ab6d41e79b5df3ed8f521c + resource: repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst + - id: openwiki-source-4b9a915a059dfbaf16712b15 + resource: repo://hub/documentation/service-configuration/systems/configuration-systems-url.rst + - id: openwiki-source-b15f1f3b073de71b578bbbbc + resource: repo://hub/documentation/service-configuration/systems/configuration-systems.rst + - id: openwiki-source-5156b81b00358c1c04a7aff2 + resource: repo://hub/features/api-config-groups.rst + - id: openwiki-source-0ad01ca73409795763a8fc50 + resource: repo://hub/features/bring-your-own-key.rst + - id: openwiki-source-3b18059c0de46330cdb99d29 + resource: repo://hub/features/network-policy.rst + - id: openwiki-source-cba998551ab4133c8eef25c8 + resource: repo://hub/features/vpn.rst + - id: openwiki-source-839eae38482865fc4eda4486 + resource: repo://hub/sesam-client.rst + - id: openwiki-source-d0a16f79e90cff0f5bcc9290 + resource: repo://hub/swagger_portal.yaml + - id: openwiki-source-c92a884f90ca8ac7f160c79a + resource: repo://hub/swagger_public.yaml +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Authorization, secret lifecycle, and network security + +Sesam documents two security domains: **user authorization** controls who may perform actions, while **secrets** hold credentials used by integrations. Keep both separate from network reachability and from authentication to an external service. A valid user JWT is not an external-system credential, and possessing a database password does not grant permission to administer a node. [Security domains](../../hub/documentation/operations/security.rst#L8-L39) + +This page describes the published contracts in this documentation repository, not the implementation of the portal or node. For implementation work, use [APIs and repository handoffs](../integrations/apis-and-repository-handoffs.md). Deprecated databrowser authentication belongs in [Legacy data access](../references/legacy-data-access.md), not in a new node-authentication design. Security-policy history and legal material belong in [History and policies](../references/history-and-policies.md); this page does not derive compliance guarantees or legal obligations from certification statements. + +## Responsibility boundaries + +| Layer | What it controls | What to configure or inspect | +| --- | --- | --- | +| Portal subscription roles | A user's actions in the portal, scoped to a subscription | Subscription membership and roles | +| Node resource permissions | Authorized actions on pipes, systems, and datasets | Resource ACLs and the role principals in the JWT | +| Runtime pipe permissions | Whether a running pipe may use its source and target systems | The roles inherited when the pipe was created, plus system permissions | +| Configuration groups | Which collection of pipe/system configuration is retrieved or replaced | `metadata["$config-group"]` or the group in the configuration URL | +| External-system authentication | Credentials sent by URL/REST systems to remote servers | `authentication`, `jwt_token`, `oauth2`, or REST `custom_auth` | +| Network and storage controls | Reachability, transport security, and hosted encryption at rest | Network policy, VPN, certificate verification, and subscription-specific BYOK eligibility | + +Roles, node permissions, and runtime checks are defined in the [security reference](../../hub/documentation/operations/security.rst#L23-L123). Configuration grouping is defined separately in [Config groups](../../hub/features/api-config-groups.rst), and outbound authentication in the [URL](../../hub/documentation/service-configuration/systems/configuration-systems-url.rst) and [REST](../../hub/documentation/service-configuration/systems/configuration-systems-rest.rst) system contracts. + +## User-to-node authorization + +### Login, subscription selection, signature validation, and ACL checks + +Roles are assigned to users **within a subscription**: the same person can have different roles in different subscriptions. Node permissions are assigned to roles through the GUI's Permissions pages. The node evaluates the user's roles against permissions on the requested resource; portal membership alone is not the resource permission check. + +The documented dataset-read example follows this sequence: + +```mermaid +sequenceDiagram + actor Person as User + participant GUI as Management Studio GUI + participant Portal as Sesam Portal backend + participant Node as Subscription node + Person->>GUI: Log in with email and password + GUI->>Portal: Submit login + Portal->>Portal: Check existing user and assigned roles + Portal-->>GUI: Subscriptions where user has a role + Person->>GUI: Select subscription subA + GUI->>Portal: GET /api/subscriptions/subA/jwt + Portal->>Portal: Include roles in subA and sign JWT with private key + Portal-->>GUI: Signed JWT + Person->>GUI: Select dataset1 + GUI->>Node: Request dataset with Authorization Bearer JWT + Node->>Node: Validate signature using portal public key + Note over Node: For a valid JWT, evaluate resource permissions + Node->>Node: Load dataset ACL and check Read data against user roles + alt Required permission granted + Node-->>GUI: Dataset contents + GUI-->>Person: Display data + else Required permission not granted + Node-->>GUI: 403 Forbidden + GUI-->>Person: Access denied + end +``` +*The portal establishes subscription-scoped roles in a signed JWT; the node validates the signature and makes the resource-specific allow/deny decision.* + +The portal exposes `GET /api/jwt` for the logged-in user, `POST /api/jwt` for form-encoded `email` and `password` with optional `subscription_id`, and `GET /api/subscriptions/{subscription_id}/jwt` for a particular subscription. If the POST omits `subscription_id`, the contract says it returns a JWT for all the user's subscriptions. `GET /api/jwt/publickey` returns the RSA public key used to verify signatures. [Portal JWT API](../../hub/swagger_portal.yaml#L256-L326) + +Most node API calls require a JWT, sent on **each request** as `Authorization: Bearer ` followed by the token. Use the connection URL shown for the actual subscription; a typical hosted API base is `https://instance-guid.sesam.cloud/api`. This illustrative token is intentionally invalid: + +```http +Authorization: Bearer synthetic-jwt-not-valid +``` + +The documented `403 Forbidden` above is an **ACL denial after authentication**. The login example does not specify an HTTP status for an invalid signature; do not treat every authorization failure as the same failure mode. [Header contract](../../hub/api.rst#L10-L58), [authorization sequence](../../hub/documentation/operations/security.rst#L45-L63) + +### Roles are not permission names + +The published role overview gives these broad capabilities; consult the actual resource ACL when diagnosing a node request: + +| Role | Documented overview | +| --- | --- | +| Admin | Manages subscription, resources, roles, permissions, other users, admin, ACLs, configuration uploads, and licenses | +| Developer | Manages subscription, pipes, systems, datasets, roles, permissions, and configuration uploads, but not admin, other users, ACL management, or license uploads | +| User | Manages own pipes and systems, and manages datasets; not subscription, roles, permissions, or configuration uploads | +| Guest | Views pipes and systems only in this overview; no dataset management | + +[Role-based access overview](../../hub/documentation/operations/security.rst#L65-L92) + +Pipe and system configurations accept a `permissions` list. Each ACL entry is a three-element list: action, list of groups/roles, and list of permission names. The prose describes actions as `"ALLOW"|"DENY"`; the published JSON examples use lowercase `"allow"` and `"deny"`. Preserve the example syntax rather than inventing a different ACL format. For example, the documented Developer grants are: + +**Pipe configuration fragment:** + +```json +{ + "permissions": [ + ["allow", ["group:Developer"], ["read_config", "write_config", "run_pump_operation", "read_data", "write_data"]] + ] +} +``` + +**System configuration fragment:** + +```json +{ + "permissions": [ + ["allow", ["group:Developer"], ["read_data", "write_data", "read_config", "write_config", "read_proxy", "write_proxy"]] + ] +} +``` + +These grants illustrate different operations: configuration access, data access, pump operations, and system proxy access are distinct permission names. Do not broaden the list just to make one failed operation succeed. The inspected documentation does not establish conflict ordering between allow and deny entries or a universal default ACL. Resolve such implementation questions through the repository handoff rather than assuming filesystem-like precedence. [ACL structure](../../hub/documentation/service-configuration/systems/configuration-systems.rst#L19-L35), [pipe ACL property](../../hub/documentation/service-configuration/pipes/configuration-pipes.rst#L109-L114), [permission examples](../../hub/documentation/operations/security.rst#L94-L113) + +### Runtime pipe identity is another check + +When a user creates a pipe, it inherits that user's roles, stored in the pipe configuration. At runtime, the node checks whether the pipe may read from its source system and write to its target system. Failure makes the **pipe run fail**, with an error on the pipe's GUI page. Being able to upload configuration or start a pump is therefore not a substitute for checking the running pipe's system access. [Runtime checks](../../hub/documentation/operations/security.rst#L115-L123) + +For pipe/system configuration structure, see [Pipes and systems](../configuration/pipes-and-systems.md). + +### Automation tokens and revocation + +The portal's `/api/subscriptions/{subscription_id}/api_json_web_tokens` collection supports listing, creating, and updating API JWTs for scripts and cron jobs. Creation requires `exp` and `principals`, such as `group:Developer`. Without refresh configuration, `exp` is the expiration date in epoch seconds. With `refresh_interval`, the configured `exp` is the last time the token can be refreshed, while the signed token's expiry is `current_time + refresh_interval`. + +The actual `jwt_string` is returned **only on creation**. A refresh-enabled token also has a `client_id` and a `client_secret`, with the secret likewise returned only on creation. Securely capture these at issuance; a later listing is not a credential-recovery mechanism. The portal also documents `POST /api/openid_connect/token` with `grant_type` values `client_credentials` and `refresh_token`, plus `client_id` and `client_secret`. This portal token endpoint is not the remote provider's token endpoint in a system's `oauth2` configuration. [API JWT operations](../../hub/swagger_portal.yaml#L521-L692), [JWT fields](../../hub/swagger_portal.yaml#L4702-L4788), [portal token endpoint](../../hub/swagger_portal.yaml#L2794-L2821) + +The portal exposes `/api/subscriptions/{subscription_id}/revoked_json_web_tokens` for subscription nodes to learn about changed user permissions and revoked API JWTs. It covers both transient GUI JWTs and long-lived API JWTs, and supports continuation using the last entity's `_updated` value as `since`. Revocation records identify either a `user_principal` or an `api_token_id`, never both; the latter invalidates one API token. The contract does not specify a node polling interval or an instantaneous revocation guarantee. [Revocation feed](../../hub/swagger_portal.yaml#L2627-L2659), [revocation identities](../../hub/swagger_portal.yaml#L5487-L5503) + +## Configuration groups: replacement scope, not role groups + +Every pipe/system belongs to a config group. For individual configuration endpoints, set it in metadata: + +```json +{ + "metadata": { + "$config-group": "synthetic-integration-group" + } +} +``` + +For bulk `/api/config/{config-group}` operations, the group is selected by the URL. Omission selects the `default` group, including `PUT /api/config`. **Bulk PUT replaces all configuration in the selected group**, not just the items being changed. `PUT /api/config-all` overwrites all groups. These are deployment boundaries, not substitutes for `group:Developer` or resource ACLs. Review the complete intended group before replacing it, especially where system deletion/recreation could destroy system-local secrets. The default-group and all-group PUT contracts also warn that `force=true` accepts configuration errors and applies configuration on a best-effort basis; do not use it as a security fix. [Config group assignment and replacement](../../hub/features/api-config-groups.rst#L29-L46), [bulk API contracts](../../hub/swagger_public.yaml#L1226-L1348) + +See [Deployment and durability](deployment-and-durability.md) for deployment and recovery procedures. + +## Write-only secrets and environment substitution + +### Choose the right scope and retain the originals + +Use `$SECRET(name)` for passwords, tokens, and other sensitive values. Secrets are write-only: their **names** can be listed, but their original values cannot be extracted after upload. The secrets manager stores values encrypted with an instance-unique key. Keep a secure **off-site** copy of the originals, including the material needed to re-upload them; downloading configuration or listing secret keys does not replace this responsibility. + +Prefer **system-local secrets**. They are visible to one specified system. Global secrets are available to all systems and are supported but not recommended. Global secrets survive until explicitly deleted. System-local secrets survive until explicitly deleted **or the system is removed**. Deleting and re-adding a system, even with the same intended identity, requires uploading its local secrets again. [Secret scope, encryption, and retention](../../hub/documentation/operations/security.rst#L131-L187), [local-scope recommendation](../../hub/documentation/building-blocks/secrets.rst) + +```mermaid +flowchart TD + Original["Original values retained securely off-site"] --> Upload["Upload to secrets manager"] + Upload --> Local["System-local encrypted secrets"] + Upload --> Global["Global encrypted secrets"] + Local --> UseLocal["Resolve SECRET references at runtime for that system"] + Global --> UseGlobal["Resolve SECRET references at runtime for systems"] + Local --> RemoveLocal["Explicit secret deletion or system removal"] + Global --> RemoveGlobal["Explicit secret deletion"] + RemoveLocal --> Recreate["Recreate system if needed"] + Recreate --> Reupload["Re-upload local secrets from retained originals"] + Original --> Reupload + Reupload --> Local +``` +*System removal ends the lifetime of system-local secrets; recreating the configuration does not restore the values.* + +### Management entrypoints and update semantics + +Node paths below include the `/api` prefix. Upload a JSON mapping of secret names to string values. The narrative security guide mentions a single object or a list of objects, but the API contracts specify an object; use the mapping form for API integrations. + +| Operation | Global secrets | System-local secrets | +| --- | --- | --- | +| List names only | `GET /api/secrets` | `GET /api/systems/{system_id}/secrets` | +| Upload with PUT | Adds named values and overwrites matching names | **Overwrites the secrets for the specified system** | +| Add/update with POST | Adds values, overwrites matching names, does not delete existing secrets | Adds values, overwrites matching names, does not delete existing secrets | +| Delete one value | `DELETE /api/secrets/{secret_key}` | `DELETE /api/systems/{system_id}/secrets/{secret_key}` | + +Do not assume global and system PUT have identical replacement semantics. For a targeted rotation that must retain unrelated local keys, the POST contract explicitly supplies additive behavior. [Global secret API](../../hub/swagger_public.yaml#L1504-L1551), [system secret API](../../hub/swagger_public.yaml#L2556-L2640), [mapping schema](../../hub/swagger_public.yaml#L2918-L2930) + +A synthetic upload document, retained securely outside the node, might be: + +```json +{ + "service-password": "synthetic-password-not-valid", + "api-key": "synthetic-api-key-not-valid" +} +``` + +The security guide's CLI entrypoints are: + +```sh +sesam put-secrets my_system_id my-system-secrets.json +sesam get-secrets my_system_id +sesam put-secrets my-secrets.json +sesam get-secrets +``` + +The first pair addresses system-local secrets; the second addresses globals. `get-secrets` lists names, not values. These are reference commands, not an endorsement of running the testing-oriented Sesam client against production: the client guide explicitly warns against production use. Use an approved administration process for production, with the documented HTTP API as the integration contract. [CLI examples](../../hub/documentation/operations/security.rst#L147-L178), [client safety warnings](../../hub/sesam-client.rst#L21-L36) + +### Substitution constraints + +| Mechanism | Intended use | Configuration scope | +| --- | --- | --- | +| `$SECRET(mysecret)` | Sensitive, write-only values | Supported locations in **System configuration entities only** | +| `$ENV(myvariable)` | Nonsensitive configuration parameters | System, Pipe, and service metadata; variables are **global only** | + +A system can compose several references in a string, including secrets and environment variables, but **references cannot be nested**. A property composed from multiple references is always a string. Do not put secrets in pipe transforms or assume every configuration location supports them. The security guide says resolved secret values are used as needed at runtime and are not exposed through the API or ordinary logs; tracing has a separate best-effort warning below. [Secret substitution](../../hub/documentation/operations/security.rst#L193-L253), [environment scope and composition](../../hub/documentation/service-configuration/environment-variables/environment-variables.rst#L6-L46), [no sensitive environment variables](../../hub/documentation/building-blocks/environment-variables.rst) + +For example, an outbound URL system with synthetic endpoints and secret references: + +```json +{ + "_id": "synthetic-http-service", + "type": "system:url", + "url_pattern": "https://$ENV(api-host)/%s", + "verify_ssl": true, + "authentication": "basic", + "username": "$SECRET(service-user)", + "password": "$SECRET(service-password)", + "headers": { + "X-Api-Key": "$SECRET(api-key)" + } +} +``` + +## Authentication to external URL and REST systems + +URL systems supply HTTP/HTTPS session handling, connection pooling, and authentication to sources and sinks. REST systems extend URL systems, inheriting their configuration properties. These credentials authenticate **Sesam to the remote system**, not a human to the node. [URL responsibilities](../../hub/documentation/service-configuration/systems/configuration-systems-url.rst#L6-L9), [REST inheritance](../../hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L6-L16) + +### Built-in authentication and OAuth2 + +- Authentication is **opt-in**, with no authentication by default. The documented `authentication` values are `basic`, `digest`, `ntlm`, `tripletex`, and `jwt`. For username/password modes, the username only has an effect when both the authentication protocol and password are supplied; password is mandatory when username is provided. +- `authentication: "jwt"` requires `jwt_token` for the remote server. Using `jwt_token` automatically overwrites an `Authorization` header supplied in `headers`. For REST systems, operation-level headers can override system header keys but cannot discard them. +- `oauth2` supports client-credentials and refresh-token grants. Supply `client_id`, `client_secret`, and `token_url`; refresh-token mode additionally requires `access_token` and `refresh_token`. Optional settings include `scope`, `extra` token-request parameters, and `refresh_window` (default 30 seconds before expiry). +- **Do not combine `oauth2` with JWT authentication or `jwt_token`.** The URL contract states that OAuth2 requires TLS-secured transport both for `token_url` and the target `url_pattern`. +- Tripletex configuration requires `consumer_token`, `employee_token`, and `token_url`; `ttl` defaults to 48 hours and expired tokens are automatically refreshed. Store the token inputs as secrets. +- HTTP(S) and SOCKS5 proxy configurations can embed authentication. If used, keep embedded username/password values in system secrets, for example `socks5://$SECRET(proxy-user):$SECRET(proxy-password)@proxy.example.invalid:1080`. + +[URL authentication constraints](../../hub/documentation/service-configuration/systems/configuration-systems-url.rst#L101-L174), [REST header rules](../../hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L105-L110) + +### REST custom authentication is an extension point + +`custom_auth` is documented as **experimental**. It names REST operations for acquiring tokens and makes their response properties available in Jinja's `token` object. `get_token_operation` is required. An optional `get_refresh_token_operation` runs first; initial refresh-token properties can be supplied through `initial_refresh_token` and are later replaced by fetched values. + +```mermaid +sequenceDiagram + participant REST as REST system + participant Remote as External token service + opt Refresh-token operation configured + REST->>Remote: Execute get_refresh_token_operation + Remote-->>REST: Refresh-token response + REST->>REST: Make response properties available in token object + end + REST->>Remote: Execute get_token_operation + Remote-->>REST: Access-token response + REST->>REST: Evaluate expiry expressions and token properties + REST->>Remote: Execute business operation with templated credentials +``` +*Custom authentication obtains remote tokens through configured REST operations before using their properties in business requests.* + +Provide `expires_at_expression` or `expires_in_expression`; the former must produce a date, the latter seconds, and a valid absolute expiry takes precedence if both are configured. `refresh_window` defaults to 30 seconds. If a refresh-token operation is configured, provide its corresponding refresh-token expiry expression. Prefer `{{ token.access_token }}`-style references over the deprecated `access_token_property` and `refresh_token_property` helpers. The resulting template can construct an outbound header such as `"Authorization": "Bearer {{ token.access_token }}"`. + +A documented limitation matters for recovery: **on-premise single subscriptions keep newly fetched custom-auth refresh tokens only in memory**. After reboot, pipes can fail if a new token had been fetched; `initial_refresh_token` must be manually updated to that new refresh token. Plan retention and restart validation rather than assuming automatic durable token storage. [Custom-auth flow and settings](../../hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L488-L639), [token templates](../../hub/documentation/service-configuration/systems/configuration-systems-rest.rst#L715-L730) + +For operation configuration and provider-specific integration work, see [Connectors and contracts](../integrations/connectors-and-contracts.md) and [Extensions and JSON protocols](../integrations/extensions-and-json-protocols.md). + +## Transport, reachability, and hosted encryption + +### Outbound TLS verification must be explicit + +URL systems document `verify_ssl` as **false by default**. Service metadata's `global_defaults.verify_ssl` is also documented with default `false`. For safe HTTPS integrations, set verification to `true` explicitly or establish the global default and inspect overrides. `custom_ca_pem_chain` supplies a PEM certificate chain only when `verify_ssl` is true. HTTPS transport and certificate verification are separate settings: do not copy the unverified prototypes into production or disable verification to work around a certificate issue. REST inherits these URL properties. [URL TLS settings](../../hub/documentation/service-configuration/systems/configuration-systems-url.rst#L86-L97), [global verification default](../../hub/documentation/service-configuration/configuration-metadata.rst#L354-L360) + +### Hosted ingress and network policy + +The hosted architecture reference describes an Azure Network Security Group in front of each cloud service, with only port **443** openable for the service API. Its reverse proxy terminates TLS and routes API traffic. Certificates are managed through Let's Encrypt; the single-machine description also supports bringing your own certificates. Do not confuse these inbound certificates with a URL system's outbound CA configuration. + +The network-policy feature can block public access completely or allow only listed IP addresses/ranges. In the described new architecture, IP allowlisting can move down to the reverse proxy, with custom pipe rules for public and restricted access. The feature reference explicitly states that **outgoing traffic is currently unrestricted**; it is not an egress allowlist guarantee. The portal schema exposes `public-access` and `network-acl`; a network ACL entry requires `address` and may specify `access` as `Allow` or `Deny`, plus an optional `description`. This object format differs from a resource's three-element permission ACL. + +Subscriptions are described as isolated on separate hardware, but subscriptions within the same **subscription group share a network**. Evaluate that grouping when planning private connectivity rather than assuming every subscription has an independent network. [Hosted proxy and NSG](../../hub/documentation/operations/behind-the-scenes.rst#L27-L39), [clustered proxy](../../hub/documentation/operations/behind-the-scenes.rst#L58-L74), [isolation and firewall](../../hub/documentation/operations/behind-the-scenes.rst#L108-L116), [network policy](../../hub/features/network-policy.rst), [network settings schema](../../hub/swagger_portal.yaml#L4507-L4519), [network ACL entry](../../hub/swagger_portal.yaml#L3832-L3846) + +### VPN setup and limitations + +VPN extends Sesam into an on-premises network through **IPSec**. In Management Studio, select Subscription → Products → Enable VPN, then configure the VPN tab. Use the displayed Sesam Peer VPN Gateway and Sesam address spaces to configure the on-premises device. Supply: + +- **Gateway Address:** the on-premises device's IP address or FQDN. +- **Address Spaces:** address ranges Sesam should route to that device. +- **Pre-shared Key:** the authentication key between the two VPN devices. + +VPN has an additional surcharge. Developer subscriptions are documented without VPN support. Multi and flexi subscriptions support advanced highly available VPN configurations with redundant BGP-enabled connections and custom IPSec rules, arranged through support. VPN reachability does not replace JWT, ACL, or remote-server authentication checks. [VPN procedure and advanced support](../../hub/features/vpn.rst), [Developer limitation](../../hub/documentation/operations/behind-the-scenes.rst#L8-L11) + +### Encryption at rest and BYOK: use the feature's scope + +The dedicated BYOK reference says hosted disks and remote geo-replicated backup storage use platform-managed encryption keys by default. Its BYOK support means **Sesam manages the encryption key for you**, with the option to revoke it. Revocation generally requires the data to be reloadable afterwards. BYOK is opt-in for **new single subscriptions**, not yet supported for multi subscriptions, and must be enabled through support. + +There is a source discrepancy: the general hosted-architecture page still says bringing your own key is not supported. Do not turn that sentence into a blanket limitation, or the dedicated feature into a promise for all deployments. Confirm eligibility with support for the specific subscription. These storage keys are also a different mechanism from the secrets manager's instance-unique encryption key. [BYOK feature](../../hub/features/bring-your-own-key.rst#L6-L9), [general architecture statement](../../hub/documentation/operations/behind-the-scenes.rst#L15-L19), [secret encryption](../../hub/documentation/operations/security.rst#L176-L178) + +## Telemetry, tracing, and deletion boundaries + +The hosted monitoring reference says shipped logs include service errors, health/status, configuration without embedded data or secrets, kernel logs, and the pipe execution dataset **only when pipe monitoring is enabled**. Failing execution logs can contain the entity objects that caused failure locally, but the reference says those objects are not shipped to Sesam. Prometheus-compatible resource telemetry is pushed from local virtual machines for monitoring and operations. Scope these statements to the described hosted monitoring path, not every custom logger or external integration. [Monitoring data](../../hub/documentation/operations/behind-the-scenes.rst#L88-L106) + +**Tracing is a separate exposure risk.** REST and HTTP-endpoint tracing can log headers and body prefixes into pipe execution events. Tracing defaults to off. REST `trace.log_secret_redacted_bytes` defaults to 600; `-1` requests redaction of all secret bytes. The metadata and REST references explicitly describe redaction as **best effort**, with possible leakage. HTTP endpoint tracing describes the same setting in terms of redacting the `Authorization` request header. Do not interpret the ordinary secret-substitution promise as a universal guarantee about trace logs. Keep tracing off unless needed, minimize what is logged, and inspect logs securely before sharing them; never copy credentials or failing entity payloads into tickets or wiki examples. [Global trace behavior and warning](../../hub/documentation/service-configuration/configuration-metadata.rst#L299-L352), [REST trace warning](../../hub/documentation/service-configuration/pipes/configuration-sinks-rest.rst#L79-L128), [HTTP endpoint trace](../../hub/documentation/service-configuration/pipes/configuration-sources-http.rst#L105-L150) + +Subscription termination is documented to delete its data and backups, but the **single-machine Azure backup path retains backups for 30 days after deletion**. Self-hosted owners are responsible for off-site backups. This backup-retention exception is distinct from explicitly deleting a secret or retaining your own off-site originals; do not promise instant erasure of every copy. See [Deployment and durability](deployment-and-durability.md) for the backup paths and [Monitoring and troubleshooting](monitoring-and-troubleshooting.md) for operational diagnostics. [Backup responsibility and retention](../../hub/documentation/operations/behind-the-scenes.rst#L45-L51), [termination](../../hub/documentation/operations/behind-the-scenes.rst#L118-L121) + +## Security-focused validation before a change + +The following are **recommended checks of the documented contracts**, not a claim that this repository contains or has run a node security test suite. Use synthetic credentials, a personal/test subscription, and remote test services: + +1. **Role scope and resource denial:** obtain a JWT for the intended subscription. Verify a permitted dataset read and a valid-JWT read without `Read data` permission returning `403 Forbidden`. Check that editing configuration, reading data, and triggering pump operations are tested separately. +2. **Runtime access:** test a pipe whose inherited roles have the required source/target access, then remove one required system grant in the test setup and verify the documented failed run and GUI error. +3. **Secret lifecycle:** list keys without attempting value recovery. POST a targeted rotation and confirm unrelated local key names remain. Delete/recreate a disposable system and verify that local secrets require re-upload from retained originals. Keep this destructive test away from production. +4. **Configuration replacement:** review the complete selected config group before bulk PUT, including permissions and system identity. Do not test a partial group replacement against production or use `force=true` to bypass a failing security configuration. +5. **External authentication:** test the intended provider grant, token expiry/refresh, and outbound header construction. For on-premise single custom auth, include a reboot/recovery test with synthetic refresh tokens. +6. **Network and TLS:** test both allowed and blocked client networks, confirm the configured VPN route reaches the test system, and ensure certificate verification succeeds with the intended trust chain rather than disabling verification. +7. **Telemetry:** if trace is required, inspect its headers/body limits and redaction with synthetic values before enabling it for sensitive traffic. + +The CI guide requires a designated CI node, serialized tests, and a node unable to write to external systems; at minimum it should lack the variables and secrets needed for those output connections. The client guide warns against production use and concurrent client commands, while local-testing guidance requires output pipes to be disabled or unable to send externally. These are essential isolation constraints for security experiments as well as functional tests. [CI safety](../../hub/documentation/operations/continuous-integration.rst#L7-L24), [client constraints](../../hub/sesam-client.rst#L21-L42), [local test isolation](../../hub/documentation/operations/testing-locally.rst#L7-L9) diff --git a/openwiki/quickstart.md b/openwiki/quickstart.md new file mode 100644 index 00000000000..c100cd81480 --- /dev/null +++ b/openwiki/quickstart.md @@ -0,0 +1,194 @@ +--- +type: product quickstart +title: "Sesam Hub: product learning and documentation quickstart" +description: "Start learning the documented Sesam Hub model, choose an integration or operations path, and distinguish product changes from Sphinx documentation changes. Includes source-checked preview prerequisites, build behavior, and validation boundaries." +tags: [sesam-hub, quickstart, integration, operations, documentation] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-7285120d3802995c47851289 + resource: repo://.github/workflows/merge.yml + - id: openwiki-source-4e7d8a15e6785869396f3776 + resource: repo://.github/workflows/pull_request.yml + - id: openwiki-source-aa0305f577d5a1fb53f2726d + resource: repo://conf.py + - id: openwiki-source-e389b2c6e31446ccc4126746 + resource: repo://hub/api.rst + - id: openwiki-source-44e50825666ef41bd80ca9cf + resource: repo://hub/documentation/building-blocks/datasets.rst + - id: openwiki-source-7a2d2c36e68977998d148504 + resource: repo://hub/documentation/building-blocks/pipes.rst + - id: openwiki-source-7441c6857e91f2e552a7f944 + resource: repo://hub/documentation/building-blocks/streams-of-entities.rst + - id: openwiki-source-e9c139c51dbde1c66d8144cd + resource: repo://hub/documentation/building-blocks/systems.rst + - id: openwiki-source-5836a7a1bfae906d1c6a7cca + resource: repo://hub/documentation/operations/continuous-integration.rst + - id: openwiki-source-77b000efded2deb34b873d22 + resource: repo://hub/documentation/operations/pump-execution.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-92b30a880e4f783e38f1db9c + resource: repo://hub/documentation/operations/troubleshooting.rst + - id: openwiki-source-24a3402bbdfc8e090d1ba728 + resource: repo://hub/guide-create-first-synchronization-data-management.rst + - id: openwiki-source-7035272718e5cf63d6db0dce + resource: repo://hub/guide-create-first-synchronization-data-synchronization.rst + - id: openwiki-source-6010d21a45b120c0eb621c83 + resource: repo://hub/guide-create-first-synchronization.rst + - id: openwiki-source-56ff23f61dda5d836c905899 + resource: repo://hub/guide-getting-started.rst + - id: openwiki-source-64ee88973b54a55e49a17e18 + resource: repo://hub/index.rst + - id: openwiki-source-f517d5139873e41493bf54fa + resource: repo://hub/management-studio.rst + - id: openwiki-source-e1430a0683886b0e51106a01 + resource: repo://hub/sesam-dataflow.rst + - id: openwiki-source-ea17e578398a7ed32d204b34 + resource: repo://hub/tutorial-getting-started-collect.rst + - id: openwiki-source-c7055ff32400b5be1e6e8327 + resource: repo://hub/tutorial-signup.rst + - id: openwiki-source-135269ed2034995acce1b6ab + resource: repo://index.rst + - id: openwiki-source-012f2c78e3b1446dfc35803f + resource: repo://Makefile + - id: openwiki-source-23775c3de52f3ab95a13cb8b + resource: repo://README.md + - id: openwiki-source-373640cd8a0886cee69db282 + resource: repo://requirements.txt +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Sesam Hub: product learning and documentation quickstart + +## What this repository is for + +Sesam Hub is documented as a **Master Data Hub** for making up-to-date master data available in a data platform architecture. This is its **product-reference repository**: it owns documented product semantics—configuration contracts, data models, synchronization behavior, API specifications, tutorials, and operational guidance—not the data-processing runtime, Portal backend, or Management Studio implementation. Correcting a description here is not a runtime fix. Route implementation work through [architecture and ownership boundaries](architecture/hub-model-and-boundaries.md) and [API and repository handoffs](integrations/apis-and-repository-handoffs.md). + +The authored reference is reStructuredText built with Sphinx. Its actual entrypoint is [hub/index.rst](../hub/index.rst), set by `master_doc = 'hub/index'` in [conf.py](../conf.py); the root [index.rst](../index.rst) is an orphan page, and the configuration redirects `index.html` to `hub/index.html`. This Markdown wiki is a navigation and explanation layer, not a replacement for those authored sources. Sphinx is configured for `.rst`, despite Markdown-related packages in the dependency file. + +Keep three activities separate: + +- **Integration developers:** learn the model, build version-controlled pipe/system configuration in an integration project, and test it against an isolated Sesam node. +- **Operators:** inspect the subscription, processing evidence, connectivity, and durability/security constraints before changing configuration or processing state. +- **Documentation contributors:** change the relevant authored reference, preserve labels/includes/assets, and validate its rendered documentation. A local documentation preview does not create a Sesam subscription or test an integration. + +Source anchors: [Hub landing page](../hub/index.rst), [Sphinx configuration](../conf.py), [configuration-management guidance](../hub/documentation/operations/configuration-management.rst), and [Management Studio introduction](../hub/management-studio.rst). + +## Choose a task, not a directory + +These links route through the planned wiki hierarchy. Use the destination page for detail and its source references for exact contracts. + +| Your task | Start here | Continue when needed | +| --- | --- | --- | +| Understand the Hub and its ownership boundaries | [Architecture](architecture/hub-model-and-boundaries.md) | [Entities, datasets, identifiers](concepts/entities-datasets-and-identifiers.md) | +| Create or adjust configuration | [Pipes, systems, defaults](configuration/pipes-and-systems.md) | [Synchronization and recovery state](configuration/synchronization-and-state.md) | +| Build an end-to-end integration | [Collect, Enrich, Connect, Transform, Share](workflows/build-an-integration.md) | [Bidirectional synchronization](workflows/bidirectional-synchronization.md) | +| Transform or connect data | [DTL evaluation and operators](concepts/dtl-evaluation-and-operators.md) | [Joins and transformation patterns](workflows/dtl-joins-and-transformation-patterns.md), [master data management](workflows/master-data-management.md) | +| Reuse a connector or implement an adapter | [Connectors and contracts](integrations/connectors-and-contracts.md) | [HTTP extensions and JSON protocols](integrations/extensions-and-json-protocols.md) | +| Automate through an API or find an implementation owner | [Node and Portal APIs and handoffs](integrations/apis-and-repository-handoffs.md) | [Architecture boundaries](architecture/hub-model-and-boundaries.md) | +| Diagnose or operate a subscription | [Monitoring and troubleshooting](operations/monitoring-and-troubleshooting.md) | [Deployment and durability](operations/deployment-and-durability.md), [security and secrets](operations/security-and-secrets.md) | +| Test and release integration configuration | [Configuration-change lifecycle](testing/configuration-change-lifecycle.md) | [Build an integration](workflows/build-an-integration.md) | +| Change or preview the reference documentation | [Documentation maintenance](workflows/documentation-maintenance.md) | The contributor path below | +| Qualify old capabilities, availability, or policies | [History and policies](references/history-and-policies.md) | [Legacy Databrowser and GDPR reference](references/legacy-data-access.md) | + +## Integration-learning path + +### 1. Learn the minimum vocabulary + +- An **entity** is a JSON-like collection of key-value pairs with reserved properties; Sesam consumes and produces streams of entities. +- A **dataset** is retained storage: an indexed entity log, not merely a transient pipe result. Content hashing appends a new version only when an entity is new or changed. +- A **pipe** combines a source, a transform chain, a sink, and a pump. Sources expose entity streams, transforms reshape them, sinks write results, and the scheduled pump moves the data. DTL is the primary documented transformation language. +- A **system** represents an external connection and centralizes shared connection configuration; documented services include connection pooling and rate limiting. + +Read [the data model](concepts/entities-datasets-and-identifiers.md) before choosing identifiers or namespaces, and [configuration contracts](configuration/pipes-and-systems.md) before copying options from a tutorial. These definitions come from the authored [building-blocks reference](../hub/documentation/building-blocks/index-building-blocks.rst). + +### 2. Establish an isolated learning subscription + +The authored [getting-started guide](../hub/guide-getting-started.rst) describes signup, connecting to a subscription, and a baseline configuration. However, its baseline-upload tutorial panel is commented out; do not assume there is an active three-step wizard. The [signup tutorial](../hub/tutorial-signup.rst) describes requesting trial access or obtaining an invitation to an existing subscription. Management Studio configures, manages, and administers subscriptions through the Portal; it is not launched by building this documentation. + +**Dated tutorial prerequisites, not verified third-party setup:** [Create your first synchronization](../hub/guide-create-first-synchronization.rst) still asks for a HubSpot app developer account, test account, and API key, including a `legacydocs.hubspot.com` link. Treat those account/authentication steps and screenshots as historical instructions to revalidate before use. The [Collect tutorial](../hub/tutorial-getting-started-collect.rst) uses `sesamcommunity/learn-sesam-crm:v1.1.2` for the Enhetsregisteret side and explicitly says that connection supplies mock test data, not live register data. Neither third-party availability nor credentials nor that image have been checked here. Use disposable data: the tutorial imports CRM data and later writes back to HubSpot. + +### 3. Trace the five conceptual phases + +Follow [Build an integration](workflows/build-an-integration.md) in the conceptual order **Collect → Enrich → Connect → Transform → Share**: + +1. **Collect:** keep source data, including a raw copy where replay/retention matters. +2. **Enrich:** add business typing, namespaces, and same-source relationship identifiers. +3. **Connect:** connect data across sources into appropriately scoped global datasets. +4. **Transform:** map the global data into the target schema at the preparation stage. +5. **Share:** deliver data in the target's required form. + +This sequence is the product model in [Creating a Dataflow in Sesam](../hub/sesam-dataflow.rst), not a claim that every integration has exactly five pipes. The introductory tutorial presents Collect/Share under Data Synchronization and Enrich/Connect/Transform under Data Management; its navigation order is not the conceptual processing order. + +### 4. Test before enabling real delivery + +Use [the configuration-change lifecycle](testing/configuration-change-lifecycle.md), not the Sphinx preview workflow. The documented local-test approach runs pipes until queues are drained, keeps outbound delivery disabled or unable to reach targets, and compares endpoint outputs with expected fixtures. The documented CI node must not write to external systems, and tests sharing that node must be serialized because the client overwrites its configuration. See [local testing](../hub/documentation/operations/testing-locally.rst) and [integration CI](../hub/documentation/operations/continuous-integration.rst). + +For a stalled or incorrect flow, take [the monitoring path](operations/monitoring-and-troubleshooting.md) before resetting offsets or retrying writes. The documented [pump execution dataset](../hub/documentation/operations/pump-execution.rst) records execution history and read/write errors, but is explicitly **not a stable public API**. The [troubleshooting reference](../hub/documentation/operations/troubleshooting.rst) distinguishes target/entity failures and calls for monitoring dead-letter data; a stopped flow is not automatically a transformation bug. + +## Documentation-contributor preview path + +**Verification scope:** the commands below are source-verified against [README.md](../README.md), [Makefile](../Makefile), [conf.py](../conf.py), [requirements.txt](../requirements.txt), and [pull-request CI](../.github/workflows/pull_request.yml). They were **not executed**. No dependencies were installed, no builds, servers, or containers were started, and no live APIs or external links were checked. + +### Prerequisites and the environment trap + +- **Python:** README says `pydata-sphinx-theme` needs at least Python 3.7. Both PR and merge workflows select **Python 3.9 on Ubuntu 22.04**. That is the concrete CI version evidence, not proof that every newer Python works with this older dependency set. +- **Pinned documentation dependencies:** install the repository requirements rather than silently upgrading Sphinx or the theme. The direct pins include `Sphinx==4.5.0`, `docutils==0.16`, `pydata-sphinx-theme==0.8.0`, `sesamclient==0.2.68`, and the documentation extensions. The pins are not a claim of a fully locked transitive environment. +- **`VIRTUAL_ENV` is required by configuration:** `conf.py` directly indexes `os.environ['VIRTUAL_ENV']` to exclude that environment directory. If it is absent, configuration loading can raise `KeyError`, even if `sphinx-build` is on `PATH`. Activating the local virtual environment supplies it. CI instead sets `VIRTUAL_ENV: venv` explicitly; that value alone does not create or activate a virtual environment. +- **Pandoc and LaTeX:** ordinary `make html` generates downloadable contracts before Sphinx. PR CI installs Pandoc **2.13** and `texlive-latex-base texlive-latex-extra texlive-plain-generic lmodern texlive-fonts-recommended ghostscript`. README's Ubuntu examples list Pandoc plus `texlive-latex-base` and `texlive-latex-recommended`; its macOS example is `brew install pandoc mactex`. These are authored/CI prerequisite evidence, not executed package-installation or cross-platform compatibility checks. + +From the repository root, the README's environment sequence is: + +```sh +# Source-verified instructions only; not executed here. +python3 -m venv .python_env +. .python_env/bin/activate +pip install --upgrade pip +pip install wheel +pip install -r requirements.txt +``` + +### Choose the build deliberately + +```sh +# Source-verified instructions only; not executed here. +make html +``` + +The ordinary target generates SaaS PDF/DOCX and partner DOCX downloads, then runs the HTML builder into `_build/html`. The contract path uses Pandoc and `pagebreak.lua`; PDF generation explains why a LaTeX toolchain is needed even for this HTML target. Make checks that `sphinx-build` can be found and defaults `SPHINXOPTS` to **`-W`**, so Sphinx warnings are errors. + +```mermaid +flowchart TD + Normal["make html"] --> Contracts["Generate SaaS PDF and DOCX plus partner DOCX"] + Contracts --> Sphinx["Sphinx HTML build with default -W"] + Shortcut["make html_no_saas"] --> Downloads["Touch the three download paths"] + Downloads --> Sphinx + Sphinx --> Output["_build/html"] +``` +*The Makefile's two HTML paths differ in download preparation, not in source-content exclusion.* + +For a shortcut preview: + +```sh +# Source-verified instructions only; not executed here. +make html_no_saas +``` + +**Do not interpret `html_no_saas` as a SaaS-content filter.** It touches `files/sesam-cloud-service-contract.pdf`, `files/sesam-cloud-service-contract.docx`, and `files/partner-agreement.docx`, then invokes the same Sphinx HTML command. It bypasses contract generation, invokes neither Pandoc nor LaTeX in its recipe, and supplies no content-exclusion option. `touch` leaves existing contents unchanged or creates empty files if absent; these downloads are not freshly validated contracts. Review the working tree and do not publish or commit placeholder downloads as genuine contracts. + +README suggests `SPHINXOPTS= make html_no_saas`. The empty assignment also removes the default `-W`; it is a weaker preview, **not equivalent to the PR gate**. Prefer keeping warnings-as-errors while fixing documentation. + +### Inspect and submit a documentation change + +Open `_build/html/index.html` after a future successful build. README also offers the following optional local serving command for search summaries: + +```sh +# Source-verified README option only; not executed here. +cd _build/html && python3 -m http.server +``` + +Before submitting, check the changed page's headings, cross-references, includes, downloads, code blocks, and relevant navigation in the rendered output. Keep authored `.rst`, labels, and presentation assets intact; do not replace authored content with build output or this wiki. For the full composition and publishing path, use [documentation maintenance](workflows/documentation-maintenance.md). + +The actual **PR check is `make html`**, not runtime integration tests. The Makefile offers `linkcheck`, `doctest`, and `coverage`, but PR CI does not invoke them, and `conf.py` does not enable the Sphinx doctest or coverage extensions. Do not report those checks as having run; link checking would also require external requests outside this research scope. On a push to `master`, [merge CI](../.github/workflows/merge.yml) builds HTML, packages/pushes documentation images, and deploys an Azure Container App. Local preview is not publication, and neither documentation build validates third-party tutorial setup nor proves runtime correctness. diff --git a/openwiki/references/history-and-policies.md b/openwiki/references/history-and-policies.md new file mode 100644 index 00000000000..5435d2fbc64 --- /dev/null +++ b/openwiki/references/history-and-policies.md @@ -0,0 +1,156 @@ +--- +type: reference-guide +title: Changelogs, deprecations, discontinued services, and policies +description: Navigate Sesam's historical and legal references without mistaking old capabilities, roadmap plans, or commercial terms for current runtime guarantees. Includes end-of-life evidence and a method for qualifying availability, experimental features, and pricing. +tags: [references, history, deprecations, availability, pricing, policies] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-b5aec4802496a78d4d532ddd + resource: repo://community.rst + - id: openwiki-source-4bbe4e83d74f3fe902420d24 + resource: repo://hub/changelog.rst + - id: openwiki-source-bd024a2a6f605b5e87c13edc + resource: repo://hub/databrowser.rst + - id: openwiki-source-94c0ec50b6458d32bee9aa4b + resource: repo://hub/deprecations.rst + - id: openwiki-source-c5c1512bb5c6ab896e1c0669 + resource: repo://hub/discontinued-services.rst + - id: openwiki-source-b16009034f286ce228a41a35 + resource: repo://hub/features/compaction-feature.rst + - id: openwiki-source-d496de71635dcd7d5827ad5d + resource: repo://hub/features/durable-data.rst + - id: openwiki-source-b7fe0a062d08b595ab024630 + resource: repo://hub/features/integrated-search.rst + - id: openwiki-source-6903130fd4e1c31a5b69b78a + resource: repo://hub/features/metrics-api.rst + - id: openwiki-source-b8c1aa2cd0b984f516a8bc50 + resource: repo://hub/features/software-channels.rst + - id: openwiki-source-293c6065c127d8687c065bd0 + resource: repo://hub/gdpr-platform.rst + - id: openwiki-source-9539e9c49e7b9e9a0bf96c74 + resource: repo://hub/index-developer.rst + - id: openwiki-source-bcbee3728e5f87e8d24258b4 + resource: repo://hub/index-management-console.rst + - id: openwiki-source-a8d5beddbb38f9b4d3ccda2f + resource: repo://hub/legal-sla.rst + - id: openwiki-source-c14aa78199fe4f034432e902 + resource: repo://hub/open-sesam.rst + - id: openwiki-source-5061e0804c08ee434d45bc56 + resource: repo://hub/roadmap.rst + - id: openwiki-source-0cf45857f139d7ef03466d34 + resource: repo://legal-dap.rst + - id: openwiki-source-4b9fcd10d06cb399994cfd34 + resource: repo://legal-service.rst + - id: openwiki-source-832f2a6f7b0fb248ce435fa5 + resource: repo://partner-agreement-part-1.rst + - id: openwiki-source-e2f40343addf63e273b32b32 + resource: repo://partner-agreement-part-2.rst + - id: openwiki-source-5a3af5ced3903ed7fb8ccca4 + resource: repo://partner-agreement.rst + - id: openwiki-source-c7a64279defb397411144f15 + resource: repo://pricing.rst + - id: openwiki-source-b9d1102152dd5273d335e6c1 + resource: repo://privacy-policy.rst + - id: openwiki-source-d7754cc8baaccb199775b869 + resource: repo://talk/index.rst + - id: openwiki-source-612ac4323087d90e2cd678da + resource: repo://terms.rst +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Changelogs, deprecations, discontinued services, and policies + +Use these sources to **qualify** a technical reference, not replace it. A changelog records a dated change; a retained guide may describe a retired service; a roadmap mixes intentions with availability notes; a contract describes terms rather than proving runtime behavior. Start with the focused feature/API/configuration documentation, then add the history, deployment scope, and commercial or legal qualifications relevant to the question. + +The developer documentation explicitly warns that features marked **Experimental** can change or disappear without warning and must not be used in production. It also routes readers separately to deprecated features and discontinued services. Both retirement indexes say not to use their contents. See [developer entrypoint, lines 5–25](../../hub/index-developer.rst#L5-L25), [`deprecations`, lines 1–16](../../hub/deprecations.rst#L1-L16), and [discontinued services, lines 5–13](../../hub/discontinued-services.rst#L5-L13). + +## Task-to-source map + +Labels below are exact RST labels where present. Otherwise, use the named heading; do not invent a label or infer a software version from a heading date. + +| Task | Source and section/label | What it establishes | +|---|---|---| +| Check when wording, a default, or support changed | [`hub/changelog.rst`](../../hub/changelog.rst); the relevant `changelog_…` label, with its exact spelling | Dated additions, fixes, breaking changes, warnings, and removals. Read the linked technical section too. | +| Identify unsafe legacy operators or configuration | [`hub/deprecations.rst`](../../hub/deprecations.rst#L1-L18), label `deprecations`; operator/feature labels within it | Deprecated documentation remains available for interpretation of old configurations, not recommendation for new ones. | +| Check a retired service | [`hub/discontinued-services.rst`](../../hub/discontinued-services.rst#L15-L27), labels `sesam_talk_discontinue`, `open_sesam_discontinue`; see the end-of-life table below | Service retirement, separate from individual operator deprecation. | +| Separate plans from delivered features | [`hub/roadmap.rst`](../../hub/roadmap.rst#L1-L48), label `roadmap`; headings **Planned**, **Public Preview**, **Generally Available**, **Discontinued** | Subject-to-change plans and explicitly qualified availability notes. | +| Qualify rollout timing for an installation | [`hub/features/software-channels.rst`](../../hub/features/software-channels.rst#L1-L22), labels `software-channels`, `software_channels` | Phased release channels and promotion caveats, not a guarantee that every subscription received a dated change immediately. | +| Check subscription charges and environment eligibility | [`pricing.rst`](../../pricing.rst#L1-L105), labels `pricing`, `pricing-developer`, `pricing-production`; headings **Invoicing**, **Due date**, **Price adjustment** | Subscription compute/data/SLA pricing, footnotes, payment terms, and adjustments. Feature-specific consumption notes belong in the feature reference. | +| Locate service-level targets and remedies | [`hub/legal-sla.rst`](../../hub/legal-sla.rst): **Availability for the Services**, **Capacity requirements**, **Requirements for processing and reaction times**, **Standardized penalties** | SLA definitions, scopes, exclusions, and targets; not pipe execution or durability semantics. | +| Locate access/use terms and service specification | [`terms.rst`](../../terms.rst#L12-L56): **1.1. Purpose**, **1.2. Description of the Services**; [`legal-service.rst`](../../legal-service.rst#L7-L93): **1. Specification of the Services**, **2. Service level agreement and standardized refunds** | Customer/service relationship and contractual service description. | +| Review processing of customer personal data | [`legal-dap.rst`](../../legal-dap.rst#L7-L85): **1. Definitions**, **2. Processing of Personal Data on the Controller's behalf**, **4. Security**, **5. Subprocessing**, **6. Data Subject Rights**, **7. Personal Data Breach**, **9. Deletion or return of the Personal Data**, **10. Audit rights** | Data processing agreement (DPA); the filename is `legal-dap.rst`, not `legal-dpa.rst`. Sections 5–10 are at [lines 268–415](../../legal-dap.rst#L268-L415). | +| Select the appropriate privacy notice | [`privacy-policy.rst`](../../privacy-policy.rst): **[SESAM Privacy Notice](../../privacy-policy.rst#L18-L35)**, **[SESAM Privacy Policy](../../privacy-policy.rst#L126-L145)**, **[Service Privacy Policy](../../privacy-policy.rst#L308-L353)**, **[Recruiting Privacy Notice](../../privacy-policy.rst#L523-L529)** | Notices for different collection purposes; do not apply a notice's retention wording to all dataset history. | +| Find partner/legal inputs or community guidance | [`legal.rst`](../../legal.rst#L7-L22): legal index and **Downloads**; [`partner-agreement.rst`](../../partner-agreement.rst#L1-L5): assembled agreement; [`community.rst`](../../community.rst#L9-L42), label `community` | Contract navigation, partner collaboration terms, and separate unofficial community resources. Partner parts are explained below. | + +## How to qualify current reference wording + +1. **Identify the precise object and scope.** Distinguish an operator from a service, Management Console from Management Studio, a cloud subscription from self-hosting, and an available feature from an enabled one. Cite the technical section that owns the behavior. +2. **Read focused history in both directions.** An “added” entry is insufficient if a later entry changes defaults, marks it experimental, deprecates it, or removes support. Preserve “added documentation” versus “added support”: for example, [`changelog_2026-03-30`](../../hub/changelog.rst#L24-L29) says documentation was added for the replicated dataset sink, not that the sink necessarily first existed on that date. +3. **Preserve the status words and migration caveats.** Use “documented as experimental,” “deprecated,” “announced end-of-life,” or “removed support” as appropriate. Do not turn deprecated into proven removal, or a future-dated warning into proof of an actual shutdown on that date. +4. **Resolve material conflicts with the narrower reference and explicit later history.** Record what each source says rather than silently modernizing an old guide. Use focused history only as needed, and keep exact labels: this changelog uses both underscore and hyphen date-label forms. +5. **Separate documented change dates from installation state.** Do not use file dates or Sphinx release metadata as product versions. The [software-channel reference, lines 9–22](../../hub/features/software-channels.rst#L9-L22) documents a phased rollout: `weekly-prod` for production, `weekly` for staging, `nightly` for development, and `latest` for development with additional caution. Promotion can be withheld; build dates indicate minimum, not maximum, age. Downgrades are not supported. Verify the installation and channel before attributing an observed behavior to a note. + +Useful examples of qualification, not a release-note inventory: + +- **Deprecation does not erase the old explanation.** [`changelog_2025-12-22`](../../hub/changelog.rst#L58-L62) deprecates `ni-collapse` and `ni-expand`. Their retained sections, labels `ni_collapse_dtl_function` and `ni_expand_dtl_function`, still describe them as experimental and intended for `global_defaults.symmetric_namespace_collapse=true` ([lines 199–220](../../hub/deprecations.rst#L199-L220), [260–279](../../hub/deprecations.rst#L260-L279)). That is historical context, not an endorsed production option. +- **Migration advice is scoped.** [`changelog_2022_01_25`](../../hub/changelog.rst#L966-L971) deprecates the lower keys, upper keys, and undirected graph transforms, but names DTL transforms as replacements for the lower/upper keys functionality, not for undirected graph. Do not extend that replacement claim to undirected graph. [`changelog_2021_12_20`](../../hub/changelog.rst#L1006-L1013) says new pipes should use `hops` `subsets` rather than deprecated `prefilters`, and changing an existing pipe may require a reset. +- **A roadmap plan can be overtaken without granting broader semantics.** The roadmap retains **Permanent deletion of history for selected entities (Q4 2025)** as a plan ([lines 27–34](../../hub/roadmap.rst#L27-L34)). Later, [`changelog_2026-04-07`](../../hub/changelog.rst#L17-L21) records `compaction.retract`. The focused [`compaction_retract_detail` reference, lines 120–137](../../hub/features/compaction-feature.rst#L120-L137) says it removes earlier versions only in the pipe's sink dataset, retaining the current version and leaving deletion state unchanged. Upstream datasets and external consumers are unchanged. Do not summarize this as universal erasure of an entity. + +## Material end-of-life references + +Retained instructions, schemas, and API descriptions in these areas are historical navigation, not evidence that the service remains available. + +| Capability | Exact documented status/date caveat | Evidence and destination | +|---|---|---| +| **Databrowser** | End-of-life was announced for **December 31st 2023**; it is superseded by **Integrated Search**. | [`databrowser` warning, lines 1–15](../../hub/databrowser.rst#L1-L15); [`changelog_2022_03_21`, lines 921–927](../../hub/changelog.rst#L921-L927). For retained access/auth/API material, use [Legacy data access](legacy-data-access.md). | +| **GDPR Platform** | The warning and **2025-04-02** entry scheduled end-of-life for **June 30th 2025**. The **2025-04-11** entry then records **early retirement**. Do not present the original schedule as the final retirement timing. | [Platform warning and legacy navigation, lines 1–18](../../hub/gdpr-platform.rst#L1-L18); [`changelog_2025-04-02` and `changelog_2025-04-11`, lines 151–165](../../hub/changelog.rst#L151-L165). No replacement is named in those entries. | +| **Notifications feature** | The **2025-04-02** entry announces end-of-life **June 30th 2025**, superseded by **Metrics**. This is the announcement, not a separate confirmation of execution on that date. | [`changelog_2025-04-02`, lines 159–165](../../hub/changelog.rst#L159-L165); successor label `metrics-api` in [Metrics](../../hub/features/metrics-api.rst#L1-L42). Do not infer that the successor lacks custom notifications: its documented bundle includes them. | +| **Management Console / multitenancy** | **2025-04-11** records removal of support for both. The Console warning identifies it as part of multitenancy; the roadmap marks multitenancy discontinued. | [`changelog_2025-04-11`, lines 151–157](../../hub/changelog.rst#L151-L157); [`management_console`, lines 1–17](../../hub/index-management-console.rst#L1-L17); [roadmap, lines 178–191](../../hub/roadmap.rst#L178-L191). This is not a claim that all Management Studio/UI functionality was removed. | +| **Sesam Talk** | The Universal Semantic Data Synchronization service was discontinued in **November 2024**. Its landing page says it should not be used. | [`sesam_talk_discontinue`, lines 15–20](../../hub/discontinued-services.rst#L15-L20); [Talk landing page, lines 1–9](../../talk/index.rst#L1-L9). Do not import its managed-service promises into Data Hub runtime guarantees. | +| **Open Sesam** | Discontinued and should not be used. The cited notices give **no retirement date**. Its historical purpose was free hosting, enrichment, and publication of data. | [`open_sesam_discontinue`, lines 22–27](../../hub/discontinued-services.rst#L22-L27); [Open Sesam notice, lines 9–16](../../hub/open-sesam.rst#L9-L16). Old sign-up/publication instructions are not a current free-service offer. | + +## Roadmap availability is not a promise to ship + +The roadmap explicitly says it may change. **Planned** includes self-hosted clustered architecture **(Q2 2025)**, resource optimization on multi compute **(Q3 2025)**, selected-entity history deletion **(Q4 2025)**, and high-level configuration **(2026)**. Preserve these as the document's planning horizons, not release deadlines or proof of delivery ([lines 7–43](../../hub/roadmap.rst#L7-L43)). + +**Public Preview** is described as available for experimental use. It retains exploratory prose alongside notes that TTL on deletes, webhooks, and connectors are now available; property lineage is now offered within Integrated Search ([lines 45–94](../../hub/roadmap.rst#L45-L94)). For TTL semantics, follow `changelog_2024_11_27` and the compaction reference rather than treating preview prose as a complete retention specification. + +Even **Generally Available** needs its explicit scope. The roadmap's availability notes qualify Metrics, Integrated Search, and self-service VPN by **Clustered Architecture**; say **all cloud subscriptions** now run clustered architecture; and say Durable Data is available on **all cloud subscriptions** ([lines 96–176](../../hub/roadmap.rst#L96-L176)). None of that alone establishes that the planned self-hosted clustered variant shipped. Use [Deployment and durability](../operations/deployment-and-durability.md) and [Monitoring and troubleshooting](../operations/monitoring-and-troubleshooting.md) for operational details. + +## Keep commercial and legal evidence in its lane + +### Pricing and paid-feature notes + +The subscription reference distinguishes developer environments from production/test environments. Developer environments serve a single developer or CI, are cloud-only and restricted, lack backup/VPN/SLA support, and cannot host test, staging, or production. Production/test environments document automated backup and support for SLA and VPN; the backup footnote says geo-replicated backup is included in cloud environments ([`pricing-developer` and `pricing-production`, lines 10–79](../../pricing.rst#L10-L79)). **Support for SLA** does not by itself establish the selected agreement or entitlement. + +Do not copy an old estimate or fee into timeless technical prose. For example, the [Developer Pro roadmap text, lines 156–166](../../hub/roadmap.rst#L156-L166) retains an estimated monthly price alongside an availability note, whereas `pricing.rst` has a separate subscription table. Read the applicable pricing table, currency, footnotes, payment terms, and **Price adjustment** section; subscription fees can be adjusted under that section ([lines 97–105](../../pricing.rst#L97-L105)). Confirm applicable commercial terms rather than reconciling them by inference here. + +Feature badges are not complete cost models: + +- [Durable Data](../../hub/features/durable-data.rst#L68-L89), labels `durable_data` / `durable-data`, is paid; `metadata.durable` defaults to `false`, and activation increases the data consumption of durable pipes by **3x**. Its [use-case description, lines 9–24](../../hub/features/durable-data.rst#L9-L24) describes reduced data-loss risk. Do not infer zero loss or exactly-once delivery from it. +- [Integrated Search, lines 1–16](../../hub/features/integrated-search.rst#L1-L16), label `integrated_search`, is marked free but documents **2x** data size for global pipes when enabled, and clustered-architecture availability. +- [Metrics, lines 1–42](../../hub/features/metrics-api.rst#L1-L42), labels `metrics-api` / `metrics_api`, is marked free but also directs readers to the enablement steps to check the monthly-price effect. Preserve both statements rather than asserting universal zero cost. + +### SLA, service terms, DPA, privacy, and partners + +Keep these as separate review inputs, not a paraphrased contract: + +- **SLA:** `hub/legal-sla.rst` states a **99.5% uptime target per installation**, defines downtime and exclusions, and specifies planned maintenance ([lines 5–25](../../hub/legal-sla.rst#L5-L25)). Its reaction/correction-time section distinguishes starting investigation from restoring normal service, uses stated business-hour/holiday qualifications, and assigns priority through the vendor ([lines 142–162](../../hub/legal-sla.rst#L142-L162)). Read the actual selected SLA and remedies; neither this target nor the pricing response-time row proves per-request latency, recovery-point objectives, or pipe success. +- **Service terms and specification:** `terms.rst` **1.2** describes access to evolving service functionality rather than a right tied to a specific software version ([lines 46–56](../../terms.rst#L46-L56)). Use `legal-service.rst` for the contractual service catalogue, reconstruction, customer/network responsibilities, and error-reporting procedure, not as an independent implementation specification ([lines 30–93](../../legal-service.rst#L30-L93)). +- **DPA:** The document applies if/when the service processes customer personal data and defines the Customer as Controller and Vendor (or Subprocessor) as Processor ([lines 7–42](../../legal-dap.rst#L7-L42)). Its security, subprocessing, breach, audit, and cessation deletion/return sections are legal review destinations. Do not translate cessation obligations into a dataset compaction timer or assume the retired GDPR Platform is required for DPA applicability. +- **Privacy:** The overview distinguishes collection purposes and explicitly says the policies were last updated **September 2020** ([lines 5–16](../../privacy-policy.rst#L5-L16)); that is a notice caveat, not a product version. **Service Privacy Policy** distinguishes service personal data from general customer/contact data and states that relevant privacy provisions of the Terms of Service, including the DPA, take precedence in inconsistencies ([lines 308–353](../../privacy-policy.rst#L308-L353)). Follow the appropriate notice without exporting its retention periods to unrelated data. +- **Partner/legal inputs:** The assembled partner agreement includes both source parts. [Part 1](../../partner-agreement-part-1.rst#L36-L64) covers **Purpose** and the collaboration framework, with **Collaborative Results and Discount** at [lines 108–146](../../partner-agreement-part-1.rst#L108-L146). [Part 2](../../partner-agreement-part-2.rst#L19-L102) continues with **Partner Obligations**, **Sesam's Obligations**, and **Financing and Fees**, then [intellectual-property and confidentiality provisions, lines 104–180](../../partner-agreement-part-2.rst#L104-L180). These govern commercial collaboration; they are not connector runtime contracts. [Community guidance](../../community.rst#L15-L42) instead points to sharing guidelines, connector repositories, informal Q&A, feature requests, and unofficial Slack discussions—not contractual support commitments. + +## Applying this in documentation maintenance + +Before publishing a historical or availability statement, check: + +- Does the citation include the local source, exact label or heading, and relevant lines? +- Is the statement about shipped behavior, documentation added, a rollout, a plan, or an announcement? +- Are experimental, deprecation, end-of-life, architecture, enablement, and migration caveats preserved? +- Are prices/consumption effects separate from guarantees, and legal terms left for review rather than reinterpreted? +- Is a retained legacy example clearly historical, with a named successor only where the source supplies one? + +Carry those qualifications into [Documentation maintenance](../workflows/documentation-maintenance.md), [DTL evaluation and operators](../concepts/dtl-evaluation-and-operators.md), [Connectors and contracts](../integrations/connectors-and-contracts.md), and [Security and secrets](../operations/security-and-secrets.md). Use the [Quickstart](../quickstart.md) for active setup guidance rather than retired-service onboarding instructions. diff --git a/openwiki/references/index.md b/openwiki/references/index.md new file mode 100644 index 00000000000..dcb8f9ffb1c --- /dev/null +++ b/openwiki/references/index.md @@ -0,0 +1,4 @@ +# Files + +- [Changelogs, deprecations, discontinued services, and policies](history-and-policies.md) - Navigate Sesam's historical and legal references without mistaking old capabilities, roadmap plans, or commercial terms for current runtime guarantees. Includes end-of-life evidence and a method for qualifying availability, experimental features, and pricing. +- [Legacy Databrowser and GDPR Platform reference](legacy-data-access.md) - Historical contracts for Databrowser configuration and authentication, and GDPR Platform subject requests, automation, and encryption. Includes end-of-life notices, internal API limits, and unresolved documentation discrepancies. diff --git a/openwiki/references/legacy-data-access.md b/openwiki/references/legacy-data-access.md new file mode 100644 index 00000000000..07cf36abdef --- /dev/null +++ b/openwiki/references/legacy-data-access.md @@ -0,0 +1,302 @@ +--- +type: historical-reference +title: Legacy Databrowser and GDPR Platform reference +description: Historical contracts for Databrowser configuration and authentication, and GDPR Platform subject requests, automation, and encryption. Includes end-of-life notices, internal API limits, and unresolved documentation discrepancies. +tags: [legacy, data-access, privacy-workflows, authentication, internal-api] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-4e7d8a15e6785869396f3776 + resource: repo://.github/workflows/pull_request.yml + - id: openwiki-source-4bbe4e83d74f3fe902420d24 + resource: repo://hub/changelog.rst + - id: openwiki-source-bdc6f7cf189904a45e19f487 + resource: repo://hub/databrowser-api.rst + - id: openwiki-source-c1cd4d34f6d3f6d5ad5eae4a + resource: repo://hub/databrowser-auth.rst + - id: openwiki-source-d5d4251f2b61693ee6a80deb + resource: repo://hub/databrowser-authentication_providers_examples_and_docs-for_include.rst + - id: openwiki-source-83e28e284310ec967050a7ea + resource: repo://hub/databrowser-guide.rst + - id: openwiki-source-bd024a2a6f605b5e87c13edc + resource: repo://hub/databrowser.rst + - id: openwiki-source-94c0ec50b6458d32bee9aa4b + resource: repo://hub/deprecations.rst + - id: openwiki-source-df20d8b96423afbf4f8719aa + resource: repo://hub/gdpr-data-access-portal.rst + - id: openwiki-source-c1e1885641cb3c1b717bfb78 + resource: repo://hub/gdpr-data-types-purposes-configuration.rst + - id: openwiki-source-2daff0513c0f424cb4db13db + resource: repo://hub/gdpr-getting-started.rst + - id: openwiki-source-7ab079e1e5b6c3fee7362100 + resource: repo://hub/gdpr-platform-configuration.rst + - id: openwiki-source-29d1f3105ec48034a1822d78 + resource: repo://hub/gdpr-platform-developer-docs.rst + - id: openwiki-source-293c6065c127d8687c065bd0 + resource: repo://hub/gdpr-platform.rst + - id: openwiki-source-927e754308050c77a42a0216 + resource: repo://hub/json-push.rst + - id: openwiki-source-7af7fec6efb787f93bb5b3b9 + resource: repo://hub/swagger_databrowser.yaml + - id: openwiki-source-23775c3de52f3ab95a13cb8b + resource: repo://README.md +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Legacy Databrowser and GDPR Platform reference + +> **Historical lookup only.** Databrowser's documented end-of-life is **December 31st 2023**; GDPR Platform's documented end-of-life is **June 30th 2025**. The Databrowser warning references the **2022-03-21** changelog, which names Integrated Search as its successor. The GDPR Platform warning references **2025-04-02**. A later **2025-04-11** entry records **early retirement** of GDPR Platform, so the scheduled June date must not be read as a guarantee of availability until then. Both products are listed under deprecations, whose instruction is not to use these features. +> +> Sources: [Databrowser warning](../../hub/databrowser.rst), [GDPR Platform warning](../../hub/gdpr-platform.rst), [referenced and later changelog entries](../../hub/changelog.rst), [deprecations](../../hub/deprecations.rst). + +This page preserves the documented responsibilities and integration boundaries for interpreting old configurations and workflows. It is not an adoption guide, a promise that an endpoint still exists, or legal compliance advice. Evidence here is repository documentation and the checked-in API description, not inspection of sibling service implementations. + +**Two kinds of contract must stay distinct:** + +- The narrative guides describe administrator configuration and GDPR Platform dataset integration contracts. +- [`swagger_databrowser.yaml`](../../hub/swagger_databrowser.yaml) explicitly says its endpoints are **only for internal use and can be changed or removed at any time**. The [Databrowser guide](../../hub/databrowser-guide.rst) embeds this checked-in specification. Its routes are historical UI/backend reference, not a supported public SDK surface. + +## Historical ownership and state + +The [GDPR Platform configuration overview](../../hub/gdpr-platform-configuration.rst) describes three parts: + +| Part | Historical responsibility | +| --- | --- | +| Management Studio | Operator configuration and access to the platform datahub, reached through a GDPR subscription in the Sesam portal. | +| GDPR Platform datahub | Collection, connection, and storage of platform data, with datasets and pipes used for automation. | +| GDPR data access portal, or DAP | Public-facing subject interface for requests, data, and consents. | + +Databrowser documentation describes Solr-backed authorization and `databrowser.ini` configuration; its guide describes Redis as the owner of GUI configuration changes. These are different kinds of state from the GDPR datasets and the subject's private key. Do not treat the Sesam operator role, a subject login, and possession of a request's key pair as interchangeable credentials. + +## Databrowser configuration and administrator entrypoints + +### File layers and GUI state + +The [configuration file API narrative](../../hub/databrowser-api.rst) defines this file precedence, from earlier to later processing: + +| Layer | Location | Override behavior | +| --- | --- | --- | +| Installation file | `/sesam/conf/databrowser.ini` | Overridden by uploaded settings. | +| Additional uploaded layers | `/sesam/data/conf/1/databrowser.ini`, `/sesam/data/conf/2/databrowser.ini`, and so on | Numeric order; a higher-numbered folder overrides a lower-numbered one. This upload surface is not exposed in the end-user GUI. | +| End-user uploaded file | `/sesam/data/databrowser.ini` | Processed last and can override all additional uploaded layers. Its upload API is exposed in the GUI. | + +The [guide's configuration page](../../hub/databrowser-guide.rst#L581-L612) separately lists shared defaults, installation-specific files, and the connected Redis server. GUI changes are stored in Redis, and the Redis upload page supports bulk editing or copying settings between instances. The cited narrative does **not** establish Redis's precedence relative to every numbered file layer; avoid inventing a single merged precedence order. + +The narrative's GET/PUT/DELETE file API requires a JWT in the `Authorization` header, enabled JWT authentication, and an `Admin` role. Its example describes a token generated for the configured subscription. Embedded tokens are deliberately not reproduced here. + +### Preserve the endpoint discrepancy + +| Surface in the source | End-user file | Additional layer | +| --- | --- | --- | +| Narrative endpoint declaration | `/configuration/databrowser.ini` | `/configuration//databrowser.ini` | +| Narrative upload/download example | — | `/configuration/conf/1/databrowser.ini` | +| Internal Swagger route | `/configuration/{config_file_path}` | `/configuration/conf/{config_layer}/{config_file_path}` | + +The narrative declaration omits `/conf/`, whereas its own example and Swagger include it. This reference records the disagreement; it does not silently “fix” the narrative or assert which route an old deployment implemented. Sources: [narrative declaration and example](../../hub/databrowser-api.rst#L33-L69), [internal file routes](../../hub/swagger_databrowser.yaml#L430-L569). + +Within the **internal specification**: + +- GET returns an empty response body if a configuration file does not exist. +- PUT/DELETE can return HTTP 200 **with configuration errors**. `ConfigFilePutOrDeleteResponse` carries `is-valid-config`, `current-user-would-be-locked-out`, and `config-errors`; errors concern the full configuration set, not just the changed file. +- HTTP 403 describes refusing a change that would prevent the current user from modifying configuration again. +- `validate_only=true` runs validation without changing configuration. +- `config_file_path` represents a remainder-of-path that OpenAPI cannot accurately model. The description explicitly says not to URL-escape it; the example includes nested `css/temp/test.css` segments. This is an internal route convention, not general URL-encoding guidance. + +Sources: [route responses](../../hub/swagger_databrowser.yaml#L430-L569), [response schema](../../hub/swagger_databrowser.yaml#L1109-L1148), [parameters](../../hub/swagger_databrowser.yaml#L1227-L1256). + +For historical diagnostics, `/admin_index` leads to configuration, data-type, and logging pages. The guide says GUI log-level changes are not persisted and reset on server restart; permanent logging changes belong in installation-specific `production.ini`. See [admin pages](../../hub/databrowser-guide.rst#L560-L644). + +## Authentication is not authorization + +### Databrowser identity and Solr filtering + +The [authentication narrative](../../hub/databrowser-auth.rst) selects authentication with `[main] use_x_remote_user_header`: + +- **False:** redirect the browser through an external OpenID Connect provider. +- **True:** trust `X-Remote-User`. The documentation restricts this to a webapp safely hidden behind an authenticating proxy such as httpd or nginx that sets the header. + +For header authentication, Solr is searched using `[authentication] x_remote_user_username_psi`; email fields configured by `x_remote_user_email_psi` supply the session's `email`. If no email is found and the username looks like an email address, that username is used instead. + +Authorization uses the session email to search the fields configured by `[search fields] email`. IDs of matching items and IDs referenced through `psi*` fields become the session's `psis` list. + +| `[authentication] authorization model` | Documented visibility | +| --- | --- | +| `OPEN` | Items without configured `AUTH_FIELDS` fields are available to all users. | +| `AUTHENTICATED` | Authenticated users can see items without those fields; anonymous users see none. | +| `AUTHORIZED` | Authenticated users are restricted to items whose authorization or ID fields match session `psis`. `AUTH_FIELDS`, configured by `[search fields] auth`, must be set. The detailed description also requires the configured authorization fields to be present. | + +For `OPEN` and `AUTHENTICATED`, if `AUTH_FIELDS` is configured, searches exclude items containing any of those fields. These mode differences are material when interpreting a legacy configuration; authentication alone is not a subject-data isolation policy. See [identity mapping and authorization rules](../../hub/databrowser-auth.rst#L26-L151). + +### Sesam JWT login + +`[authentication] jwt_authentication_subscription_ids` enables Sesam-portal JWT authentication for one or more subscriptions; `*` accepts JWTs from all subscriptions. Ordinary JWT users still use Solr-based authorization. A JWT granting `group:Admin` permits visibility of all Solr documents and editing portal configuration. + +The narrative describes `/jwt_login` GET as a token-entry form and POST as parsing the token, storing credentials in the **server-side HTTP session**, and redirecting to the front page. Swagger further labels GET as internal development/testing and POST as Management Studio access. These descriptions do not turn JWT login into an external API commitment. Sources: [JWT narrative](../../hub/databrowser-auth.rst#L154-L195), [internal login specification](../../hub/swagger_databrowser.yaml#L70-L84). + +### Shared OIDC provider documentation + +Both Databrowser authentication and GDPR Platform configuration include the same [provider documentation file](../../hub/databrowser-authentication_providers_examples_and_docs-for_include.rst). Consequently, provider-option documentation is shared, and the Databrowser end-of-life warning embedded in that include must not be mistaken for GDPR Platform's separate retirement date. + +`[authentication] authentication_providers` is a list with: + +| Option | Contract | +| --- | --- | +| `provider_id` | User-selected and unique within the list. Must match the callback's provider ID. | +| `consumer_key`, `consumer_secret` | Registration ID and secret used by the DAP with the provider. | +| `openid_configuration_url` or `openid_configuration` | Discovery URL or inline provider metadata. The docs prefer discovery over inline metadata. | +| `user_id_attribute` | UserInfo claim used as `user_id`, default `sub`; examples recommend `email` for Google and `upn` for Microsoft. | +| `contactinfo_attribute` | Contact claim, default `email`. | +| `allow_unverified_email` | Default **true**; can be false for email-based providers that do not already verify addresses. | +| `use_userinfo_endpoint` | Can be false where UserInfo is unnecessary or unavailable; identity is then extracted from the IDToken. | +| `scope` | Default `openid profile email`. | + +The documented flow redirects the subject to the provider, then returns an authorization code to `/login_callback/`. A provider's allowed post-logout redirect uses the backend base URL. No provider secrets or account-specific backend URLs are copied here. See [shared include](../../hub/databrowser-authentication_providers_examples_and_docs-for_include.rst#L7-L115) and [including GDPR section](../../hub/gdpr-platform-configuration.rst#L180-L194). + +## GDPR setup: types, purposes, contacts, and subject identity + +### Configuration model + +The [types and purposes guide](../../hub/gdpr-data-types-purposes-configuration.rst) describes an Excel setup template with `Purpose` and `Data type` sheets: + +- **Purposes** supply processing-activity descriptions, legal-ground metadata, language, source/sharing information, retention-day metadata, and criteria. A purpose appears as a navigation tab; a consent-type purpose may be opted into or out of. These are configured product fields, not this page's legal conclusions or a verified automatic retention-enforcement mechanism. +- **Data types** describe the source system, type, description, `Personal` or `Related` level, and responsible `Contact` values. A generated purpose matrix uses `x` marks and permits multiple purposes per type. +- Purpose and data-type `ID` cells are computed and must not be manually edited. The data-type guide says computed IDs have a maximum of 32 characters, while its `Type`/`System` descriptions say their combination must be **less than 32**, including whitespace. Keep this wording distinction visible rather than choosing a repaired boundary. +- `Contact` can be a comma-separated email list with no whitespace around commas. These contacts route access and change notifications. + +Uploading the setup updates platform data structures and the subject UI, potentially after a few minutes. Operators can inspect `gdpr-data-type` and `gdpr-purpose`. The setup file can instead be fetched from a shared URL on a configurable cron schedule, defaulting to midnight UTC. Sources: [setup model and update behavior](../../hub/gdpr-data-types-purposes-configuration.rst), [URL and schedule](../../hub/gdpr-platform-configuration.rst#L58-L101). + +### Subject login and request-time fields + +The default GDPR DAP login sends a one-time password to the supplied email address or phone number. The portal guide says it expires when the session ends or after an idle interval, requiring login again; it supplies no fixed timeout value. OIDC is an alternative described above. + +If an OIDC identity lacks a notification destination, `[gdpr] access_request_contactinfo` can require contact information at request time. Supported configuration values are `email` and `mobile_phone`; when multiple values are listed, the subject chooses a type. Validation uses `[authentication] otp_valid_email_address_regexp` and `otp_valid_mobile_phone_number_regexp`. `[gdpr] extra_access_request_fields` adds required subject-identifier fields, empty by default, with header/tooltip text resolved through `[localization]`. + +The old documents also use different URL forms: the configuration guide describes `https://selected-domain-name.sesamdata.com`, while the portal guide describes a `gdpr-dap-subscription_id` backend on the configured domain or `sesam.cloud`, discoverable under Network → Data Access Portal backend. Do not derive a universal host-naming rule from these examples. Sources: [portal login](../../hub/gdpr-data-access-portal.rst#L7-L29), [domain setting](../../hub/gdpr-platform-configuration.rst#L49-L56), [contact and extra-field settings](../../hub/gdpr-platform-configuration.rst#L197-L278). + +## Historical subject request flow + +```mermaid +sequenceDiagram + participant S as Subject browser + participant D as Data access portal + participant G as GDPR Platform + participant H as Responsible handler + participant I as Integrated source datasets + S->>D: Authenticate with OTP or configured OIDC + S->>D: Make access request with public key + D->>G: Register access request + alt Manual structured data handling + G-->>H: Notify configured contacts + H->>G: Download request Excel template + H->>H: Collect source rows and fill sheets + H->>G: Upload completed template + else Automated structured data handling + I->>G: Supply data through custom-subject-data + G->>G: Match Personal and Related data to subject + end + G->>G: Encrypt delivered data with subject public key + G-->>D: Make encrypted subject data available + opt Manual upload with registered subject email + G-->>S: Availability notification after half-hour delay + end + S->>D: Return to access requested data + S->>S: Decrypt with local private key +``` +*Historical access-request flow described by the portal and automation guides; unstructured data still requires vetting, as explained below.* + +### Manual access requests + +An access request notifies all unique contacts in the setup spreadsheet. Handlers must be registered Sesam portal users, members of the GDPR Platform, and granted **GDPR operations** to download and upload the request template. + +The template's `DataSubject` sheet contains identifiers and a UTC request timestamp and must remain unchanged. Remaining sheets are organized by data type/system. Each requires an `id` column with a unique row identifier; handlers define other columns and populate one row per source-data row. The completed file is uploaded through **Access request → Upload data request template**. + +The guide says uploaded data is encrypted with the subject's public key, stored in the platform datahub, and sent to the DAP. A subject with a registered email address receives an availability notification **half an hour after upload**, to allow portal data propagation. Each separately uploaded completed spreadsheet triggers its own notification. Sources: [manual request and template](../../hub/gdpr-data-access-portal.rst#L31-L90). + +### Changes, consent changes, and deletion + +| Subject action | Historical handling contract | +| --- | --- | +| Data correction | Configurable editable properties generate a change request and notify the contact for the originating data type. The downloadable change list includes subject ID, data IDs, old and requested values, and timestamp. | +| Grant or revoke consent | Also generates a change request. The portal narrative says data pertaining to revoked consent should be deleted. This states the documented workflow, not a legal rule supplied by this wiki. | +| Delete all subject data | Treated as revocation of all consents, a special change-request case, notifying the relevant data-type handlers. | + +For **manual** handling, the responsible operator accepts and applies changes or deletions in source systems, then refills and reuploads the relevant spreadsheet to reflect the result. A request/notification alone is not documented as completing a source-system mutation. For **automated** handling, the guides say integrations can trigger changes or deletions directly in source systems; this requires implementing the mechanism, not merely turning on a universal deletion switch. The same GDPR operations role requirement applies to notified handlers. See [change and deletion workflows](../../hub/gdpr-data-access-portal.rst#L92-L135). + +### Key ownership and internal request routes + +The documented request-delivery contract is public-key encryption with decryption using the subject's private key, stored only on the subject's computer/originating device. This is not a blanket claim that all source copies imported into an automated datahub are already encrypted this way: the [automation guide](../../hub/gdpr-getting-started.rst#L138-L152) separately describes copying source data into that datahub. + +The **internal Swagger** request surface helps interpret old browser/backend exchanges: + +- `POST /accessrequests` requires `publicKey`, boolean `deleteRequest`, and `lang`; it accepts configured `extraFields` and request-time `contactinfo`. Its success response is an empty JSON object, not delivery of requested records. +- `POST /accessrequest_login` is called after login when a prior request exists; the specification associates readable request data with the supplied original `publicKey`. +- `POST /accessrequests_update` takes the original `publicKey` and actions `update`, `delete`, or `add-purpose-to-access-request`. +- `GET /changerequests` lists changes for a specified document. Search, item-detail, download, and client-side field-formatting routes are also internal; this specification does not promise a complete external change-processing API. + +Sources: [request routes](../../hub/swagger_databrowser.yaml#L219-L374), [downloads and field formatting](../../hub/swagger_databrowser.yaml#L647-L718), [private-key delivery narrative](../../hub/gdpr-data-access-portal.rst#L80-L87), [experimental receiver encryption](../../hub/gdpr-platform-developer-docs.rst#L1348-L1355). The inspected contracts do not specify a private-key recovery procedure; one must not be inferred from the login routes. + +## Dataset automation contracts, not Databrowser's internal API + +The [developer guide](../../hub/gdpr-platform-developer-docs.rst) describes integration APIs as datasets with defined entity structures and receiver/publisher pipes conforming to [JSON Push](../../hub/json-push.rst). Representative URL forms are: + +- Subject input: `https://gdpr-platform-datahub-url/api/receivers/gdpr-subject-in/entities` +- Subject output: `https://gdpr-platform-datahub-url/api/publishers/gdpr-subject-out/entities` +- Access-request input/output use `gdpr-access-request-in` and `gdpr-access-request-out` in the corresponding paths. + +JSON Push sends an array even for one entity, supports incremental/full synchronization and batching, and defines sequencing conflicts for full synchronization. It is not equivalent to the DAP's single-object `POST /accessrequests` body. See [subject API](../../hub/gdpr-platform-developer-docs.rst#L111-L186), [access-request API](../../hub/gdpr-platform-developer-docs.rst#L1274-L1296), and [JSON Push requests/conflicts](../../hub/json-push.rst#L8-L88). + +### Matching and extension datasets + +Automation adds `TypeID`, `Identifiers`, and `Exclude` columns; the purpose sheet is unchanged. The developer guide says `TypeID` matches the dataset ID, `Identifiers` supplies optionally namespaced matching properties, and `Exclude` removes configured properties. `Personal` records match subject identifiers directly. `Related` records match parents, potentially through a chain that ultimately reaches `Personal` data. Source datasets must be registered in `custom-subject-data` to join the internal subject-data processing and matching access request. + +**Configuration discrepancy:** the getting-started guide instead says `TypeID` matches `rdf:type`. These descriptions are not interchangeable for every possible configuration; this page does not resolve them. Sources: [developer matching model](../../hub/gdpr-platform-developer-docs.rst#L32-L109), [getting-started alternative wording](../../hub/gdpr-getting-started.rst#L163-L202). + +The subject contract uses `gdpr-subject:subject-id` plus a nonempty identifier list to match instances of the same subject. `custom-subject` is merged with receiver input into `gdpr-subject`, then exposed by its publisher. The guide describes analogous extension datasets `custom-consent`, `custom-subject-consent`, `custom-purpose`, `custom-purpose-type`, `custom-data-type`, and `custom-policy`. For purpose types it specifically says the newest version wins when custom and input entities share `purpose-type-id`; do not generalize that conflict rule to every dataset without evidence. `gdpr-subject-consent` records each subject's affirmative/negative consent choice and selection time. + +Sources: [subject merge](../../hub/gdpr-platform-developer-docs.rst#L111-L186), [consent and subject-consent merges](../../hub/gdpr-platform-developer-docs.rst#L336-L443), [purpose and purpose-type merges](../../hub/gdpr-platform-developer-docs.rst#L599-L708), [data-type merge](../../hub/gdpr-platform-developer-docs.rst#L826-L832), [policy merge](../../hub/gdpr-platform-developer-docs.rst#L952-L958). + +Additional developer-contract discrepancies are preserved for lookup: the purpose-type input paragraph names `gdpr-purpose-in` but its URL uses `gdpr-purpose-type-in`; subject-consent's prototype uses `gdpr-subject-consent:valid-from` while its property table labels the time field `gdpr-consent:valid-from`. The data-type prototype uses language-prefixed descriptions such as `gdpr-data-type:en-description`, whereas the property table uses suffixes such as `gdpr-data-type:description-en`. See [purpose type](../../hub/gdpr-platform-developer-docs.rst#L676-L686), [subject consent](../../hub/gdpr-platform-developer-docs.rst#L354-L399), and [data type](../../hub/gdpr-platform-developer-docs.rst#L724-L779). + +### Access-request lifecycle fields and experimental delivery + +Dataset access requests require `gdpr-access-request:access-request-id`, `gdpr-access-request:user-id`, and a PGP `gdpr-access-request:public-key`. The key encrypts collected request data before storage/further processing; the corresponding private key decrypts it. Optional contact metadata chooses `email` or `phone_number`, and `gdpr-access-request:delete-request` is documented as a **string** `false`/`true`, default `false`—unlike Swagger's boolean `deleteRequest`. Extra properties pass through to the outgoing API. The outgoing UTC `gdpr-access-request:timestamp` is assigned by the platform and overwrites an incoming value. See [access-request schema](../../hub/gdpr-platform-developer-docs.rst#L1173-L1270). + +`gdpr-access-request-subject-data-in` is explicitly **experimental** and may not exist in every installation. It receives an existing access-request ID, existing data-type ID, reporter, and entities containing unique IDs and data objects. It encrypts with the registered subject public key before processing and has **no corresponding output API**, because the documented consumer decrypts on the originating device. See [experimental receiver](../../hub/gdpr-platform-developer-docs.rst#L1298-L1411). + +### Unstructured data retains a human gate + +The unstructured workflow automates extraction, indexing, and search, **not final disclosure approval**: + +1. Document-source microservices supply metadata and a binary-download HTTP API; importing pipes normalize their output. Source datasets are merged through `custom-documents`. +2. The extractor fetches `gdpr-document:extract-content` and extracts text. The document index stores extracted text and the described properties except metadata; it does not store the original file in that process. +3. A new access request searches the index using subject properties. Search is **point-in-time**: newly indexed documents do not automatically rerun older searches; a new request is needed. +4. Every match must be manually vetted because of false positives and possible information about other subjects. Operators can remove rows, remove the extraction link to withhold a file, and supply reduced/redacted text before uploading the reviewed template. +5. Only after vetting is metadata encrypted with the subject public key and transmitted. If an extraction link remains, the file is downloaded, encrypted, and transmitted too, for client-side decryption/download. + +The source-download trust boundary is deliberate: `extract-content` must not itself challenge for authentication and is described as local-network-only, reachable by GDPR Platform; the microservice handles any backend credentials. Conversely, `gdpr-document:original-url` must challenge for required authentication and be reachable by the human reviewer. This historical local-network assumption must not be read as advice to expose an unauthenticated file service publicly. + +The search paragraph spells the joined source `custom-document` singular even though the internal dataset section names `custom-documents`; this reference preserves that inconsistency. Source: [unstructured data contract](../../hub/gdpr-platform-developer-docs.rst#L1414-L1606). + +## Historical operations and focused verification + +Configuration and delivery are not uniformly immediate: setup propagation may take minutes, manual availability mail has a half-hour delay, and unstructured searches are snapshots. Translation changes also apply only to newly emitted notifications/objects in affected cases. The developer guide instructs operators to preserve `{{ ... }}` and `$ENV(..)` macros in `custom-translations` and start that pipe after saving. Sources: [setup propagation](../../hub/gdpr-data-types-purposes-configuration.rst#L165-L178), [delivery timing](../../hub/gdpr-data-access-portal.rst#L80-L90), [translation operation](../../hub/gdpr-platform-developer-docs.rst#L1164-L1170). + +For archival validation in an authorized historical environment, useful **proposed contract checks**, not claimed executed tests, are: + +- Compare effective file settings across numbered and end-user layers; inspect Redis separately. Validate both written layered route forms against that deployment instead of normalizing the documentation. +- Check configuration response bodies even after HTTP 200; exercise `validate_only` and lockout refusal with non-sensitive fixtures. +- Verify `OPEN`, `AUTHENTICATED`, and `AUTHORIZED` search outcomes with synthetic Solr data and an authenticating-proxy boundary. Review JWT subscription scope and `group:Admin` separately from subject login. +- Exercise request matching with synthetic `Personal` and chained `Related` records; ensure `Exclude` and the chosen `TypeID` convention match the archived configuration. +- Keep `DataSubject` identifiers/timestamp and unique row IDs intact; verify public-key encryption and local private-key decryption without publishing key material or subject records. +- Confirm source-system mutation and refreshed delivery for manual change/deletion handling; verify that unvetted documents and later index additions do not silently reach an older request. + +This repository's inspected pull-request workflow runs `make html` for documentation builds; it is not evidence that the legacy services passed runtime integration tests. See [build workflow](../../.github/workflows/pull_request.yml) and [preview instructions](../../README.md). + +## Related reference paths + +- [APIs and repository handoffs](../integrations/apis-and-repository-handoffs.md) — broader API and implementation boundaries. +- [Security and secrets](../operations/security-and-secrets.md) — credential and trust-boundary context. +- [Deployment and durability](../operations/deployment-and-durability.md) — operational state context. +- [History and policies](history-and-policies.md) — retirement and policy navigation. +- [Documentation maintenance](../workflows/documentation-maintenance.md) — maintaining evidence and conflicting legacy descriptions. diff --git a/openwiki/testing/configuration-change-lifecycle.md b/openwiki/testing/configuration-change-lifecycle.md new file mode 100644 index 00000000000..71076e24d52 --- /dev/null +++ b/openwiki/testing/configuration-change-lifecycle.md @@ -0,0 +1,289 @@ +--- +type: workflow +title: Test and deploy configuration changes safely +description: Follow the documented Sesam integration-project lifecycle from version-controlled configuration and test fixtures to isolated subscription tests, CI review gates, and controlled configuration deployment. Understand replacement scope, output-write isolation, and the separate responsibility for resets and reprocessing. +tags: [testing, configuration, continuous-integration, deployment, safety] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-7285120d3802995c47851289 + resource: repo://.github/workflows/merge.yml + - id: openwiki-source-4e7d8a15e6785869396f3776 + resource: repo://.github/workflows/pull_request.yml + - id: openwiki-source-e389b2c6e31446ccc4126746 + resource: repo://hub/api.rst + - id: openwiki-source-79c1f8f52cc7548adb5ae9dc + resource: repo://hub/documentation/data-management/data-management.rst + - id: openwiki-source-572c1d1fb307183e39ed6631 + resource: repo://hub/documentation/operations/automatic-deployment.rst + - id: openwiki-source-b0ec7b6825338ee242d1ff03 + resource: repo://hub/documentation/operations/configuration-management.rst + - id: openwiki-source-5836a7a1bfae906d1c6a7cca + resource: repo://hub/documentation/operations/continuous-integration.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-99c5e9148ffecffe97366428 + resource: repo://hub/documentation/operations/version-control-system.rst + - id: openwiki-source-6a5de2a911806771b5cfd05a + resource: repo://hub/documentation/service-configuration/configuration-metadata.rst + - id: openwiki-source-9856e3b68ce295aee64f2081 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-conditional.rst + - id: openwiki-source-3e051037c2aa10f79883e01c + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-null.rst + - id: openwiki-source-238996d9476162250beea643 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-conditional.rst + - id: openwiki-source-a3888ae3630bf88a4bb17720 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-embedded.rst + - id: openwiki-source-5156b81b00358c1c04a7aff2 + resource: repo://hub/features/api-config-groups.rst + - id: openwiki-source-782bcbded2c4efbea17fb497 + resource: repo://hub/features/automatic-reprocessing.rst + - id: openwiki-source-6c52db3ac69c47f1937708d3 + resource: repo://hub/features/deletion-tracking.rst + - id: openwiki-source-839eae38482865fc4eda4486 + resource: repo://hub/sesam-client.rst + - id: openwiki-source-f032e299184da6e9f50321b4 + resource: repo://hub/setup-environment.rst + - id: openwiki-source-c92a884f90ca8ac7f160c79a + resource: repo://hub/swagger_public.yaml + - id: openwiki-source-012f2c78e3b1446dfc35803f + resource: repo://Makefile + - id: openwiki-source-23775c3de52f3ab95a13cb8b + resource: repo://README.md +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Test and deploy configuration changes safely + +A Sesam integration project should treat configuration changes as reviewed software changes: keep configuration and fixtures in source control, test on isolated subscriptions, require CI results before merging, and deliberately select the release to deploy. Sesam exposes APIs that development tools can use; the documented workflow delegates orchestration to the Sesam client and CI/CD tools rather than providing a built-in project version-control and test system. + +**Scope of evidence:** the commands and examples below were inspected in documentation, not executed. The [Sesam client](https://github.com/sesam-community/sesam-py) and [GitHub Autodeployer](https://github.com/sesam-community/github-autodeployer) are external implementation handoffs and were not inspected. “Documented client behavior” is not a claim that this documentation repository contains or has passed a local runtime test suite. + +## Safety requirements before any test + +> **Do NOT run the Sesam client on production subscriptions!** The client documentation explicitly says production use is outside its intended usage and may produce undesired results. Do not interpret older CD examples as an exception to this warning. + +Require all of the following: + +- **Isolated subscriptions:** each developer uses a personal development subscription; automated tests use a dedicated CI subscription. The environment guide distinguishes these from a production-sized test environment and production itself. “Local testing” means testing a developer's changes against their own Sesam subscription, not running an in-process service emulator in this repository. +- **No output writes to connected systems:** output pipes must be disabled or unable to send data to their systems. The CI node must be unable to write to another system. Do not put production connection secrets or the variables needed for production output connections on personal/CI nodes. Supply only the JWT for the intended test subscription. +- **One writer/test at a time per subscription:** serialize client commands and CI tests, including jobs from different branches or pipelines sharing a node. Do not manually edit the subscription while a client run is in progress. CI tests overwrite configuration, so concurrent runs can fail or never finish. + +Disabling a pump is not an absolute write barrier: the pump API says `disable` prevents automatic execution but still permits a manual `start`. Combine safe configuration with unreachable output destinations and absent production credentials rather than relying on one switch. + +A documented isolation pattern uses a conditional source to select embedded test data and a conditional sink to select a `null` sink for development. The condition normally comes from an environment variable, and all its possible values must have entries in `alternatives`; selection is resolved when the parent pipe is created. The null sink discards entities without sending them elsewhere. Inspect the selected source and sink on the target subscription before testing. + +See [Security and secrets](../operations/security-and-secrets.md) for credential handling. Sources: [client warnings](../../hub/sesam-client.rst), [local testing](../../hub/documentation/operations/testing-locally.rst), [CI isolation](../../hub/documentation/operations/continuous-integration.rst), [environment setup](../../hub/setup-environment.rst), [conditional source](../../hub/documentation/service-configuration/pipes/configuration-sources-conditional.rst), [conditional sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-conditional.rst), [null sink](../../hub/documentation/service-configuration/pipes/configuration-sinks-null.rst), and [pump API](../../hub/swagger_public.yaml). + +## Change lifecycle + +```mermaid +flowchart TD + Repo["Source-controlled configuration and fixtures"] --> Personal["Isolated personal subscription test"] + Personal --> LocalResult{"Expected output matches?"} + LocalResult -->|No| Revise["Fix configuration or review intended fixture change"] + Revise --> Repo + LocalResult -->|Yes| PR["Pull request"] + PR --> CI["Serialized test on dedicated CI subscription"] + CI --> Gate{"Tests pass and review approved?"} + Gate -->|No| Revise + Gate -->|Yes| Release["Select reviewed branch or release tag"] + Release --> Deploy["Controlled deployment or optional autodeployer"] + Deploy --> Replace["Replace configuration in intended scope"] + Replace --> State["Assess required resets and reprocessing policy"] + State --> Manual["Operator performs required manual actions"] + State --> Automatic["Enabled automatic policy handles detected desynchronization"] + Manual --> Verify["Verify deployed flows and output"] + Automatic --> Verify +``` + +*The documented source-control, personal-test, CI, and deployment lifecycle, with explicit review and post-deployment state responsibilities.* + +The reset branches are responsibilities to assess, not mutually exclusive guarantees: a release may still need manual actions even when automatic reprocessing is enabled. Automatic deployment is optional; the deployment guide cautions that larger or business-critical installations often need more control over release timing. + +Sources: [configuration management](../../hub/documentation/operations/configuration-management.rst), [environment workflow](../../hub/setup-environment.rst), [CI gates](../../hub/documentation/operations/continuous-integration.rst), [deployment](../../hub/documentation/operations/automatic-deployment.rst), and [automatic reprocessing](../../hub/features/automatic-reprocessing.rst). + +## 1. Version configuration and both sides of the test contract + +Export configuration with the client, API, or portal into a working copy of the project repository. The source recommends a structure such as: + +```text +my-project-directory + ├ expected + ├ pipes + ├ systems + ├ variables + ├ README.md + ├ LICENSE + └ .gitignore +``` + +The CI examples wrap configuration under `node/`, so `node/expected`, `node/pipes`, and `node/systems` sit together. The important relationship is that `expected/` is a sibling of `pipes/` and `systems/`, not a folder inside an individual pipe. + +Keep **input fixtures** distinct from **expected results**: + +- The environment guide recommends test data for all incoming data types so developers can work independently. Embedded sources can store small, static sets of input entities directly in configuration; do not use them for large datasets. Conditional inbound sources allow the same configuration to select anonymized embedded data on a development node instead of accessing external data. +- `expected/` describes the outputs to compare after processing those inputs. A new input type or output endpoint therefore requires more than a configuration edit: it needs meaningful fixture coverage and an expected result to review. + +Sesam retains previous uploaded pipe/system versions in `system:config` and exposes configuration history, but the version-control guide explicitly says this is not proper project version control. Use a separate VCS. The documented recommendation is GitHub Flow with semantic-version release tags. + +Sources: [version control](../../hub/documentation/operations/version-control-system.rst), [environment setup](../../hub/setup-environment.rst), [embedded source](../../hub/documentation/service-configuration/pipes/configuration-sources-embedded.rst), and [embedded data for testing](../../hub/documentation/data-management/data-management.rst). + +### Expected files and test-selection settings + +For each endpoint pipe, the local-testing guide requires these default files: + +| File | Contract | +|---|---| +| `expected/.json` | Expected output. | +| `expected/.test.json` | Test configuration selecting which output to fetch and how to compare it. | + +The documented settings are optional: + +| Setting | Selection or comparison responsibility | +|---|---| +| `_id`, `type`, `description` | Test name, test configuration type, and description. The examples use `"type": "test"`; naming is filename-based by default. | +| `pipe` | Select the pipe whose output is tested. Set this explicitly when a test filename differs from the pipe name. The source's default description repeats the expected-file wording, so do not treat that wording as a precise pipe-name algorithm. | +| `file` | Select the expected-results file. By default `foo.test.json` looks for `foo.json`. Published outputs can use files such as `foo.xml`. | +| `stage` | Select source, before-transform, after-transform, or sink output; the stated default is `sink`. See the spelling uncertainty below before using intermediate stages. | +| `endpoint` | Select a published endpoint instead of the default `/pipes//entities` read. The pipe must be configured to publish that endpoint. | +| `parameters` | Object of bound parameters, default `{}`. Documented to work only for published endpoints. Use separate `.test.json` files for different parameter combinations. | +| `blacklist` | Array of output property names to ignore, default `[]`; useful for deliberately excluded volatile fields. | +| `ignore` | Whether to ignore this output during tests, default `false`. This is a comparison setting, not an output-write safety control. | + +A **syntactically corrected illustration**, based on the documented fields and not an executed test, is: + +```json +{ + "_id": "foo", + "type": "test", + "pipe": "foo", + "file": "foo.json", + "blacklist": ["my-last-updated-ts"], + "ignore": false +} +``` + +For parameterized published output, the guide describes `foo-A.test.json` selecting `"pipe": "foo"`, `"endpoint": "xml"`, `"file": "foo-A.xml"`, and `"parameters": {"my-param": "A"}`. It compares `/publishers/foo/xml?my-param=A` with `foo-A.xml`; a second file using `B` compares the corresponding URL with `foo-B.xml`. API paths here are relative to the service API base, normally ending in `/api`. + +### Documentation uncertainties to resolve before relying on a fixture + +Do not copy every authored example verbatim: + +1. **Malformed fixture examples:** the first `foo.test.json` example includes a shell prompt inside surrounding braces and lacks a comma after `"file": "foo.json"`. The parameter examples also wrap separate shell transcripts/objects in braces. Extract individual objects and validate their JSON before use. +2. **Stage spellings disagree:** the test-settings table lists `before-transform` and `after-transform`, but the public entities API lists `before-transforms` and `after-transforms`, alongside `source` and `sink`. Check the external client version and target API rather than assuming aliases. +3. **Endpoint selection is ambiguous in one example:** the guide generally says setting `endpoint` uses `/publishers//`, yet an example with `"endpoint": "json"` and `"stage": "source"` is described as reading `/pipes/foo/entities?stage=source`. The route precedence for that combination is not established here. +4. **Deletion normalization is suspicious:** the guide says internal properties other than `_id` and `_deleted` are stripped, then says entities with `_deleted` set to `false` are removed. This is an authored statement, **not verified client behavior**. Elsewhere Sesam deletion tracking marks deleted entities with `_deleted: true`. Do not silently invert the statement or assume tombstone comparison behavior until the external client is checked. + +The inspected sources do not establish sorting, comparison tolerances, or a complete normalization algorithm. Keep these uncertainties visible when reviewing golden outputs. + +Sources: [fixture contract and examples](../../hub/documentation/operations/testing-locally.rst), [entities API](../../hub/swagger_public.yaml), [API base URL](../../hub/api.rst), and [deletion tracking](../../hub/features/deletion-tracking.rst). + +## 2. Run to conclusion, then compare results + +Install/configure the client through its external README. The local prerequisites are a personal subscription and a JWT created under **Settings > Subscription > JWT**. Confirm the subscription URL and isolation requirements before using the documented command from the configuration directory: + +```sh +sesam -vv test +``` + +The documented test model is **drain-to-conclusion**, not “start each pipe once.” Run the non-output pipes until no entities remain in their queues; output pipes stay disabled or unable to write. Only then compare endpoint results against expectations. The client is documented to automate running pipes to conclusion and comparing their outputs. + +The guide describes three result classes: + +- Invalid test setup or endpoint pipes without corresponding tests: report the problem, fix coverage/configuration, and run again. +- All comparisons succeed: report that all tests passed. +- A comparison fails: identify the test/pipe and show expected versus received output. + +When an output change is intentional, the client is described as able to update expected results. Review those fixture changes with the configuration change; do not replace expectations merely to make a failure disappear. No update-results command is asserted here because the inspected local guide does not provide one. + +Sources: [running local tests](../../hub/documentation/operations/testing-locally.rst) and [client capabilities and setup](../../hub/sesam-client.rst). + +## 3. Apply the same test on a serialized CI node + +CI should validate that additions do not break existing pipes, flows, or integrations. Require a passing configuration test against the CI node and a peer-review gate before merge. The documented CI node uses the same testing approach as a personal subscription, initiated by the CI system; small fixture volumes usually allow a smaller node than production. + +### Jenkins example + +The guide supplies a Kubernetes pod definition, a client container image, and a Jenkinsfile. The pipeline sets the CI node/JWT, verifies the client version, and runs tests with scheduler logs. Its serialization option is: + +```groovy +options { + disableConcurrentBuilds() +} +``` + +Its source-authored test step is: + +```groovy +sh "export NODE='${env.Sesam_CI_node}'; export JWT='$Sesam_CI_node_jwt'; cd node && /./sesam -vv test -print-scheduler-log" +``` + +`Sesam_CI_node_jwt` is obtained through Jenkins `credentials(...)`. The accompanying Cloud Build/Dockerfile example downloads a pinned client release (`1.16.1` in the example). These are integration templates, not active Jenkins jobs in this documentation repository. Ensure serialization covers every job sharing the node, not just one Jenkinsfile's concurrent builds. + +### Azure DevOps example + +The documented `azure-pipelines.yml` downloads the client selected by `sesam_cli_version`, verifies it with `./sesam -version`, and runs: + +```yaml +- script: | + export NODE='$(node)' + export JWT='$(node_jwt)' + cd node + .././sesam -vv test -print-scheduler-log + displayName: 'Run Tests' +``` + +The example sets `trigger: none` and pairs this with branch build policies for PR validation. It also calls for a minimum of one reviewer and linked work items on the example main branches `develop` and `master`. Do not assume `trigger: none` alone installs a PR gate. + +For parallel-capable agent pools, the guide says to disable parallel runs and queue the second build; it illustrates the agent capability `Limit = DisAbleParallel` and pool demand `Limit -equals DisAbleParallel`. Treat this as a setup example to check against your actual pool, not proof that all writers to a shared CI subscription are locked. + +Source: [Jenkins and Azure CI examples](../../hub/documentation/operations/continuous-integration.rst). + +## 4. Deploy a reviewed configuration in an explicit scope + +Deployment replaces configuration; it is not automatically a merge of uploaded fragments. The public API defines these boundaries: + +| Entrypoint | Read/write scope | +|---|---| +| `GET /config` / `PUT /config` | Read or overwrite all configuration in the default, empty config-group. | +| `GET /config/{config-group}` / `PUT /config/{config-group}` | Read or overwrite all configuration in the named group. | +| `GET /config-all` / `PUT /config-all` | Read or overwrite configuration across all groups, including the default. | + +For individual pipe/system configuration endpoints, group membership is expressed through `metadata["$config-group"]`; for group upload endpoints it is selected by the URL. No explicit group means the default group. Review the **complete configuration for the replacement scope**, including intended removals, before uploading. Do not confuse a group replacement with an individual pipe edit. `force=true` on `/config` and `/config-all` requests best-effort application despite configuration errors; the API explicitly says this is rarely a good idea. + +### Optional GitHub Autodeployer + +The documented microservice periodically checks a configured Git repository, compares configuration, and deploys changes. A tag can select a versioned release; without a tag it uses the branch setting, which defaults to `master` if unset. + +Its documented warning is stronger than an incremental-update assumption: **existing pipes and systems are overwritten, and node configurations absent from the selected repository branch are removed**. Check the inventory and target scope before enabling it. The external implementation's API choice and config-group handling were not inspected, so do not assume it inherits a particular group boundary from the table above. + +The autodeployer **only deploys configuration**. It does not start or reset pipes. Required release actions remain manual. The guide also proposes replacing a CI test step with a deployment step in Jenkins/Azure and parameterizing the release version, but hands exact client parameters to external documentation. Given the explicit client production warning, this page does not provide a production-client deployment command. Establish a separately approved production deployment procedure. + +Sources: [replacement API](../../hub/swagger_public.yaml), [config-group rules](../../hub/features/api-config-groups.rst), [automatic deployment](../../hub/documentation/operations/automatic-deployment.rst), and [client warning](../../hub/sesam-client.rst). See also [Pipes and systems](../configuration/pipes-and-systems.md) and [API and repository handoffs](../integrations/apis-and-repository-handoffs.md). + +## 5. Plan state repair separately from configuration upload + +A successful upload does not establish that previously processed data now reflects the new configuration. Pipes can fall out of sync after configuration changes, new joins/inputs, dataset deletion/recreation, truncation, or backup restoration. + +The documented `reprocessing_policy` separates two behaviors: + +- `continue` is the default: continue processing input without automatically resetting, even when factors indicate a reset is needed. The feature guide says affected datasets are tracked. +- `automatic`: detect that the pipe is out of sync and reset it to reprocess inputs. The feature guide describes a full rescan, or in some situations a partial rewind instead. + +Set the policy per pipe or use service metadata `global_defaults.reprocessing_policy` for the default. This is **node-side synchronization policy**, not an extra action performed by the autodeployer. Evaluate it with the release's intended state migration; it does not excuse missing reset instructions. + +The pump API exposes operations such as `start`, `start-rescan`, and `reset-rescan`. They are not interchangeable: `start-rescan` starts a rescan unless one is already running, whereas `reset-rescan` makes the next rescan start from the beginning rather than resume an interrupted rescan. Consult supported operations and [Synchronization and state](../configuration/synchronization-and-state.md) before choosing manual actions. + +A safe release review should therefore record the selected revision, replacement scope and removals, expected-output changes, write-isolation checks, and any required start/reset/rescan actions. After deployment, verify affected flows and outputs rather than using “configuration deployed” as the sole success criterion. + +Sources: [automatic reprocessing](../../hub/features/automatic-reprocessing.rst), [service metadata defaults](../../hub/documentation/service-configuration/configuration-metadata.rst), [pump operations](../../hub/swagger_public.yaml), and [manual deployment responsibilities](../../hub/documentation/operations/automatic-deployment.rst). + +## Separate track: this repository's documentation build + +The repository's actual pull-request workflow installs documentation dependencies and runs `make html`. The Makefile runs Sphinx, with `SPHINXOPTS ?= -W`, and the HTML target also generates contract documents. The README describes previewing `_build/html/index.html`; `SPHINXOPTS= make html_no_saas` is its alternative preview command. These checks build documentation, **not Sesam configuration tests against a node**. + +The `master` push workflow builds and publishes a documentation container and deploys the `docs` Container App. That is site publication, not the integration-project deployment lifecycle described above. No Sesam client invocation appears in those build workflows. Passing them does not validate fixtures, drain pipe queues, or prove safe output behavior. + +For documentation changes, see [Documentation maintenance](../workflows/documentation-maintenance.md). Sources: [preview instructions](../../README.md), [Sphinx Makefile](../../Makefile), [PR workflow](../../.github/workflows/pull_request.yml), and [site publication workflow](../../.github/workflows/merge.yml). diff --git a/openwiki/testing/index.md b/openwiki/testing/index.md new file mode 100644 index 00000000000..4ed674eee99 --- /dev/null +++ b/openwiki/testing/index.md @@ -0,0 +1,3 @@ +# Files + +- [Test and deploy configuration changes safely](configuration-change-lifecycle.md) - Follow the documented Sesam integration-project lifecycle from version-controlled configuration and test fixtures to isolated subscription tests, CI review gates, and controlled configuration deployment. Understand replacement scope, output-write isolation, and the separate responsibility for resets and reprocessing. diff --git a/openwiki/workflows/bidirectional-synchronization.md b/openwiki/workflows/bidirectional-synchronization.md new file mode 100644 index 00000000000..13a1419525d --- /dev/null +++ b/openwiki/workflows/bidirectional-synchronization.md @@ -0,0 +1,282 @@ +--- +type: synchronization workflow +title: Bidirectional synchronization without duplicates or lost writes +description: Trace how Sesam turns golden records into target-system desired state, records write responses, and reconciles recollected identities. Explain duplicate prevention, optimistic checks, completeness gates, deletion safety, and replay risks after resets or recovery. +tags: [synchronization, connectors, identity, completeness, durability] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-23abea229a889d8e8f0ae64f + resource: repo://hub/bidirectional-synchronization.rst + - id: openwiki-source-a0efd05d2f703badad608052 + resource: repo://hub/documentation/connectors/connector-contract.rst + - id: openwiki-source-118fd252aeab56da4d82736d + resource: repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst + - id: openwiki-source-9b634518e174395c6097e870 + resource: repo://hub/documentation/data-synchronization/delete-pattern.rst + - id: openwiki-source-ba7f43a38586ace6423b8bff + resource: repo://hub/documentation/data-synchronization/duplicate-hops-block-pattern.rst + - id: openwiki-source-0d0f309b3cb8bdad3cff77fa + resource: repo://hub/documentation/data-synchronization/establish-origin-pattern.rst + - id: openwiki-source-d44b5842156a14380957c4e9 + resource: repo://hub/documentation/data-synchronization/handling-asymmetry-pattern.rst + - id: openwiki-source-8a748388db2125b74986696b + resource: repo://hub/documentation/data-synchronization/insert-pattern.rst + - id: openwiki-source-53655b7209277527d54131bc + resource: repo://hub/documentation/data-synchronization/namespace-split-pattern.rst + - id: openwiki-source-827922f146088ec43efe47b0 + resource: repo://hub/documentation/data-synchronization/optimistic-locking-pattern.rst + - id: openwiki-source-cc3f1c0ea421f0ba74f9eab5 + resource: repo://hub/documentation/data-synchronization/share-template-extension-points-pattern.rst + - id: openwiki-source-20f7d7237089165b4d12e6aa + resource: repo://hub/documentation/data-synchronization/update-pattern.rst + - id: openwiki-source-51ebd99292372283db53369a + resource: repo://hub/documentation/data-synchronization/verify-deletes-pattern.rst + - id: openwiki-source-5836a7a1bfae906d1c6a7cca + resource: repo://hub/documentation/operations/continuous-integration.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-b88ab8bcd7069b9437346a72 + resource: repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst + - id: openwiki-source-811b94c0236de6dfe3bad74f + resource: repo://hub/documentation/service-configuration/pipes/configuration-pump.rst + - id: openwiki-source-3feb3cb0150ced7c7dca37f9 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst + - id: openwiki-source-9c3ad765d7f032ba45c225e7 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst + - id: openwiki-source-c32b360d8e1b5891f21864d1 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst + - id: openwiki-source-89e59f155188034abce5bfff + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst + - id: openwiki-source-c734d3226c0f5253ac569339 + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst + - id: openwiki-source-e222c4aa209056e7340716af + resource: repo://hub/dtl/dtl-functions-hops.rst + - id: openwiki-source-86472cb6932154fc6d5f5b11 + resource: repo://hub/dtl/dtl-functions-misc.rst + - id: openwiki-source-782bcbded2c4efbea17fb497 + resource: repo://hub/features/automatic-reprocessing.rst + - id: openwiki-source-4b2bc117b6b0ce370e62adff + resource: repo://hub/features/change-tracking.rst + - id: openwiki-source-444c59bcbf1ae7540ab05a9d + resource: repo://hub/features/completeness-feature.rst + - id: openwiki-source-c4f45d3a0f3643170205d462 + resource: repo://hub/features/dependency-tracking.rst + - id: openwiki-source-d496de71635dcd7d5827ad5d + resource: repo://hub/features/durable-data.rst + - id: openwiki-source-abbaf1a032635daa7f6e9355 + resource: repo://hub/idempotency.rst +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Bidirectional synchronization without duplicates or lost writes + +Bidirectional synchronization makes global golden records both the result of collecting source data and the master data sent back to contributing systems. That creates a feedback loop: a write becomes a collected entity, which contributes to the next golden record and potentially the next write. Safety depends on **identity, recorded outcomes, comparison with collected state, and processing order**, not merely on suppressing unchanged data. + +The patterns below reduce duplicates and lost writes; they do **not** establish an exactly-once transaction spanning Sesam and an external system. In particular, a lookup followed by a write is best-effort protection, and response capture is explicitly non-transactional. + +## Responsibilities and the round trip + +- **Model mapping and global merging** determine sameness and the best values. They retain the identities that contributed to a golden record and manage the opaque `$origin` value. +- **Target-specific transformation** produces `SYSTEM-DATATYPE-transform`, the connector's desired-state input. A `-transform-split` stage before `-transform` restores target identities when the global entity contains target-system members. +- **The connector** collects `SYSTEM-DATATYPE-collect` and makes the target reflect desired state through `-share` operations. When later logic needs the write response, mutation happens in a transform and the sink is a dataset containing the outcome, rather than an external sink that does not capture that response. + +```mermaid +sequenceDiagram + participant Global as Global golden records + participant Desired as Target split and transform + participant Share as Share transforms + participant Journal as Share sink dataset + participant Target as External target system + participant Collect as Collect pipeline + participant Mapping as Enrich and origin mapping + + Global->>Desired: Golden record and contributing ids + Desired->>Desired: Split target identities and shape desired state + Note over Desired,Share: Completeness gates hold back incomplete versions + Desired->>Share: Desired state with contract metadata + opt Insert candidate + Share->>Journal: Hops using current and historical ids + Journal-->>Share: Previous successful insert if present + end + alt Insert already recorded or identity replaced + Share->>Share: Block external mutation + else Eligible candidate + opt Update or real delete + Share->>Target: Lookup current target entity + Target-->>Share: Current values + Share->>Share: Compare with collected baseline + end + alt Target changed since collection + Share->>Share: Discard pending write and await collection + else Eligible write after checks + Share->>Target: Insert, update, or real delete + Target-->>Share: Response and generated key on insert + Share->>Journal: Persist outcome and identity mapping + end + end + Note over Collect,Target: A later collection closes the feedback loop + Collect->>Target: Read entities + Target-->>Collect: System primary keys and raw values + Collect->>Journal: Join primary key to $generated_id + Journal-->>Collect: $origin from recorded insert + Collect->>Mapping: Collected entity with origin + Mapping->>Global: Merge new target identity with originating entity +``` +*The sequence composes the documented split, duplicate-block, optimistic-check, response-capture, and origin-reconciliation patterns; it is not one atomic target transaction.* + +An insert has no imported target baseline, so it does not take the update comparison path. Identity replacement also needs to propagate internally as dataset state, even though it must not delete an external record. Sources: [bidirectional overview](../../hub/bidirectional-synchronization.rst), [connector contract](../../hub/documentation/connectors/connector-contract.rst), and [response capture](../../hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst). + +## Identity: prevent both internal and external duplicates + +**Internal duplicates** include reinserting a system's own entity into itself and propagating pre-existing duplicates within that system. **External duplicates** include sending a record to another system where a counterpart already exists, or failing to connect a Sesam-created target record with its origin. + +### Split before deciding to insert + +Global merging produces `$ids` containing contributing identities. A global `_id` is not necessarily the appropriate identity for every target. The namespace split pattern emits one entity for **each** member whose namespace belongs to the target, using that member's enriched, namespaced `_id`. Thus two pre-existing target duplicates can share golden values without being mistaken for two new insert candidates. If there are no target members, emit one candidate with the source `_id` unchanged; that identity represents the origin of the future insert. + +Splitting does not discover business sameness. Pre-existing duplicates, whether inside one system or across systems, must first be identified and merged using a suitable, preferably unique merge criterion in the global flow. See [Master data management](master-data-management.md) and the [namespace split pattern](../../hub/documentation/data-synchronization/namespace-split-pattern.rst). + +### Block the old identity as well as the new one + +After an insert has been recollected and merged, the global identity can change. The old identity may still flow downstream as `_deleted: true` with `$replaced: true`. A namespace check alone is therefore insufficient. + +The duplicate hops block checks the share pipe's own sink dataset for a **previous successful insert**. Its example joins `_S.$ids` to `["ni", "st._id"]`, returns `st.`, disables `track-dependencies`, and adds `$discard: "already-inserted"` if a non-null result exists. `$ids` must cover the current `_id` and every other identity previously emitted for that object, not only its latest global identity. Do not treat an arbitrary error response as proof of successful insertion. + +Self-hops have two essential prerequisites: + +- Set pipe `batch_size` to `1`: entities in an unflushed batch are invisible to hops, so the next entity must be able to see the previous recorded outcome. +- Set dataset sink `set_initial_offset` to `"onload"`: the sink is considered populated when configured, even when empty, avoiding a pipe waiting for its own sink to become populated. + +Change tracking drops identical versions **at the dataset sink**, not before a mutation transform has necessarily run. Dependency tracking can independently cause source entities to be reprocessed after hopped-to data changes. Keep those useful mechanisms in the modeling flow, but do not mix dependency tracking into the non-transactional mutation pipe. The duplicate-block and origin-lookup examples explicitly use `"track-dependencies": false`. + +Sources: [duplicate hops block](../../hub/documentation/data-synchronization/duplicate-hops-block-pattern.rst), [hops sink warning](../../hub/dtl/dtl-functions-hops.rst), [insert safeguards](../../hub/documentation/data-synchronization/insert-pattern.rst), [change tracking](../../hub/features/change-tracking.rst), and [dependency tracking](../../hub/features/dependency-tracking.rst). + +### Reconcile target-generated ids through origin + +The establish-origin pattern requires the target's insert response to contain the newly generated system primary key. Capture it in the share sink as `$generated_id`, together with the originating identity information and `$origin`. On recollection, join the collected primary key to the share sink's `$generated_id` and copy `$origin` onto the collected entity. Model mapping can then connect the new target identity to the original entity instead of letting it travel back as an unrelated insert candidate. + +`$origin` is **opaque and managed by model mapping**; the share pipe passes it through to its sink. Do not interpret it as necessarily one plain id because an example shows one namespaced identifier. The older insert example records generated `_id` plus `original_ids`, adds `sesam-id` in enrich, and includes it in connect `equality_sets`; this is a different illustrated mapping layout, not a license to rename the connector contract's `$origin` or `$generated_id` fields. + +The capture-response example stores body and status, treats `200`, `201`, and `204` as successful, sets `$error: "error-insert"` otherwise, and uses `trip!` if the generated key is incomplete or missing. The accepted success codes and key extraction still need to match the actual API: a nominal success with no usable generated id cannot close this origin loop. + +Sources: [establish origin](../../hub/documentation/data-synchronization/establish-origin-pattern.rst), [connector output contract](../../hub/documentation/connectors/connector-contract.rst), and [capture response](../../hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst). + +## Desired-state contract and operation safety + +Collected data should stay close to the API's original structure; connector-added API properties use the `sesam_` prefix. Desired state uses the same property names, data types, and structure as collect output, removing property namespaces but **retaining the namespace in `_id`**. The collected output may also contain optional `$last-modified` (Datetime), preferably obtained from or close to the system; that is distinct from dataset `_ts` used for completeness. + +| Exact field | Contract meaning and requirements | +|---|---| +| `$ids` — `List` | Includes `_id` and all other ids previously emitted for the object. Required during insert; optional for updates and deletes. | +| `$based_on` — `Dict` | Collected values for all raw system properties to be written back, from the particular imported version. Required for updates and deletes; disallowed for insert. Supports lost-write checks and avoiding unnecessary updates. | +| `$based_on_properties` — `List` | Properties considered in `$based_on` comparison; names can be dotted paths. Required for updates and deletes; disallowed for insert. | +| `$replaced` — Boolean | When true, deletion represents a new `_id`, not a real delete. Produced by merge source. Optional for deletes; disallowed for updates and inserts. | +| `$origin` — Opaque | Passed through by share into its sink. Missing on insert is an error according to the contract prose. Optional if the entity originated in this particular system. | + +The contract's simple insert example has no target primary key (`id`), so it denotes an insert. For natural-key APIs, do not infer operation solely from key presence: `transform-share-rest` exposes `is_natural_key` and `primary_key_insert` to describe keys not generated by the server or different insert key fields. + +### Inserts + +Before allowing an external insert, establish that the entity is neither deleted nor an identity-replacement tombstone, has no existing target member after splitting, and has no successful prior insert under any historical id. Pass the original mapping information through transformation. Mutate through a response-capturing transform, keep its response in a durable dataset, and protect preview as described below. + +### Updates: read before write, but do not claim atomicity + +An update can first compare desired values with current values to avoid an unnecessary write. To protect unseen external edits, the optimistic locking pattern looks up the current target entity and compares it with the last imported version. Its example removes underscore-prefixed fields, serializes via `json-transit`, and compares `hash128` values using `"murmur3"`. If the versions differ, discard the update, wait for a new import, and try again with newly derived desired state. The contract expresses the baseline as `$based_on` and the comparison scope as `$based_on_properties`. + +This **narrows the race window**; another writer can still change the target after the lookup and before the write. A guaranteed atomic compare-and-write would require target-side transactional or conditional-write support beyond the separate lookup/write shown here. Likewise, dataset sink `enable_optimistic_locking` is a different mechanism: it compares entity `_updated` values against the previous dataset version and rejects the dataset write if any comparison fails. It does not make an external REST write atomic. + +### Real deletes versus identity replacement + +Merge source emits deletes for ids no longer applicable after identity changes and marks them `$replaced: true`. A source entity actually deleted upstream is instead output standalone with `_deleted: true`. Never translate the first case into a target DELETE. A separate delete pipeline should discard non-deleted entities and replacements; if deletion is performed in a transform and logged in a dataset, keep `_deleted: true` on the logged entity. The connector contract still requires `$based_on` and `$based_on_properties` for real deletes. + +Unreliable source scans can falsely report deletion and spread it to other systems. Verify a purported source delete through a per-entity lookup. The documented example accepts `200,404` and rewrites `_deleted` to `false` when lookup returns `200`; `404` leaves the deletion intact. Circuit breakers help but do not cover every such scenario. The collect template offers this through `operation_lookup_delete` with `rest_system`; it takes precedence over `operation_lookup`, and the documentation says the two cannot be used together. + +Finally, a disappearing entity in an outbound subset is not automatically evidence of a real source deletion. The delete pattern explicitly leaves subset handling as an open question; define and test the integration's policy rather than assuming one is supplied. + +Sources: [contract](../../hub/documentation/connectors/connector-contract.rst), [optimistic locking](../../hub/documentation/data-synchronization/optimistic-locking-pattern.rst), [update pattern](../../hub/documentation/data-synchronization/update-pattern.rst), [merge source](../../hub/documentation/service-configuration/pipes/configuration-sources-merge.rst), [delete pattern](../../hub/documentation/data-synchronization/delete-pattern.rst), [verify deletes](../../hub/documentation/data-synchronization/verify-deletes-pattern.rst), and [dataset sink locking](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst). + +## Completeness and ordering are separate from identity + +Completeness prevents a target write from consuming an intermediate golden record or transform result while contributing flows are still catching up. It does not discover duplicates or lock a target record. + +| Gate | What it actually checks | +|---|---| +| Dataset source `initial_completeness: [dataset ids]` | Every listed dataset has a completeness value. **Presence only**: the value need not be recent and is not compared to the entity timestamp. | +| `require_populated_input: true` | The input dataset is populated. For merge sources, checks the configured datasets or `initial_datasets`. This is an initial-offset/populated-state gate, not a completeness timestamp check. Default is `false`; service metadata can set `global_defaults.require_populated_input`. | +| Dataset source `completeness: true` | Only emits entities with `_ts` older than or equal to the source dataset's completeness timestamp. | +| Dataset source `completeness: [dataset ids]` | Uses the smallest completeness timestamp of those specific upstream datasets. | +| Dataset source `completeness: {"expression": ...}` | Evaluates DTL before each run; the returned datetime is the cutoff. A non-datetime result falls back to `"~t1970-01-01T00:00:00Z"`, normally holding back all entities. | + +On a successful run, the sink inherits the smallest completeness timestamp of source and related datasets. Inbound pipes use current time, with an optional HTTP endpoint request-header override. `include_completeness` and `exclude_completeness` control contributors; exclusion wins if both list the same dataset. Excluding every dataset generates a new completeness timestamp in that pipe, so exclusions must reflect actual independence, not merely remove an inconvenient gate. + +The DTL call `["completeness", "VIA_DATASET_ID", "DATASET_ID"]` reads a dataset's propagated watermark **as known via another dataset**. It can differ across paths and returns `null` if either dataset is missing or the via-dataset has no record of it. The [bidirectional example](../../hub/bidirectional-synchronization.rst) compares the `A-company-collect` watermark via `global-location` with that via `A-company-transform-split`. It releases up to `["now"]` only when both are positive and the global path is at least as far along as the split path; otherwise it uses a minimum/fallback watermark. That is path-ordering logic, not just a check that the pipes have run once. + +**Full-rescan warning:** completeness filtering may hide recent entities. Dataset sink deletion tracking, enabled by default, deletes entities not seen during a full run. Together they can create false sink deletes. Set sink `deletion_tracking` to `false` if those inferred deletes are not wanted, and evaluate how genuine deletions will then be handled. This matters especially before a downstream share/delete flow. + +Sources: [completeness feature](../../hub/features/completeness-feature.rst), [dataset source gates](../../hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst), [merge population gate](../../hub/documentation/service-configuration/pipes/configuration-sources-merge.rst), and [DTL completeness](../../hub/dtl/dtl-functions-misc.rst). See [Synchronization and state](../configuration/synchronization-and-state.md) for wider state configuration. + +## Asymmetric APIs and extension boundaries + +The connector is responsible for hiding differences between collected and writable models, keeping its public collect/desired-state boundary symmetric. Prefer adapting share behavior to the collect model so collect can be built first without a later compatibility break. + +A datatype may be readable through its own API but writable through a parent's API, or insertable only as part of another datatype. This can require additional share or `-preshare` pipes and parent-before-child creation. Move insert responsibility to the appropriate flow and remove the competing insert capability; point the affected collect flow at the share dataset that actually contains its `$generated_id`. Hierarchies may require multiple target writes even when the hierarchy is irrelevant to the central model. + +Connector hops may reach **other datasets within that connector**, not datasets outside it, to restore symmetry or fulfill required relationships. Treat them cautiously: they can introduce loops and dependencies. Keep relationship preparation and completeness ordering outside the non-idempotent write stage where possible; disabling dependency tracking on outcome lookups does not remove the need to make parent ids available before a dependent write. + +`transform-share-rest` is the documented CRUD/optimistic-check entrypoint. Prefer its extension points over extra transforms when adapting API shapes: + +- `rewrite_rules_payload`: `rewrite_update_payload`, `rewrite_insert_payload`, and `rewrite_update_payload_after_patch` for request shaping. +- `rewrite_rules_lookup`: `rewrite_lookup` for lookup response shaping. +- `rewrite_rules_mutation`: `rewrite_update`, `rewrite_insert`, and `rewrite_delete` for mutation response shaping, including key formats. +- `client_side_patching: true` builds an update from the lookup result patched with actual payload when an API requires a complete replacement payload. This is not an atomic target patch. + +The reference separately documents legacy `rules` hooks for lookup/baseline rewriting and `$payload` customization. Its `payload_property` table defaults to `payload`, while special-entity customization is named `$payload`; preserve that distinction and verify the expanded connector rather than normalizing the names by guesswork. See [Connectors and contracts](../integrations/connectors-and-contracts.md), [asymmetry](../../hub/documentation/data-synchronization/handling-asymmetry-pattern.rst), and [template extensions](../../hub/documentation/service-configuration/pipes/configuration-transforms-template.rst). + +## External writes, resets, and restore: prerequisites and impact + +| Action | Prerequisites before allowing it | Impact and residual risk | +|---|---|---| +| Enable mutation transforms | Validate API semantics, identity mapping, successful-response detection, completeness and delete policy. Use `batch_size: 1`, durable outcome storage, and no dependency tracking in the mutation pipe. | The external operation happens before its response reaches the dataset sink. Smaller batches reduce duplicate replay exposure but do not create a transaction across target and sink. | +| Preview a mutation pipe | Keep `side_effects: true` on transforms that write. REST transforms default to `true`; mark read-only lookup `false` only when genuinely safe. | Preview executes transforms even though it does not write the normal sink. An unprotected insert can create an untraceable target record. | +| Skip optimistic checking for repair | Explicitly authorize and scope the repair, accepting that collected state may be stale. | `$unsafe_skip_optimistic_locking: true` lets `transform-share-rest` update even when comparison says `modified-in-system`; it can overwrite unseen edits. Not a normal synchronization setting. | +| Reset or rewind last seen | Review the full set of external side effects, preserve the successful-insert journal, and verify replay behavior in an isolated environment before enabling writers. | Reset/full run reprocesses all source entities and performs deletion tracking. Use `disable_set_last_seen: true` to protect a pipe from accidental reset/last-seen changes. | +| Enable automatic reprocessing | Audit `reprocessing_policy` and downstream mutation safety, including after configuration or input-state changes. | Default `continue` does not reset automatically. `automatic` can reset/full-rescan or sometimes rewind, including when state is restored from backup. | +| Resume after disaster recovery | Reconcile actual target records with surviving origin/outcome records before unguarded non-idempotent replay. Enable `metadata.durable: true` on relevant write-state pipes; pushed inbound and paired endpoint/share pipes also need durability. | Durability reduces data-loss risk, not an exactly-once guarantee. Restoring older state can forget successful external operations and send them again. | + +The durability documentation's concrete failure is a 10:00 backup, an invoice written at 12:00, and recovery after a 12:30 failure: Sesam rebuilds from 10:00 and can send that invoice twice. Cloud backups are documented as occurring every 24 hours, so normal recoverable source recollection and non-idempotent output replay have very different consequences. Know the actual target's behavior on repeated requests; HTTP method labels alone are not an integration-specific replay proof. + +Sources: [insert replay risks](../../hub/documentation/data-synchronization/insert-pattern.rst), [durable data](../../hub/features/durable-data.rst), [non-idempotency](../../hub/idempotency.rst), [reset/full run](../../hub/documentation/service-configuration/pipes/configuration-pump.rst), [reset protection](../../hub/documentation/service-configuration/pipes/configuration-pipes.rst), [automatic reprocessing](../../hub/features/automatic-reprocessing.rst), and [unsafe repair override](../../hub/documentation/service-configuration/pipes/configuration-transforms-template.rst). See [Deployment and durability](../operations/deployment-and-durability.md) for recovery planning and [Monitoring and troubleshooting](../operations/monitoring-and-troubleshooting.md) for investigation. + +## Source inconsistencies to resolve before copying examples + +These documents describe safety patterns, but some examples are not runnable contract-conformant configurations. Do not silently repair them or treat their omissions as relaxed requirements: + +- The connector contract requires `$origin` for insert, but its insert example omits it. Its update example writes `$based_on` with square brackets around property/value pairs despite specifying `Dict`; the update and delete examples omit required `$based_on_properties`, and the delete example also omits `$based_on`. +- The contract's replacement prose says `_delete`; its example uses `_deleted`. Its split prose includes both `foo-person:123` and `foo:person:124`. Preserve the actual target namespace rather than deriving one from this inconsistent illustration. +- The capture-response example sets `$operation` to `"inserts"` but triggers on `"insert"`, and lacks a comma after `["add", "$payload", "_S."]`. Its missing-key check is important even though the surrounding example needs validation. +- The older insert example's comment describes discarding already-processed entities, but the predicate uses `is-empty` on the sink hops. It joins `si.$original_id` while later storing `original_ids`. The dedicated duplicate-block pattern instead checks for a non-empty successful result. +- The optimistic locking example lacks a comma between its success-path comment and payload addition. Its lookup/hash/discard control flow should not be mistaken for a ready-to-paste configuration. +- The `transform-share-rest` section's prototype names `"transform-collect-rest"`. The namespace-split text describes keeping the first merged id as default, while the merge-source reference documents `identity: "composite"` as default and `"first"` as an explicit strategy. Inspect actual merge configuration. + +## Focused validation before enabling two-way writes + +The repository documents configuration testing. The cases below are **acceptance cases to add to the integration**, not a claim of existing automated coverage for this round trip. Use a controlled API stub or isolated target for actual mutation behavior: + +| Case | Expected safety observation | +|---|---| +| One target member, then two pre-existing target duplicates | Split emits the correct target `_id` per member; neither becomes a new insert merely because the global `_id` uses another namespace. | +| Insert, reprocess, then recollect and merge | One successful insertion is recorded; generated id joins to origin; later candidates under old/current ids are blocked; `$replaced` does not delete the target. | +| Target lookup differs from `$based_on` | Pending mutation is discarded; after recollection desired state is recomputed. Also test an edit between lookup and write to expose the remaining race window. | +| True delete, false scan delete, and subset exit | Replacement never calls delete; lookup `200` cancels false deletion; missing entity follows the real-delete policy; subset behavior is explicit. | +| Uninitialized dependency, old watermark, and invalid expression result | Test populated-state gating separately from completeness presence and timestamp filtering. Check divergent via-path watermarks and full-rescan deletion tracking. | +| API success without key, error response, retry, and failure after an external write | Missing generated key fails visibly; error is not a success marker; test batch visibility and the external-write/local-recording gap. | +| Parent/child insertion and asymmetric response shape | Required target ids exist before dependent writes; response rewriting preserves the key used by recollection. | +| Preview, reset, automatic rewind, and restored journal | Preview is protected; reset/recovery tests check actual target call counts as well as sink contents. Losing a success marker must be treated as a replay hazard. | + +The documented local procedure runs pipes until queues drain, with external output disabled or unable to send, and compares endpoint output to `expected/.json` using `.test.json`. It supports selecting `source`, `before-transform`, `after-transform`, or `sink` stage and is invoked with `sesam -vv test`. CI must serialize tests because the client overwrites the node configuration, and the CI node should lack credentials needed to write to normal target systems. Do not use real integration credentials in examples or fixtures. + +There is also an inconsistency in the local-test reference: its internal-properties section says entities with `_deleted: false` are removed from output. Do not assume that documented wording gives complete coverage of live-versus-deleted results; validate the installed client's comparison behavior and inspect raw outcomes/call counts for these safety tests. + +See [Configuration change lifecycle](../testing/configuration-change-lifecycle.md), [Build an integration](build-an-integration.md), [local testing](../../hub/documentation/operations/testing-locally.rst), and [CI isolation](../../hub/documentation/operations/continuous-integration.rst). diff --git a/openwiki/workflows/build-an-integration.md b/openwiki/workflows/build-an-integration.md new file mode 100644 index 00000000000..0171e2e177b --- /dev/null +++ b/openwiki/workflows/build-an-integration.md @@ -0,0 +1,313 @@ +--- +type: integration workflow +title: "Build an integration: Collect, Enrich, Connect, Transform, Share" +description: "Trace a Sesam integration from authenticated source collection and retained raw datasets through semantic enrichment, global merging, target payload preparation, and guarded delivery. Use the HubSpot and mocked Enhetsregisteret example to choose transport, continuation, response capture, and verification patterns without running a live tutorial." +tags: [integration, dataflow, synchronization, datasets, safety] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-859607aeae4d97d50f4df39e + resource: repo://hub/custom-data-source.rst + - id: openwiki-source-44e50825666ef41bd80ca9cf + resource: repo://hub/documentation/building-blocks/datasets.rst + - id: openwiki-source-7a2d2c36e68977998d148504 + resource: repo://hub/documentation/building-blocks/pipes.rst + - id: openwiki-source-e9c139c51dbde1c66d8144cd + resource: repo://hub/documentation/building-blocks/systems.rst + - id: openwiki-source-79c1f8f52cc7548adb5ae9dc + resource: repo://hub/documentation/data-management/data-management.rst + - id: openwiki-source-8ba125d38b3099a8d9fc7516 + resource: repo://hub/documentation/data-synchronization/authentication-schemes-pattern.rst + - id: openwiki-source-118fd252aeab56da4d82736d + resource: repo://hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst + - id: openwiki-source-171b5134b0671635f107c912 + resource: repo://hub/documentation/data-synchronization/continuation-pattern.rst + - id: openwiki-source-8a748388db2125b74986696b + resource: repo://hub/documentation/data-synchronization/insert-pattern.rst + - id: openwiki-source-827922f146088ec43efe47b0 + resource: repo://hub/documentation/data-synchronization/optimistic-locking-pattern.rst + - id: openwiki-source-e0227eef418c042a5cd7e84f + resource: repo://hub/documentation/data-synchronization/pagination-pattern.rst + - id: openwiki-source-1a4787e87d2e7846e4e9b8d3 + resource: repo://hub/documentation/data-synchronization/receive-webhook-events-pattern.rst + - id: openwiki-source-9a4322160cbdd8c94c2f37ea + resource: repo://hub/documentation/data-synchronization/register-webhook-pattern.rst + - id: openwiki-source-cc3f1c0ea421f0ba74f9eab5 + resource: repo://hub/documentation/data-synchronization/share-template-extension-points-pattern.rst + - id: openwiki-source-51ebd99292372283db53369a + resource: repo://hub/documentation/data-synchronization/verify-deletes-pattern.rst + - id: openwiki-source-77b000efded2deb34b873d22 + resource: repo://hub/documentation/operations/pump-execution.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-92b30a880e4f783e38f1db9c + resource: repo://hub/documentation/operations/troubleshooting.rst + - id: openwiki-source-b88ab8bcd7069b9437346a72 + resource: repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst + - id: openwiki-source-daba448c9f0497c50826d185 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-rest.rst + - id: openwiki-source-c32b360d8e1b5891f21864d1 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst + - id: openwiki-source-0b016c49ad5a5e105f9d582d + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-rest.rst + - id: openwiki-source-d6b1a7911ad4b2f54edfb598 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources.rst + - id: openwiki-source-80d11a77ba6626aaf9a2d07f + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst + - id: openwiki-source-89e59f155188034abce5bfff + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst + - id: openwiki-source-c734d3226c0f5253ac569339 + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-template.rst + - id: openwiki-source-e3ab6d41e79b5df3ed8f521c + resource: repo://hub/documentation/service-configuration/systems/configuration-systems-rest.rst + - id: openwiki-source-bf713a2a436e5ee14581521f + resource: repo://hub/dtl/dtl-functions-nulls.rst + - id: openwiki-source-b080c011b8382aaeafbbc37b + resource: repo://hub/dtl/dtl-functions-transforms.rst + - id: openwiki-source-3902473100e6919f4481c8d0 + resource: repo://hub/extension-points.rst + - id: openwiki-source-4b2bc117b6b0ce370e62adff + resource: repo://hub/features/change-tracking.rst + - id: openwiki-source-b16009034f286ce228a41a35 + resource: repo://hub/features/compaction-feature.rst + - id: openwiki-source-444c59bcbf1ae7540ab05a9d + resource: repo://hub/features/completeness-feature.rst + - id: openwiki-source-d496de71635dcd7d5827ad5d + resource: repo://hub/features/durable-data.rst + - id: openwiki-source-24a3402bbdfc8e090d1ba728 + resource: repo://hub/guide-create-first-synchronization-data-management.rst + - id: openwiki-source-7035272718e5cf63d6db0dce + resource: repo://hub/guide-create-first-synchronization-data-synchronization.rst + - id: openwiki-source-6010d21a45b120c0eb621c83 + resource: repo://hub/guide-create-first-synchronization.rst + - id: openwiki-source-37fc6bff358e9ead6ffde752 + resource: repo://hub/json-pull.rst + - id: openwiki-source-e1430a0683886b0e51106a01 + resource: repo://hub/sesam-dataflow.rst + - id: openwiki-source-ea17e578398a7ed32d204b34 + resource: repo://hub/tutorial-getting-started-collect.rst + - id: openwiki-source-0c618f531a4c5114878bee24 + resource: repo://hub/tutorial-getting-started-connect.rst + - id: openwiki-source-ea3cb71ba61ef90e2241e1ce + resource: repo://hub/tutorial-getting-started-enrich.rst + - id: openwiki-source-45330eb2ada1bcc1bae45fe8 + resource: repo://hub/tutorial-getting-started-share.rst + - id: openwiki-source-f0ce190d086a551cb9d67915 + resource: repo://hub/tutorial-getting-started-transform.rst +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Build an integration: Collect, Enrich, Connect, Transform, Share + +An integration is a **dataflow with retained boundaries**, not just an API request. The authored workflow is **Collect → Enrich → Connect → Transform → Share**. Collect and Share handle movement across the Hub boundary; Enrich, Connect, and Transform handle data management inside it. The first-synchronization guide groups the tutorials this way, but the dependency order still follows all five phases. + +This page traces the representative flow: collect company records from HubSpot and a registry-shaped source, connect matching companies, prefer selected registry values, then prepare guarded updates to existing HubSpot companies. It is an architectural walkthrough and safe test plan, not instructions to execute against a live CRM. + +## Safety and scope before configuration + +- **Enhetsregisteret is mocked.** The tutorial's `enhetsregisteret` system uses `system:microservice`, image `sesamcommunity/learn-sesam-crm:v1.1.2`, and port `5000`. Its `/enhetsregisteret` endpoint serves generated tutorial data, not a connection to the Norwegian registry. Do not treat it as a production connector or proof of real registry access. +- **The HubSpot prerequisites and examples are legacy material.** The guide asks for an API key and links to legacy test-account instructions; Collect labels a secret `hubspot-api-key` but sends it in an `Authorization: Bearer ...` header. The connector authentication reference instead identifies HubSpot as an OAuth2 example. Do not infer a current authentication recipe from the old tutorial. Confirm the supported authentication, scopes, token lifecycle, and API contract for the connector/version you actually use. +- Use only synthetic fixtures and credential/identifier placeholders. Require an **isolated test account** for any separately authorized provider contract tests, never an existing business account. Keep external writes disabled or unreachable during local configuration tests. **Do not run the live tutorials, CSV imports, webhook registration, or mutation previews as part of this walkthrough.** +- The tutorial covers updates to existing companies, not a complete insert/delete or bidirectional lifecycle. Before adding those, use [Bidirectional synchronization](bidirectional-synchronization.md) and [Connectors and contracts](../integrations/connectors-and-contracts.md). + +Sources: [guide and prerequisites](../../hub/guide-create-first-synchronization.rst), [Collect and mock notice](../../hub/tutorial-getting-started-collect.rst), [authentication schemes](../../hub/documentation/data-synchronization/authentication-schemes-pattern.rst). + +## The five-stage route + +“Inbound,” “outbound,” “global,” and suffixes such as `-collect`, `-enrich`, `-transform`, and `-share` describe **roles and naming conventions**. They are not distinct pipe implementation types. Each example is `"type": "pipe"`; behavior comes from its source, ordered transforms, sink, and pump. A missing sink defaults to a dataset sink with the dataset named after the pipe's `_id`. That default explains the retained datasets between tutorial stages. + +| Phase | Task and representative entrypoint | What to inspect before moving on | Task-to-source route | +| --- | --- | --- | --- | +| **Collect** | Define `hubspot` and mocked `enhetsregisteret` systems; create `hubspot-company-collect` and `enhetsregisteret-company-collect` | Authentication boundary, source response extraction, stable `_id`, raw retained output, complete page traversal | [Collect tutorial](../../hub/tutorial-getting-started-collect.rst), then [Collect patterns](../../hub/documentation/data-synchronization/collect-patterns.rst) | +| **Enrich** | Read each Collect dataset in its corresponding `-company-enrich` pipe | Source namespaces, `rdf:type`, and same-source relationship NIs | [Enrich tutorial](../../hub/tutorial-getting-started-enrich.rst), [semantic modelling](../../hub/sesam-dataflow.rst#enrich) | +| **Connect** | Merge both Enrich datasets into `global-organization` | Equality evidence, merged identity, preserved lineage, authority order for global properties | [Connect tutorial](../../hub/tutorial-getting-started-connect.rst), [Merge source](../../hub/documentation/service-configuration/pipes/configuration-sources-merge.rst) | +| **Transform** | Read the global in `company-hubspot-transform` | Target ID and a target-shaped, inspectable payload, not a dump of the global | [Transform tutorial](../../hub/tutorial-getting-started-transform.rst), [data-management guide](../../hub/guide-create-first-synchronization-data-management.rst) | +| **Share** | Check in `company-hubspot-share-update`, then deliver through `company-hubspot-share-update-endpoint` | Conflict outcome, API status, replay safety, and whether responses must be retained | [Share tutorial](../../hub/tutorial-getting-started-share.rst), then [Share patterns](../../hub/documentation/data-synchronization/share-patterns.rst) | + +```mermaid +flowchart TD + HS["HubSpot system: source and target"] --> HC["Collect: hubspot-company-collect"] + ER["Mock Enhetsregisteret microservice"] --> EC["Collect: enhetsregisteret-company-collect"] + HC --> HE["Enrich: hubspot-company-enrich"] + EC --> EE["Enrich: enhetsregisteret-company-enrich"] + HE --> GO["Connect: global-organization"] + EE --> GO + GO --> TP["Transform: company-hubspot-transform"] + TP --> CK["Share check: company-hubspot-share-update"] + HS -->|Fresh GET| CK + HC -->|Retained baseline lookup| CK + CK --> EQ{"Baseline hashes match?"} + EQ -->|No| SK["Discard this proposed update"] + EQ -->|Yes| EP["Share endpoint: REST sink"] + EP -->|PATCH update| HS + EQ -.->|Yes with response capture instead| RT["Mutation in REST transform"] + RT -.-> HS + RT -.-> RD["Dataset: response and ID mapping"] + RD -.->|Feed into target input flow| HE +``` +*The five tutorials supply the solid company-update path; dashed edges show the response-capture alternative from the Share patterns, not an extra response dataset created by the tutorial's REST sink. Collect, Enrich, Connect, Transform, and the Share check retain dataset outputs by default.* + +For component ownership and the boundary model, continue to [Hub model and boundaries](../architecture/hub-model-and-boundaries.md) and [Pipes and systems](../configuration/pipes-and-systems.md). For initial environment setup, use [Quickstart](../quickstart.md). + +## 1. Collect: authenticate, map identity, retain the source + +### Keep connection configuration in systems + +A system represents the external database/API and centralizes shared connection configuration; it can also provide connection pooling and rate limiting. In the tutorial, `hubspot` is a `system:rest` with shared headers, a `url_pattern`, and named operations: + +- `get` performs collection GETs using `properties.url`. +- `get_company` performs an individual company GET for the later conflict check. +- `update` performs a JSON PATCH at `companies/{{ properties.id }}`. + +The historical header references `$SECRET(hubspot-api-key)`, rather than embedding a credential. Retain that separation of secret from configuration, **not the obsolete credential instructions**. Reuse operation definitions on the system where several pipes need them; REST source/transform/sink operation overrides exist, but secrets in those operation definitions are allowed only at the system level. See [REST system configuration](../../hub/documentation/service-configuration/systems/configuration-systems-rest.rst) and [connector contracts](../integrations/connectors-and-contracts.md). + +### Extract records, not the response envelope + +`hubspot-company-collect` uses a `rest` source bound to system `hubspot`, operation `get`, `payload_property: "results"`, and `id_expression: "{{ id }}"`. `payload_property` selects the record-bearing response property; `id_expression` supplies each emitted entity's `_id`. The mocked registry Collect pipe instead uses a `json` source at `/enhetsregisteret` and DTL that copies the record and adds `_id` from `orgnr`. Both Collect examples disable automatic namespaces and namespaced identifiers. + +Choose a stable, unique `_id` for each logical entity within the flow. A new version must keep that identity. Keep the original provider fields and nesting so later comparison and remodelling do not depend on another source fetch. “Raw” here means retained source records with necessary Sesam identity/metadata handling; extracting `results` is not retention of the whole HTTP response envelope. + +The two-step pattern separates **external collection/raw retention** from **semantic enrichment reading that dataset**. This lets downstream logic be rerun against already received data, especially when a push-only provider cannot replay it. Dataset change tracking appends only new or changed content; stored versions receive dataset-local `_updated` counters. Those internal counters are not the provider's business modification timestamps. Retention is also not an unlimited archive: the compaction reference defaults to keeping two versions per entity. Choose a retention policy intentionally. + +Sources: [raw retention and two-step approach](../../hub/sesam-dataflow.rst#collect-raw-data), [REST source mapping](../../hub/documentation/service-configuration/pipes/configuration-sources-rest.rst), [change tracking](../../hub/features/change-tracking.rst), [compaction](../../hub/features/compaction-feature.rst). + +### Choose the ingress and state strategy + +| Decision | Mechanism and consequence | Follow-up source | +| --- | --- | --- | +| **Can Sesam pull?** | Prefer pull where available: Sesam controls scheduling and can request data again. Use an appropriate built-in source or a JSON Pull adapter. | [Push or pull](../../hub/sesam-dataflow.rst#collect-push-or-pull), [custom sources](../../hub/custom-data-source.rst) | +| **Does a scan exceed one response?** | Configure REST operation `next_page_link`, request parameters, and termination for the API's body/header cursor or offset contract. `page_size` alone does not enable pagination; `not-full-page` termination requires it. The simple Collect example does not configure page traversal, so its expected ten tutorial records do not establish completeness for larger accounts. | [Pagination pattern](../../hub/documentation/data-synchronization/pagination-pattern.rst), [REST operation properties](../../hub/documentation/service-configuration/systems/configuration-systems-rest.rst) | +| **Can the provider resume between runs?** | Map its change marker into `_updated`, relay `since` to the API, and set `supports_since` only when true. Chronological output selects chronological tracking; otherwise comparable markers select max tracking. If neither property is valid, tracking is disabled. The pump owns the saved `pipe_offset`. Pagination within a scan and continuation across scans are separate decisions. | [Continuation pattern](../../hub/documentation/data-synchronization/continuation-pattern.rst), [continuation contract](../../hub/documentation/service-configuration/pipes/configuration-sources.rst#continuation-support) | +| **Must the provider push?** | A pipe with `source.type: "http_endpoint"` receives JSON Push at `/api/receivers//entities`. Treat it as a change stream: a record missing from the next push is not automatically a deletion. Retain the received data and consider durable storage. | [Pushing data into the Hub](../../hub/custom-data-source.rst#pushing-data-into-the-hub), [JSON Push](../../hub/json-push.rst), [durable data](../../hub/features/durable-data.rst) | +| **Are there webhooks?** | Register them separately, authenticate incoming payloads with provider-appropriate signature validation, then combine full scans and events in Collect. For partial events, receive quickly in `-event` and fetch the complete entity downstream in `-event2`; do not block the receiver with that lookup. Shared event feeds need datatype routing, for example with subsets. | [Register webhooks](../../hub/documentation/data-synchronization/register-webhook-pattern.rst), [receive and combine events](../../hub/documentation/data-synchronization/receive-webhook-events-pattern.rst) | +| **Are deletes or empty scans unreliable?** | A delta stream cannot infer deletion merely from absence. Plan full reconciliation or explicit delete events. REST `if_source_empty: "fail"` can prevent an empty scan from deleting prior output; verify suspected deletes with an entity lookup before propagating them. | [Continuation contract](../../hub/documentation/service-configuration/pipes/configuration-sources.rst), [REST source](../../hub/documentation/service-configuration/pipes/configuration-sources-rest.rst), [verify deletes](../../hub/documentation/data-synchronization/verify-deletes-pattern.rst) | + +The webhook pattern's `use_webhook_secrets: true` grants anonymous write access to event pipes as well as creating the webhook secret. **Signature validation is therefore a security boundary**, not optional decoration. Do not copy the pattern's development suggestion of inlining a client secret into a tracked configuration; use placeholders and secret references. + +A custom pull service exposes a JSON array of entities with `_id`; `_deleted` is optional and defaults to false, and `_updated` supports continuation. JSON Pull uses GET, `since`, and `limit`. If native connectors cannot express the transport, format, or security requirements, the extension boundary is an external endpoint through a URL system or a Docker-hosted microservice through a Microservice system. These can supply custom sources, transforms, or sinks. See [Extensions and JSON protocols](../integrations/extensions-and-json-protocols.md). + +## 2. Enrich: add semantics without guessing cross-source matches + +Each Enrich pipe uses its Collect dataset as a `dataset` source and copies the source properties. It then adds: + +- **A source/business type:** NIs such as `rdf:type = ~:hubspot:company` and `~:enhetsregisteret:company`. +- **Identity and property namespaces:** `hubspot-company` or `enhetsregisteret-company`, preserving lineage and preventing same-named properties from colliding after connection. +- **Same-source references:** the HubSpot rules turn contact associations into properties ending in `-ni`, with values built using `ni("hubspot-contact", id)`. The registry example needs only namespaces and type. + +An NI is a semantic foreign-key-like reference, not an enforced database constraint. It should point to an actual entity identifier in the related source dataset. This company example constructs contact references; it does not by itself collect a contact dataset or prove every reference resolves. Test reference resolution if downstream logic needs it. + +**Do not connect HubSpot identities to registry identities in Enrich.** Enrich preserves source semantics; Connect owns assumptions about equivalence across sources. See the [Enrich tutorial](../../hub/tutorial-getting-started-enrich.rst) and [namespaced-identifier modelling guidance](../../hub/sesam-dataflow.rst#semantic-enrichment-namespaced-identifiers). + +## 3. Connect: make equality and authority explicit + +`global-organization` reads a version-2 `merge` source with aliases `hc` and `ec`. The equality set is: + +```json +["hc.properties.about_us", "ec.orgnr"] +``` + +The tutorial deliberately stores the registry organization number in HubSpot's `about_us` field. That is an **example mapping choice**, not a general assertion about what `about_us` means. Before using any equivalent rule, normalize and test the business key, including null, blank, duplicate, and mismatching cases. + +Merge resolves equality transitively. Null and empty-list equality results do not merge; other unsuitable join values should be filtered explicitly. `identity: "first"` chooses the resulting `_id` according to input dataset order and then entity ID order. It does **not** select the most trustworthy property values. Namespaced source properties remain available in the merged result. + +Authority is a separate DTL decision. The tutorial copies all merged properties and adds organization number, name, address, zipcode, and city in the `global-organization` namespace. Each `coalesce` lists the registry value before the HubSpot value. By default `coalesce` picks the first **non-null** value, not the first valid or nonblank value; add validation/normalization if that distinction matters. `metadata.global: true` marks the pipe as global; the merge source and rules implement its behavior. + +Global datasets group a concept across sources. They need not merge every included entity: grouping related concepts is not proof that those records are the same object. For richer authority, classification, and feedback-loop choices, use [Master data management](master-data-management.md). + +**Configuration changes have state consequences.** Adding equality rules after records have already been processed requires reset/rescan to apply those rules to old records. Removing an input dataset requires a full run to clear its entities from merge state. Plan downstream availability and output/identity changes before resetting, especially while any Share path can write externally. Sources: [Connect example](../../hub/tutorial-getting-started-connect.rst), [Merge source lifecycle](../../hub/documentation/service-configuration/pipes/configuration-sources-merge.rst), [global modelling](../../hub/sesam-dataflow.rst#connect). + +## 4. Transform: bind the target schema late + +`company-hubspot-transform` reads `global-organization`. It obtains the existing HubSpot `id` from `hubspot-company:id`, and constructs `payload.properties` from the chosen global values: `address`, `city`, `name`, `about_us`, and `zip`. The registry organization number improves a HubSpot record, but it is **not** the HubSpot API identifier. + +The two `properties` objects at delivery serve different purposes. Top-level `properties.id` supplies the operation's URL parameter; `payload.properties` is the CRM request body. This illustrative **post-check delivery envelope** uses only synthetic data and placeholders and is not a runnable pipe configuration: + +```json +{ + "_id": "synthetic-update-1", + "properties": { + "id": "" + }, + "payload": { + "properties": { + "address": "1 Example Street", + "city": "Example City", + "name": "Synthetic Company", + "about_us": "", + "zip": "0000" + } + } +} +``` + +The Share check uses `::payload` and `::properties` when adding the unnamespaced REST envelope fields; the DTL `::` escape prevents automatic prefixing. Keep reshaping in a preparation dataset so its result is inspectable and reusable, rather than hiding all logic in a terminal outbound sink. + +Validate this contract before delivery: accepted fields, null/blank semantics, required IDs, types, and business rules. The older dataflow overview says Sesam does not offer automatic schema/business-rule validation; the more specific configuration reference documents an explicit **`json_schema` transform**. It annotates validity and error fields—it does not automatically discard invalid entities. Configure validation and an explicit gate/error route; do not assume schemaless storage validates the provider contract. + +Sources: [Transform example](../../hub/tutorial-getting-started-transform.rst), [REST entity shape](../../hub/documentation/service-configuration/pipes/configuration-sinks-rest.rst#expected-entity-shape), [DTL escapes](../../hub/dtl/dtl-functions-transforms.rst), [preparation/outbound separation](../../hub/documentation/data-management/data-management.rst), [JSON Schema validation](../../hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst). + +## 5. Share: guard the update and decide what to retain + +### The tutorial's read–compare–write path + +The tutorial splits Share into two pipes: + +1. `company-hubspot-share-update` selects transformed records with a non-null target `id` and retains non-deleted proposals. It calls `get_company` through a REST transform with `replace_entity: false`, keeping the proposal and attaching the current response. +2. It hops to `hubspot-company-collect` by `id` for the last imported baseline. The rules remove underscore-prefixed properties, serialize using `json-transit`, and hash the baseline and lookup result with `hash128`/`murmur3`. +3. Equal hashes emit the payload and URL properties. A mismatch unconditionally discards that proposed update; the optimistic-locking pattern says to wait for a fresh import and try again. +4. `company-hubspot-share-update-endpoint` reads that dataset and uses the system's `update` operation in a REST sink to PATCH the existing company. + +This is a **client-side conflict-risk reduction**, not an atomic provider-side lock. GET/check and PATCH are separate operations, even separate pipes in this example; an intervening target edit remains possible. The example configures no conditional write token. Require stronger provider concurrency controls where the contract supports them and the use case requires them. + +Two subtleties matter for safe adaptation: + +- Compare equivalent record shapes, not a list-response envelope against a lookup envelope or unstable synthetic metadata. Test list/lookup normalization before treating a mismatch as a business conflict. +- DTL `discard` has an **unless condition**: `['discard', condition]` emits nothing when the condition is false. Unconditional `discard` also does not delete a previously stored entity with the same `_id` in the sink. A discarded proposal is not a target delete or guaranteed removal of older retained output. Do not requeue/reset the Share endpoint casually. + +Sources: [Share tutorial](../../hub/tutorial-getting-started-share.rst), [optimistic-locking pattern](../../hub/documentation/data-synchronization/optimistic-locking-pattern.rst), [discard semantics](../../hub/dtl/dtl-functions-transforms.rst#discard). + +### When delivery responses are part of the integration + +The tutorial's REST sink does **not** retain the target response as a dataset for further logic. If you need error bodies, mutation outcomes, generated IDs, or bidirectional mapping, move the external operation into a REST transform and keep a dataset sink. With `replace_entity: false`, choose `response_property` and `response_status_property` so the source identity, request, response body, and status can be retained together. + +Classify outcomes explicitly. REST transforms default to accepting `200-299`; expanding `allowed_status_codes` makes those other responses data that downstream rules must handle, not successful mutations. `ignored_status_codes` omits matching responses and loses audit evidence. Generated target IDs and original source identifiers must be connected back through the target input/global flow before dependent target objects can use them. + +For non-idempotent operations, response capture is **not a transaction spanning Sesam and the provider**. The pattern prescribes `metadata.durable: true`, pipe `batch_size: 1`, and no dependency tracking mixed into the mutation pipe, to reduce duplicate/replay exposure. Durable data reduces data-loss risk; it is not an exactly-once guarantee. Keep `side_effects: true` on mutating REST transforms to protect preview, and use false only for genuinely read-only calls. An insert extension also needs checks against already processed source identities, handling for deleted entities, and target-specific duplicate safeguards. + +Sources: [capture response with transform](../../hub/documentation/data-synchronization/capture-response-with-transform-pattern.rst), [REST transform status and side effects](../../hub/documentation/service-configuration/pipes/configuration-transforms-rest.rst), [insert safeguards and mapping](../../hub/documentation/data-synchronization/insert-pattern.rst), [durable storage](../../hub/features/durable-data.rst). + +### Delivery alternatives and extension points + +- **Push or publish:** push lets Sesam control delivery; publish lets consumers pull on their own schedule. The dataflow reference limits publication to HTTPS and supported formats, with predefined subsets/query properties rather than ad hoc querying. Select this at the Share boundary, not by changing global semantics. +- **Completeness:** enable dataset-source completeness when delivery must wait for upstream and related datasets to finish. It is not enabled merely by adopting the five-phase names. Review completeness with full rescans/deletion tracking: filtering incomplete entities during a full scan can otherwise make uncovered output appear deleted. Feedback datasets may need exclusion from the completeness chain. +- **Share templates:** `transform-share-rest` implements CRUD and an optimistic-locking check. Prefer its documented hooks for targeted changes: `rewrite_rules_payload` with `rewrite_update_payload`/`rewrite_insert_payload`; `rewrite_rules_mutation` with `rewrite_update`/`rewrite_insert`/`rewrite_delete`; and `rewrite_rules_lookup` with `rewrite_lookup`. These address payload or response adaptation without introducing another opaque transformation layer. + +Sources: [Share transport and IDs](../../hub/sesam-dataflow.rst#share), [completeness](../../hub/features/completeness-feature.rst), [template extension pattern](../../hub/documentation/data-synchronization/share-template-extension-points-pattern.rst), [template reference](../../hub/documentation/service-configuration/pipes/configuration-transforms-template.rst). Follow [Synchronization and state](../configuration/synchronization-and-state.md) for scheduling, retries, reprocessing, and checkpoint decisions. + +## Verification: prove the boundaries before enabling delivery + +The following are **recommended fixture tests**, not results of executing the tutorials. Build a small synthetic set with the fields required for joining, and grow it as failure cases appear. Embedded/conditional inbound sources can select offline fixtures using an environment variable while preserving the production-shaped configuration. + +| Boundary to test | Focused fixture or fault | Expected observation | +| --- | --- | --- | +| Collection identity and payload | Nested `results`, repeated record ID, more than one page, empty final page | Correct records and stable IDs; all intended pages reached; unchanged content does not add another dataset version | +| Continuation and deletes | Interrupted chronological feed, unordered comparable markers, explicit deletion, suspect empty full scan | Offset behavior matches declared capabilities; no silent skip; delta absence is not a delete; configured empty/deletion protection works | +| Webhook ingress | Valid/invalid signatures, partial event, shared event types | Invalid payload rejected; receiver does not perform slow lookup; correct datatype routed and full entity fetched downstream | +| Semantic enrichment | Same property names from two sources; resolvable and missing contact references | Namespaces retain lineage; expected type NIs appear; missing reference handling is explicit | +| Global equality and authority | Matched/unmatched keys, blank keys, duplicate candidates, null/blank authoritative values | Only intended companies connect; transitive/duplicate merges are visible; `coalesce` fallback is tested rather than assumed | +| Payload preparation | Registry-only company, invalid field type, null target ID | Existing HubSpot ID remains distinct from organization number; target shape is correct; invalid or non-updateable proposals are gated | +| Conflict guard | Baseline equals lookup, target edited after collection, different list/lookup shapes | Only equivalent unchanged records pass; mismatch emits no new update; old retained Share output is accounted for | +| Mutation and recovery | Success/error body, generated ID absent, simulated retry or replay against a mock | Status/error classification is retained; mapping is complete; duplicate safeguards and preview protection work | + +Use the local test workflow in [Configuration change lifecycle](../testing/configuration-change-lifecycle.md): drain internal queues while output pipes remain disabled/unable to send, and compare endpoint-stage output with expected fixtures. The documented layout uses `expected/.json` plus `expected/.test.json`; tests can select a pipe stage or a published endpoint. The documented local command is `sesam -vv test`, **only against the isolated, non-delivering test setup**, not a live tutorial node. Sources: [local testing](../../hub/documentation/operations/testing-locally.rst), [embedded test data](../../hub/documentation/data-management/data-management.rst#embedded-data-for-testing), [test-data guidance](../../hub/sesam-dataflow.rst#collect-test-data). + +Before any separately approved test-account delivery, check: + +1. **Input/output:** retained raw, enriched, global, and prepared records are inspectable; counts alone are insufficient. The tutorial's ten entities are fixture expectations, not a runtime invariant. +2. **Execution/state:** inspect pump execution history, succeeded/failed counts, retry state, and saved offsets. The execution dataset is an operational log, not a stable application API. Token expiry information can help diagnose OAuth/custom-auth failures. +3. **Delivery/outcomes:** distinguish conflict discards, invalid records, per-entity target errors, and system outages. Monitor dead-letter datasets rather than merely configuring them; verify the target result using an authorized isolated-account check. +4. **Observability/security:** enable monitoring at inbound/outbound boundaries. REST tracing can log headers and body excerpts; secret redaction is best-effort, so restrict trace detail and inspect logs for leakage. +5. **Change safety:** review equality/ID changes, retention, completeness, durability, and the external effects of reset/rescan before deployment. A local test pass is not proof of provider-side replay safety. + +Sources: [pump execution history](../../hub/documentation/operations/pump-execution.rst), [monitoring guidance](../../hub/sesam-dataflow.rst#collect-monitoring), [troubleshooting and error ownership](../../hub/documentation/operations/troubleshooting.rst), [REST trace controls](../../hub/documentation/service-configuration/pipes/configuration-sources-rest.rst). diff --git a/openwiki/workflows/documentation-maintenance.md b/openwiki/workflows/documentation-maintenance.md new file mode 100644 index 00000000000..5e6fb1fbaaf --- /dev/null +++ b/openwiki/workflows/documentation-maintenance.md @@ -0,0 +1,295 @@ +--- +type: Maintenance workflow +title: Maintain, preview, validate, and publish the Sphinx reference +description: How authored reStructuredText, Swagger specifications, legal inputs, templates, and assets become the Sesam Sphinx reference. Covers local prerequisites, build-flavor caveats, available checks, container publishing, and the separate managed OpenWiki update workflow. +tags: [documentation, sphinx, restructuredtext, validation, publishing, openwiki] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-f754c801c05ca060181ac1ca + resource: repo://_static/css/custom.css + - id: openwiki-source-b74be85869a339ee8c92b2cf + resource: repo://_static/custom.js + - id: openwiki-source-069c78373ba19d221530ebad + resource: repo://_templates/breadcrumb.html + - id: openwiki-source-186e978a212bbafa6d7a8a14 + resource: repo://_templates/iso.html + - id: openwiki-source-5a1ee903d50193c3fedc3bd2 + resource: repo://_templates/layout.html + - id: openwiki-source-532af912dadb367b4b68e3bd + resource: repo://_templates/left-sidebar-bottom.html + - id: openwiki-source-d9043a9b3d8b7146989f6042 + resource: repo://_templates/right-menu.html + - id: openwiki-source-7285120d3802995c47851289 + resource: repo://.github/workflows/merge.yml + - id: openwiki-source-6d4b4e707b8d60b6ccfa3425 + resource: repo://.github/workflows/openwiki-update.yml + - id: openwiki-source-4e7d8a15e6785869396f3776 + resource: repo://.github/workflows/pull_request.yml + - id: openwiki-source-ea70eb6c045047448e446296 + resource: repo://.gitignore + - id: openwiki-source-e119253b3c3737247dc63f2a + resource: repo://.openwikiignore + - id: openwiki-source-8037e2358a2c4f9b2c722a11 + resource: repo://AGENTS.md + - id: openwiki-source-b5aec4802496a78d4d532ddd + resource: repo://community.rst + - id: openwiki-source-aa0305f577d5a1fb53f2726d + resource: repo://conf.py + - id: openwiki-source-4e3072cc7cd3cff696e59aa8 + resource: repo://docker/build.sh + - id: openwiki-source-7753608a41d208169cdfdd28 + resource: repo://docker/default.conf + - id: openwiki-source-7f1ca00753e95588bc8efa39 + resource: repo://docker/Dockerfile + - id: openwiki-source-bb1ebe868e35e9e500714501 + resource: repo://Dockerfile + - id: openwiki-source-496e154a1753bf49791215a3 + resource: repo://files/.gitignore + - id: openwiki-source-e389b2c6e31446ccc4126746 + resource: repo://hub/api.rst + - id: openwiki-source-dbad7094907d04be9248cab5 + resource: repo://hub/data-transformation-language.rst + - id: openwiki-source-c1cd4d34f6d3f6d5ad5eae4a + resource: repo://hub/databrowser-auth.rst + - id: openwiki-source-d5d4251f2b61693ee6a80deb + resource: repo://hub/databrowser-authentication_providers_examples_and_docs-for_include.rst + - id: openwiki-source-83e28e284310ec967050a7ea + resource: repo://hub/databrowser-guide.rst + - id: openwiki-source-218ab09ccbb71981faae54fd + resource: repo://hub/documentation/building-blocks/index-building-blocks.rst + - id: openwiki-source-576efc56874e673056a4b1a4 + resource: repo://hub/documentation/connectors/connector-config-file.rst + - id: openwiki-source-c6d5aa14c22dee096c021ea3 + resource: repo://hub/documentation/connectors/connector-configuration.rst + - id: openwiki-source-a0efd05d2f703badad608052 + resource: repo://hub/documentation/connectors/connector-contract.rst + - id: openwiki-source-b5d954bd408fc16d1a044424 + resource: repo://hub/documentation/data-management/time-based-masterdata-management.rst + - id: openwiki-source-91b09c175b1283075d2267bb + resource: repo://hub/documentation/data-synchronization/parameterized-datatypes-pattern.rst + - id: openwiki-source-abfd7f3c3362dcbbd85c64ef + resource: repo://hub/documentation/service-configuration/general/configuration-general.rst + - id: openwiki-source-b88ab8bcd7069b9437346a72 + resource: repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst + - id: openwiki-source-d6b1a7911ad4b2f54edfb598 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources.rst + - id: openwiki-source-3ba3816116976234f8f45a82 + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst + - id: openwiki-source-b15f1f3b073de71b578bbbbc + resource: repo://hub/documentation/service-configuration/systems/configuration-systems.rst + - id: openwiki-source-6d15f5dba09afb96fad83627 + resource: repo://hub/dtl/annotated-example.rst + - id: openwiki-source-71d909d875184c2873f0d162 + resource: repo://hub/dtl/dtl-functions-strings.rst + - id: openwiki-source-7ab079e1e5b6c3fee7362100 + resource: repo://hub/gdpr-platform-configuration.rst + - id: openwiki-source-56ff23f61dda5d836c905899 + resource: repo://hub/guide-getting-started.rst + - id: openwiki-source-50a49ebd637425e6fb1862b2 + resource: repo://hub/index-connectors.rst + - id: openwiki-source-9539e9c49e7b9e9a0bf96c74 + resource: repo://hub/index-developer.rst + - id: openwiki-source-8007dc8624cda4ea28f95194 + resource: repo://hub/index-learn.rst + - id: openwiki-source-9a56442cc8c2e13506dcd073 + resource: repo://hub/index-service-configuration.rst + - id: openwiki-source-64ee88973b54a55e49a17e18 + resource: repo://hub/index.rst + - id: openwiki-source-6f7627cd86f34924160c5841 + resource: repo://hub/quick-reference.rst + - id: openwiki-source-7af7fec6efb787f93bb5b3b9 + resource: repo://hub/swagger_databrowser.yaml + - id: openwiki-source-d0a16f79e90cff0f5bcc9290 + resource: repo://hub/swagger_portal.yaml + - id: openwiki-source-c92a884f90ca8ac7f160c79a + resource: repo://hub/swagger_public.yaml + - id: openwiki-source-ea17e578398a7ed32d204b34 + resource: repo://hub/tutorial-getting-started-collect.rst + - id: openwiki-source-7c1f6f76fe0b06f9705f9b22 + resource: repo://hub/tutorial-upload-baseline-config.rst + - id: openwiki-source-135269ed2034995acce1b6ab + resource: repo://index.rst + - id: openwiki-source-0cf45857f139d7ef03466d34 + resource: repo://legal-dap.rst + - id: openwiki-source-4b9fcd10d06cb399994cfd34 + resource: repo://legal-service.rst + - id: openwiki-source-5eb2f88b575f930da79e81c9 + resource: repo://legal.rst + - id: openwiki-source-457aa25225f9d5546260e6b3 + resource: repo://make.bat + - id: openwiki-source-012f2c78e3b1446dfc35803f + resource: repo://Makefile + - id: openwiki-source-c31ef28f9676db414b341803 + resource: repo://pagebreak.lua + - id: openwiki-source-cb935f66fa194550438b5b88 + resource: repo://partner-agreement-form.rstx + - id: openwiki-source-832f2a6f7b0fb248ce435fa5 + resource: repo://partner-agreement-part-1.rst + - id: openwiki-source-e2f40343addf63e273b32b32 + resource: repo://partner-agreement-part-2.rst + - id: openwiki-source-5a3af5ced3903ed7fb8ccca4 + resource: repo://partner-agreement.rst + - id: openwiki-source-23775c3de52f3ab95a13cb8b + resource: repo://README.md + - id: openwiki-source-373640cd8a0886cee69db282 + resource: repo://requirements.txt +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Maintain, preview, validate, and publish the Sphinx reference + +This guide covers **documented product behavior and the documentation toolchain**; it does not verify processing-runtime or portal/UI implementations. Change the authored reference first; do not repair rendered HTML or exported contracts. The Sphinx site and this Markdown evidence wiki have separate generation paths. + +**Research boundary:** this guide was derived from source inspection. No dependencies were installed, builds or checks run, servers or containers started, images published, or external services contacted. Follow [.openwikiignore](../../.openwikiignore): authored RST/RSTX, specifications, configuration examples, tooling, templates, and meaningful assets are evidence; build output, environments, exports, caches, and secrets are not. During OpenWiki generation, preserve original sources and contributor instructions and change only the assigned wiki documentation/metadata and permitted managed navigation blocks. + +## 1. Understand the authored document graph + +### The home page is `hub/index`, not root `index` + +[conf.py](../../conf.py) sets `source_suffix = '.rst'` and `master_doc = 'hub/index'`. Installing CommonMark-related packages does not make Markdown an enabled Sphinx source here. The `.rstx` partner form is an explicit Pandoc input, not an additional Sphinx source suffix. + +[hub/index.rst](../../hub/index.rst) combines visible `panels` and `link-button` cards with a **hidden toctree**, whose entries lead to What is Sesam Hub, Features, Documentation, Learn, pricing, SLA, roadmap, and changelog. Hidden means the tree is not displayed inline; it remains the authored hierarchy used by navigation. [hub/index-developer.rst](../../hub/index-developer.rst) then routes readers into building blocks, configuration, DTL, APIs, operations, and other reference topics. Building-block and learning landing pages similarly combine cards with hidden trees. + +The root [index.rst](../../index.rst) is marked `:orphan:` and has its own older feature panels and hidden link to `hub/index`. It is not the configured master. The redirect map sends `index.html` to `hub/index.html` and maintains legacy URLs such as `DTLReferenceGuide.html`, `api.html`, `quick-reference.html`, and `changelog.html`. Review that map when moving or renaming pages; it contains literal target strings, not a promise that arbitrary renamed files will redirect correctly. + +### Preserve references, shared text, and builder-sensitive markup + +- **Labels and references:** explicit targets such as `.. _DTL:`, `.. _data-transformation-language:`, `.. _pipe_section:`, and operator labels are consumed by `:ref:` links and `link-button` directives with `:type: ref`. [quick-reference.rst](../../hub/quick-reference.rst) is a dense consumer of configuration and DTL labels. Keep stable labels when headings change; search consumers before deleting or renaming one. +- **Document links:** `:doc:` addresses a document rather than a section target. The [DTL transform configuration](../../hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst) uses a relative `:doc:` path to the DTL guide. Learning cards also use `:type: url` with literal `.html` filenames. A successful label-resolution check is not enough to review those literal URLs or alternative-builder navigation. +- **Includes:** [partner-agreement.rst](../../partner-agreement.rst) includes both partner-agreement parts for the website; [partner-agreement-form.rstx](../../partner-agreement-form.rstx) includes the same parts around the printable form. The legacy [databrowser authentication guide](../../hub/databrowser-auth.rst) and [GDPR platform configuration](../../hub/gdpr-platform-configuration.rst) both include [the shared authentication-provider text](../../hub/databrowser-authentication_providers_examples_and_docs-for_include.rst). Edit shared text once and review both consumers. Preserve the included end-of-life warning rather than presenting this material as a new service contract. +- **Substitutions:** [time-based masterdata management](../../hub/documentation/data-management/time-based-masterdata-management.rst) and [parameterized datatype patterns](../../hub/documentation/data-synchronization/parameterized-datatypes-pattern.rst) define and use `|start-h3|` / `|end-h3|` as raw HTML substitutions. These are presentation markup, not product properties, and warrant review for non-HTML builders. Global `|version|` and `|release|` values are configured as `x.y` and `2024`; do not infer a runtime version from them. +- **Swagger composition:** [hub/api.rst](../../hub/api.rst) renders the local Swagger 2.0 files [swagger_public.yaml](../../hub/swagger_public.yaml) and [swagger_portal.yaml](../../hub/swagger_portal.yaml) through `.. openapi::`. The [databrowser guide](../../hub/databrowser-guide.rst) renders [swagger_databrowser.yaml](../../hub/swagger_databrowser.yaml). These are local copies, not specifications fetched at build time by those directives. The databrowser specification explicitly describes internal endpoints that may change or disappear; retain that scope. +- **Root orphan pages remain relevant:** [community.rst](../../community.rst) is reached by the custom navbar. [legal.rst](../../legal.rst) has a policy toctree and contract downloads; `legal-service.rst`, `legal-dap.rst`, and the partner parts are also marked orphan. `:orphan:` is not content exclusion. Follow template links and includes as well as the master toctree before deciding that a file is unused. + +## 2. Choose the right source for a change + +| Task | Primary authored source | Coupled review | +| --- | --- | --- | +| Change a configuration contract | [Service configuration entry](../../hub/index-service-configuration.rst), then [general configuration](../../hub/documentation/service-configuration/general/configuration-general.rst), [pipe configuration](../../hub/documentation/service-configuration/pipes/configuration-pipes.rst), or [system configuration](../../hub/documentation/service-configuration/systems/configuration-systems.rst) | Common property tables belong in the shared guides; type-specific properties belong in the corresponding `configuration-sources-*`, `configuration-sinks-*`, `configuration-transforms-*`, or `configuration-systems-*` page. Preserve Type, Default, Req, prototypes, warnings, and cross-references. Review [quick reference](../../hub/quick-reference.rst), linked feature explanations, and examples. | +| Change DTL semantics or an operator example | [DTL landing page](../../hub/data-transformation-language.rst) and the appropriate `hub/dtl/dtl-functions-*.rst` page, for example [strings](../../hub/dtl/dtl-functions-strings.rst) | Keep operator labels and argument notation. Review [annotated example](../../hub/dtl/annotated-example.rst), [DTL transform configuration](../../hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst), and quick-reference links. | +| Change an API contract | [Service API narrative](../../hub/api.rst) plus the matching Node or Portal Swagger YAML; [databrowser guide](../../hub/databrowser-guide.rst) plus its separate YAML for legacy endpoints | Keep endpoint paths, parameter types/defaults, responses, and narrative consistent. Rendering a specification does not prove a backend implements the change; use the [API and repository handoffs](../integrations/apis-and-repository-handoffs.md). | +| Change connector inputs/outputs or packaging guidance | [Connector entry](../../hub/index-connectors.rst), [connector contract](../../hub/documentation/connectors/connector-contract.rst), and [config file](../../hub/documentation/connectors/connector-config-file.rst) | Review manifest/templates and type-specific configuration references through the connector guide. See [Connectors and contracts](../integrations/connectors-and-contracts.md). | +| Change a tutorial | [Getting-started guide](../../hub/guide-getting-started.rst), [Learn navigation](../../hub/index-learn.rst), and the relevant `hub/tutorial-*.rst` or `hub/guide-*.rst` | Review steps, cards, screenshots, and `:download:` paths together. [Collect data](../../hub/tutorial-getting-started-collect.rst) links CSV inputs in `hub/files/`; [baseline upload](../../hub/tutorial-upload-baseline-config.rst) links JSON and warns that upload overwrites configuration. Do not expose real credentials or personal data while revising examples. | +| Change legal or contract inputs | [Legal landing page](../../legal.rst), `terms.rst`, `legal-service.rst`, `pricing.rst`, `legal-dap.rst`, and the shared partner parts/form | Review website text **and** PDF/DOCX composition in [Makefile](../../Makefile). Privacy policy is in the legal tree but is not an input to the assembled SaaS contract recipe. See [History and policies](../references/history-and-policies.md). | +| Change styling or chrome | [conf.py](../../conf.py), [_static/css/custom.css](../../_static/css/custom.css), and [_templates/layout.html](../../_templates/layout.html) | Review navbar/footer templates, cards, code blocks, breadcrumbs, narrow screens, and nested-page paths. Keep styling separate from product semantics. | +| Change navigation or move a page | The owning toctree, often [hub/index.rst](../../hub/index.rst), [index-developer.rst](../../hub/index-developer.rst), or [index-learn.rst](../../hub/index-learn.rst) | Update visible panels and hidden trees together; review labels, `:doc:` consumers, literal HTML links, redirects, and custom navbar/footer links. | + +For product-configuration testing rather than documentation rendering, use [Configuration change lifecycle](../testing/configuration-change-lifecycle.md). This repository's HTML build is not a runtime acceptance test. + +## 3. Preview with the actual build contract + +### Prerequisites and the environment trap + +The [README](../../README.md) documents a Python 3 virtual environment and says `pydata-sphinx-theme` needs at least Python 3.7. [requirements.txt](../../requirements.txt) pins an older toolchain, notably `Sphinx==4.5.0`, `pydata-sphinx-theme==0.8.0`, `docutils==0.16`, `sphinxcontrib-openapi==0.7.0`, and `sphinx-panels==0.6.0`. CI selects **Python 3.9 on Ubuntu 22.04**; the root build image instead selects **Python 3.8.12 on Debian Bullseye**. The README's lower bound is not evidence that every newer Python/dependency combination has been tested. + +For a contributor doing a local preview, the documented setup is: + +```sh +python3 -m venv .python_env +. .python_env/bin/activate +pip install --upgrade pip +pip install wheel +pip install -r requirements.txt +make html +``` + +These are instructions, not commands run during this wiki's research. `sphinx-build` must be on `PATH` or supplied through `SPHINXBUILD`. **Keep `VIRTUAL_ENV` defined:** `conf.py` directly evaluates `os.environ['VIRTUAL_ENV']` when forming `exclude_patterns`, so an absent key fails configuration loading. Activation supplies it locally; CI explicitly sets it to `venv`; the root Dockerfile defines it as an empty string. The CI value is configuration input, not evidence that CI created a virtual environment. + +Normal Unix `make html` also needs **Pandoc and a LaTeX toolchain**, because it generates legal downloads before Sphinx. The README lists Pandoc and base/recommended LaTeX packages for Ubuntu, and `brew install pandoc mactex` for macOS. The workflows install a larger TeX/font/Ghostscript set plus Pandoc 2.13; consult those recipes when matching CI rather than relying on the README's reference to an old `.travis.yml`. + +After a contributor builds successfully, the README points to `_build/html/index.html`, or documents serving `_build/html` with `python3 -m http.server` for search summaries. Also inspect `_build/html/hub/index.html`, the configured home-page output. No preview server was started for this page. + +### `html` generates downloads before rendering + +[Makefile](../../Makefile) defaults `SPHINXOPTS ?= -W`, builds from `.` with a shared `_build/doctrees` cache, and writes HTML to `_build/html`. Its dependency chain is: + +1. `saasdoc` converts `terms.rst`, `legal-service.rst`, `pricing.rst`, and `legal-dap.rst` to Pandoc JSON intermediates. It generates numbered appendix headings and shifts the appended source headings. +2. `saaspdf` and `saasdocx` assemble `files/sesam-cloud-service-contract.pdf` and `.docx`; `partnerdocx` reads `partner-agreement-form.rstx` explicitly as RST and writes `files/partner-agreement.docx`. +3. `html: saas partnerdocx` invokes `sphinx-build -b html` only after those downloads exist. [legal.rst](../../legal.rst) references all three downloads. + +[pagebreak.lua](../../pagebreak.lua) translates raw LaTeX `\newpage` / `\pagebreak` blocks and standalone form-feed paragraphs to output-specific page breaks, including DOCX OpenXML. TeX output is left unchanged. The generated contract files are ignored by [files/.gitignore](../../files/.gitignore); `_build` is ignored by the root [.gitignore](../../.gitignore). They are outputs, not the place to edit wording. + +### `html_no_saas` is a download-generation shortcut, not verified content exclusion + +The README describes `SPHINXOPTS= make html_no_saas` as building without SaaS content. **The recipe does not implement a Sphinx content filter.** It runs `touch` on the three download paths, then invokes the same HTML builder with the same source/configuration options. A missing download becomes an empty placeholder; an existing file is not replaced with fresh contract content. The target itself invokes no Pandoc conversion. Neither this recipe nor `conf.py` adds a SaaS exclusion or tag. + +Use this only as a deliberate preview shortcut and do not publish its placeholder/stale downloads. Also note that `SPHINXOPTS=` clears the Makefile's default `-W`; it weakens warning enforcement rather than merely selecting a flavor. + +### Alternative builders and Windows are not equivalent publishing paths + +The Makefile provides `dirhtml`, `singlehtml`, `text`, `pickle`, `json`, XML/pseudo-XML, EPUB, HTML/Qt/Apple/Devhelp help formats, gettext, changes, LaTeX/PDF, man, and Texinfo/Info targets. Most invoke the selected Sphinx builder directly and **do not depend on the legal-download generation used by `html`**. `latexpdf` adds a nested `all-pdf` make step; `info` invokes `makeinfo`; gettext deliberately does not share the doctree environment. LaTeX, man-page, and Texinfo document lists are commented out in `conf.py`, so target availability is not a verified release artifact configuration. Raw HTML substitutions, literal `.html` links, and download dependencies require focused review outside the normal HTML path. + +[make.bat](../../make.bat) is a separate Windows wrapper: it uses supplied `SPHINXOPTS` without defaulting to `-W`, attempts a Python-module fallback when `sphinx-build` is missing, and its `html` branch directly invokes Sphinx. It has no Unix `saas`, `partnerdocx`, `html_no_saas`, or Docker dependency chain. Define `SPHINXOPTS=-W` explicitly for comparable warning treatment, keep `VIRTUAL_ENV` defined, and ensure referenced downloads exist. Windows `html` is not proof that Unix contract generation will pass. + +## 4. Validate the change without overstating the checks + +| Check | What is actually available | What it does not establish | +| --- | --- | --- | +| Warning-sensitive HTML build | Unix `make html` uses `-W` by default; PR CI runs that target, including contract generation | A successful build is not a product-runtime test, exhaustive browser review, or external-link check. | +| External links | `make linkcheck` invokes Sphinx's linkcheck builder and reports to `_build/linkcheck/output.txt` | It is available but not invoked by the inspected PR/master workflows. It contacts external URLs; do not run it during restricted source-only wiki research. | +| Doctest and coverage | Makefile and `make.bat` advertise targets with “if enabled” qualifications | `conf.py` enables neither `sphinx.ext.doctest` nor `sphinx.ext.coverage`. Do not describe these targets as an enabled test suite. | +| Specification/example review | The HTML build renders OpenAPI directives and RST examples | The inspected workflows contain no separate JSON/YAML schema validation, lint, or example execution step. | +| Focused visual review | A contributor can inspect home and nested pages, reference tables, downloads, and responsive styling after a build | No visual or browser check was performed for this guide. | + +A safe review sequence is: locate the owning source and consumers; preserve exact keys/defaults/units and warnings; review changed labels, toctrees, includes, substitutions and download paths; run the appropriate warning-sensitive build in an authorized development environment; inspect affected pages and contracts; then, when external access is permitted, use linkcheck and retain complete failure output. Distinguish missing tools, missing `VIRTUAL_ENV`, Pandoc/TeX conversion failures, unresolved references, and visual regressions rather than suppressing all warnings to make CI green. + +## 5. Presentation assets and overrides + +`conf.py` enables `sphinxarg.ext`, OpenAPI, panels, not-found pages, copy buttons, redirects, and Jinja. It selects `pydata_sphinx_theme`, `_templates`, `_static`, `css/custom.css`, `sesamlogo.svg`, and `favicon.svg`. Sidebar configuration uses `search-field` and `sidebar-nav-bs`; theme options select the custom right menu, footer items, navigation depth 5, and TOC display level 1. + +The [layout override](../../_templates/layout.html) extends `!layout.html`, customizes footer/body blocks, defines analytics and marketing script embeds, and inserts [breadcrumb.html](../../_templates/breadcrumb.html) with a condition comparing **bare page names** such as `index` and `index-developer`. With `master_doc = 'hub/index'`, do not assume those comparisons also match names prefixed with `hub/`. Breadcrumbs use `pathto(master_doc)` and parent links. + +[right-menu.html](../../_templates/right-menu.html) adds Community through a root-relative `/community.html` link and external Support/Sign up links. [left-sidebar-bottom.html](../../_templates/left-sidebar-bottom.html) links Legal and Terms to the public docs host; [iso.html](../../_templates/iso.html) supplies footer text. Those authored links may leave a local preview or assume deployment at a host root. Review that behavior when changing deployment paths. + +[custom.css](../../_static/css/custom.css) imports web fonts and overrides breadcrumbs, sidebar/content widths, navigation, cards/buttons, code tables, footers, and responsive layouts. [_static/custom.js](../../_static/custom.js) contains an older jQuery/Clipboard copy-button implementation, but `conf.py` does not register it through `html_js_files`; the configured copy-button mechanism is the `sphinx_copybutton` extension. Do not assume the presence of an asset means it is activated. RST figures and downloads also live outside `_static`, for example in `hub/images`, `hub/databrowser-guide-images`, and `hub/files`; keep their paths relative to the consuming source. + +## 6. Build, publish, and managed-wiki flow + +```mermaid +flowchart TD + Sources["Authored RST and Swagger YAML"] --> Render["Sphinx HTML build"] + Legal["Legal RST and partner RSTX"] --> Convert["Pandoc and LaTeX contract generation"] + Convert --> Downloads["PDF and DOCX downloads"] + Downloads --> Render + Config["conf.py and templates and assets"] --> Render + PR["Pull request on Ubuntu with Python 3.9"] --> Html["make html"] + Master["Push to master"] --> Html + Html --> Convert + Html --> Render + Render --> Output["_build/html"] + Output --> Pack["Master only: make docker stages docker/dist/html"] + Pack --> Image["nginx serving image"] + Image --> HubPush["docker/build.sh pushes selected image tag"] + HubPush --> Registry["Master tags and pushes ACR tag and commit SHA"] + Registry --> Deploy["Azure Container App deploys SHA image"] + WikiTrigger["Daily schedule or manual dispatch"] --> WikiRun["openwiki code --update --print"] + WikiRun --> WikiPR["Scoped OpenWiki update pull request"] + WikiRun --> WikiFailure["Failure propagated after preserving completed pages"] +``` +*The authored-site build feeds container publishing only on the master workflow; managed OpenWiki updates produce a separate scoped pull request.* + +### PR checks and master deployment + +[.github/workflows/pull_request.yml](../../.github/workflows/pull_request.yml) runs on `pull_request`: checkout, Python 3.9, contract tools, Pandoc 2.13, pinned pip requirements, then `VIRTUAL_ENV=venv make html`. It does not publish an image or deploy the site. + +[.github/workflows/merge.yml](../../.github/workflows/merge.yml) runs on **any push to `master`**, despite its PR-merge-oriented name. It prepares the same Python/contract toolchain, logs into the image registry, sets `DOCKER_BUILD_PUSH=1` and `VIRTUAL_ENV=venv`, defaults `TAG` to `latest`, and runs `make html` followed by `make docker`. Since `docker` itself depends on `html`, the dependency is traversed again; do not treat the second command as packaging-only. + +`make docker` stages `_build/html` under `docker/dist/html`, calls [docker/build.sh](../../docker/build.sh), then removes the staging directory after the script returns successfully. The script uses `set -e`, defaults `DOCKER_BUILD=1`, `DOCKER_BUILD_PUSH=0`, and `TAG=latest`, and accepts `IMAGE_NAME` and `DOCKER_BUILD_OPTIONS`. Master overrides push behavior. A failed build/push can leave staging behind. Unix `make clean` removes `_build/*` and `docker/dist`, but does not remove the generated downloads under `files/`. Publishing additionally requires Docker availability and registry authentication. + +The master workflow retags the serving image for Azure Container Registry using both the selected tag and `github.sha`, pushes both, authenticates to Azure, and deploys the **SHA-tagged image** with `azure/container-apps-deploy-action@v1`. Required credential inputs are `DOCKER_PASSWORD`, `ACR_PASSWORD`, and `AZURE_CREDENTIALS`; deployment inputs are `acrName`, `containerAppName`, `resourceGroup`, and `imageToDeploy`. Keep credential values and account identifiers out of documentation examples. This source establishes the deployment request, not that a particular image push or live deployment succeeded. + +### Build image versus serving image + +The root [Dockerfile](../../Dockerfile) is a **build environment**: Python 3.8.12, `/docs`, Pandoc, Make, TeX/fonts and supporting graphics tools, pip requirements, `VIRTUAL_ENV=""`, and `CMD ["make", "html"]`. It copies requirements, not the full authored source tree; sources must be supplied to that work directory when using it. The inspected CI builds on the runner rather than using this image as its documented build step. + +[docker/Dockerfile](../../docker/Dockerfile) is instead the **published serving image**, based on `nginx:stable`. It adds staged `dist/*` and [default.conf](../../docker/default.conf). Nginx listens on port 80, serves `/usr/share/nginx/html`, and routes 404 and 50x errors to internal error pages. Not-found generation is configured through `notfound.extension` and `notfound_no_urls_prefix = True`; the Sphinx redirect map is separate from these nginx error-page rules. + +### Managed OpenWiki updates are separate automation + +[.github/workflows/openwiki-update.yml](../../.github/workflows/openwiki-update.yml) runs daily at `0 8 * * *` or via `workflow_dispatch`, with content/PR write permissions. It checks out full history so `openwiki code --update` can compare against the last documented commit, sets up Node.js 22, and installs `openwiki@0.7.2` with optional Mermaid/jsdom validation dependencies. Provider/model, authentication, and optional tracing are environment inputs; never copy their secret values. + +The update command uses `continue-on-error: true`. Unless cancelled, later steps remove `openwiki/.run.json` and create/update a PR on `openwiki/update`, staging only `openwiki`, `AGENTS.md`, the managed workflow, and `CLAUDE.md` if present. The PR body explicitly permits completed-page progress to survive a failed run, and a final step still propagates failure. This is a recoverable documentation-update workflow, not Sphinx publishing or permission to rewrite original RST/tooling. + +[AGENTS.md](../../AGENTS.md) treats the wiki as optional just-in-time context and asks normal contributors to change source docs rather than hand-edit generated pages unless explicitly requested. This assigned page is such an explicit wiki-generation task. See [Quickstart](../quickstart.md) for the short contributor path and [Legacy data access](../references/legacy-data-access.md) for the historical scope of databrowser/GDPR material. diff --git a/openwiki/workflows/dtl-joins-and-transformation-patterns.md b/openwiki/workflows/dtl-joins-and-transformation-patterns.md new file mode 100644 index 00000000000..ba9c42777fa --- /dev/null +++ b/openwiki/workflows/dtl-joins-and-transformation-patterns.md @@ -0,0 +1,361 @@ +--- +type: transformation workflow +title: DTL joins, dependency-safe enrichment, and child entities +description: Design indexable DTL joins and enrichment that remains correct under incremental dependency reprocessing. Choose filtering and one-to-many output patterns with explicit deletion tracking, cardinality safeguards, and configuration-output tests. +tags: [dtl, joins, dependency-tracking, transformations, child-entities, testing] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-4bbe4e83d74f3fe902420d24 + resource: repo://hub/changelog.rst + - id: openwiki-source-44e50825666ef41bd80ca9cf + resource: repo://hub/documentation/building-blocks/datasets.rst + - id: openwiki-source-ab28f0a659eec676b26e672b + resource: repo://hub/documentation/data-management/entity-data-model.rst + - id: openwiki-source-34c29fade70b499ae06acc8d + resource: repo://hub/documentation/data-management/recursion-hierarchy-pattern.rst + - id: openwiki-source-140d62f5eefd9421919aa273 + resource: repo://hub/documentation/data-management/splitting-out-lists-of-sub-objects-pattern.rst + - id: openwiki-source-5836a7a1bfae906d1c6a7cca + resource: repo://hub/documentation/operations/continuous-integration.rst + - id: openwiki-source-77b000efded2deb34b873d22 + resource: repo://hub/documentation/operations/pump-execution.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-92b30a880e4f783e38f1db9c + resource: repo://hub/documentation/operations/troubleshooting.rst + - id: openwiki-source-b88ab8bcd7069b9437346a72 + resource: repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst + - id: openwiki-source-3feb3cb0150ced7c7dca37f9 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst + - id: openwiki-source-9c3ad765d7f032ba45c225e7 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst + - id: openwiki-source-3ba3816116976234f8f45a82 + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst + - id: openwiki-source-048a533187623407575421a0 + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-emit-children.rst + - id: openwiki-source-12eefe420238d0851d538a0d + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms.rst + - id: openwiki-source-c27c69f00f9a3913135cc0c4 + resource: repo://hub/dtl/caveats.rst + - id: openwiki-source-6feda37ec208e72ceae97c17 + resource: repo://hub/dtl/dtl-functions-comparisons.rst + - id: openwiki-source-5352a3d31d0f85d5dfdf2571 + resource: repo://hub/dtl/dtl-functions-dictionaries.rst + - id: openwiki-source-e222c4aa209056e7340716af + resource: repo://hub/dtl/dtl-functions-hops.rst + - id: openwiki-source-1359990eecf7cf20c6649cff + resource: repo://hub/dtl/dtl-functions-lists.rst + - id: openwiki-source-86472cb6932154fc6d5f5b11 + resource: repo://hub/dtl/dtl-functions-misc.rst + - id: openwiki-source-b080c011b8382aaeafbbc37b + resource: repo://hub/dtl/dtl-functions-transforms.rst + - id: openwiki-source-133c24a94ca8f7beb23e7ab4 + resource: repo://hub/dtl/joins.rst + - id: openwiki-source-a2667ab1ef7f5878967b90f9 + resource: repo://hub/dtl/variables.rst + - id: openwiki-source-c4f45d3a0f3643170205d462 + resource: repo://hub/features/dependency-tracking.rst + - id: openwiki-source-476492e27f30fbe648642588 + resource: repo://hub/features/namespaces.rst +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# DTL joins, dependency-safe enrichment, and child entities + +A transformation change has two correctness questions: **does it produce the right output now, and will later changes reprocess or delete the right output?** A successful preview answers only the first. Join-key rewrites, nested rules, discarded parents, and direct child emission can all hide problems that appear only during incremental runs. + +This guide describes the repository's **documented invariants**, not an inspected runtime implementation. For expression evaluation basics, see [DTL evaluation and operators](../concepts/dtl-evaluation-and-operators.md); for identity and special fields, see [Entities, datasets, and identifiers](../concepts/entities-datasets-and-identifiers.md). + +## 1. Establish the transformation boundary + +A pipe's optional `transform` is either one configuration object or a list forming a chain between source and sink. A DTL transform requires `rules.default`, which runs on each source entity; other named rules are invoked through `apply` or `apply-hops`. `_S` denotes the source of the current rule and `_T` its target. In an applied rule, `_P._S` refers to the parent's source, not the nested value now bound to `_S`. + +Keep these responsibilities separate: + +- **DTL:** join, project, filter, and construct target or child entities. +- **Dataset source:** the stored source entities against which inverse dependency traversal must work. +- **Dataset indexes:** lookup structures declared through joins, subsets, or explicit sink indexes. +- **Dataset sink:** persist output and perform the configured deletion and child-delta tracking. +- **Separate `emit_children` pipe:** expand persisted `$children` into standalone entities. + +References: [transform chain](../../hub/documentation/service-configuration/pipes/configuration-transforms.rst#L6-L14), [DTL configuration](../../hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst#L23-L33), [variable contexts](../../hub/dtl/variables.rst#L9-L55), [dataset indexes](../../hub/documentation/building-blocks/datasets.rst#L17-L37). + +## 2. Build a navigable, indexable join + +### Join equality is overlap, not exact list equality + +Within a recognized join, `eq` succeeds if **any values overlap**. With aliases `q` and `t`, all four shapes use that rule: + +| Shape | Synthetic predicate | Matching example | +| --- | --- | --- | +| Scalar–scalar | `["eq", "q.key", "t.key"]` | `7` and `7` | +| Scalar–list | `["eq", "q.key", "t.keys"]` | `7` and `[7, 9]` | +| List–scalar | `["eq", "q.keys", "t.key"]` | `[5, 7]` and `7` | +| List–list | `["eq", "q.keys", "t.keys"]` | `[5, 7]` and `[7, 9]` | + +Functional join arguments follow the same overlap rule. **Outside a join**, ordinary `eq` coerces arguments to lists and compares them exactly. `in` is different again: all values in its first argument must exist in the second, and a null or empty first argument returns false. Use `intersects` for an ordinary overlap predicate; do not substitute `in` for an indexable join edge. + +`null` values and deleted entities are not indexed and are therefore not traversed by joins. Do not extend that protection to every kind of “blank”: the troubleshooting guide specifically identifies blank-property joins as a cause of excessive equality-set cardinality. + +References: [join semantics and exclusions](../../hub/dtl/joins.rst#L25-L56), [ordinary `eq`](../../hub/dtl/dtl-functions-comparisons.rst#L16-L39), [`in`](../../hub/dtl/dtl-functions-lists.rst#L333-L383), [blank-key failures](../../hub/documentation/operations/troubleshooting.rst#L61-L95). + +### Distinguish traversal edges from result predicates + +An `eq` is considered a join function only when **each argument references exactly one unique dataset alias**. An expression may reference several properties of that one alias, but mixing aliases inside one argument violates this requirement. Alias-to-literal comparisons are filters, not edges connecting datasets. + +A `hops` specification declares `datasets` as strings such as `"tickets t"`. Every declared alias must be joined and reachable from the source entity; otherwise compilation fails. A list in `where` is implicitly combined with `and`. + +This synthetic enrichment starts with a queue entity such as `{"_id":"q7"}`. It finds agents through open tickets: + +```json +["hops", { + "datasets": ["tickets t", "agents a"], + "where": [ + ["eq", "_S._id", "t.queue_id"], + ["eq", "t.agent_id", "a._id"], + ["eq", "t.state", "open"] + ], + "return": "a", + "trace": "queue-agents" +}] +``` + +The first two predicates establish the traversal. The third is an ordinary equality filter; this example assumes `t.state` is a scalar string. Do not assume that adding a predicate also narrows the indexed equality set used to find candidates. + +The documentation's compiler warning explains a particularly important case: when two or more join expressions connect the **same two aliases**, only the first is treated as a join; the others are ordinary equality comparisons. This is a documented warning, not a query-planner guarantee that every `eq` gets an index. + +References: [alias requirement](../../hub/dtl/joins.rst#L52-L56), [`hops` input and reachability](../../hub/dtl/dtl-functions-hops.rst#L21-L31), [compile-time validation](../../hub/dtl/dtl-functions-hops.rst#L88-L108), [compiler warning and multiple predicates](../../hub/changelog.rst#L1764-L1791). + +### Use composite tuples for a composite lookup + +Instead of assuming separate predicates on email and region will both become traversal indexes, express the composite key in one join: + +```json +["eq", + ["tuples", "_S.email", "_S.region"], + ["tuples", "a.email", "a.region"] +] +``` + +Each side still references only one alias. `tuples` constructs the **product** of its arguments' values, with tuple length equal to argument count and null values ignored. For scalar inputs `"sam@example.test"` and `"EU"`, the key list is `[["sam@example.test", "EU"]]`. + +With multivalued inputs this is a Cartesian product, not a zip of corresponding list positions. Test that the combinations express the intended identity and that their number is bounded. Composite joins improve precision, but they do not make dirty, widely shared keys unique. + +Secondary-index maintenance is automated. Joins and subset definitions implicitly declare indexes; a dataset sink's `indexes` array can explicitly declare index expressions. The dataset documentation warns that orphaned indexes currently require removal through the UI or API, so a join-expression change also merits an index cleanup review. + +References: [`tuples`](../../hub/dtl/dtl-functions-misc.rst#L128-L165), [composite-join guidance](../../hub/dtl/joins.rst#L46-L50), [index lifecycle](../../hub/documentation/building-blocks/datasets.rst#L17-L37), [explicit sink indexes](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L65-L75). + +## 3. Preserve the inverse dependency path + +Forward enrichment follows the source's relationships. Dependency tracking takes `hops` and `apply-hops` expressions and traverses them in reverse when a referenced entity changes, finding source entities to reprocess. + +```mermaid +flowchart LR + Q["Source dataset: queues"] -->|forward queue join| T["Referenced dataset: tickets"] + T -->|forward agent join| A["Referenced dataset: agents"] + Q --> E["DTL queue enrichment"] + A -->|return agent values| E + E --> S["Sink dataset: queue-with-agents"] + A -.->|inverse traversal on change| T + T -.->|inverse traversal to source| Q + Q -.->|reprocess matching queues| E +``` +*Forward joins enrich queues with agents; inverse joins identify stored queue entities that must be reprocessed after referenced data changes.* + +The diagram is grounded in [inverse-traversal caveats](../../hub/dtl/caveats.rst#L9-L17) and the [dependency-tracking feature](../../hub/features/dependency-tracking.rst#L8-L14). It illustrates reprocessing, not a promise that the current implementation rewrites the source log or adds `_tracked`: the entity model says that marker belongs to an older implementation. + +### Changes that can break incremental enrichment + +| Change | Documented constraint | Safe change approach | +| --- | --- | --- | +| Use a non-`dataset` source, including `merge` | Dependency tracking works only with the `dataset` source. | Materialize the source into a dataset, then enrich in a second dataset-source pipe. | +| Move a hopping DTL transform later in a chain | Join criteria must evaluate to the same values as on the pipe's stored source entity. Earlier transforms must not change properties involved in those criteria. | Keep join inputs invariant, or persist the normalized entity in an intermediate dataset and use that as the enrichment source. | +| Enable `add_namespaces` | Namespaces are added before the first transform. Inverse traversal matches stored source entities, not those rewritten transform inputs. | Verify equivalent key values in both directions; the caveat calls for effectively stripping namespaces again when necessary. Prefer a stored boundary for intentional normalization. | +| Rely on `_S.$ids` being synthesized | With namespaced identifiers enabled, absent `$ids` dynamically includes `_id` as an NI prefixed by the pipe's identity namespace. | Test entities both with and without explicit `$ids`; do not assume the dynamic value matches a stored inverse index key. | +| Disable `track-dependencies` in a HOP_SPEC | It defaults to `true`, but can be disabled for that specification. | Treat disabling it as an explicit freshness trade-off, not a cardinality fix. Define how output will be refreshed. | +| Replace hopping with `lookup-entity` | Lookup returns an entity by `_id`, or null if absent; its dataset must be populated. It does **not** support dependency tracking. | Use it only when automatic refresh on referenced changes is unnecessary, or plan a reset/reprocessing policy. | + +References: [source and chain limitations](../../hub/dtl/caveats.rst#L9-L17), [namespace timing](../../hub/features/namespaces.rst#L79-L89), [tracking switch](../../hub/dtl/dtl-functions-hops.rst#L65-L78), [`lookup-entity`](../../hub/dtl/dtl-functions-hops.rst#L173-L200), [old `_tracked` marker](../../hub/documentation/data-management/entity-data-model.rst#L124-L134). + +**Nested enrichment:** `apply` transforms supplied values using a named rule. `apply-hops` first evaluates hops, then passes the results through the named rule. If that rule contains `hops` or `apply-hops`, use `apply-hops`: calling `apply` on such a rule is not allowed, because dependency tracking needs the combined traversal structure. An `apply` over local sub-objects with no nested hops remains appropriate. + +Reference: [`apply` and `apply-hops`](../../hub/dtl/dtl-functions-dictionaries.rst#L405-L469). + +## 4. Control scope, ordering, and recursion + +### Subset lookup + +A subset exposes indexed values as a dataset-like slice. Within `hops`, `subsets` maps a declared alias to an `eq` expression whose left side is the index expression and whose right side selects the subset. It replaces the deprecated `prefilters` property. For the ticket example, add this member to restrict lookup to one site: + +```json +"subsets": { + "t": ["eq", "_S.site", "east"] +} +``` + +Here `_S.site` is the subset index expression over ticket entities, not a new queue-to-ticket join edge. Keep the navigable joins in `where`. + +A dataset **source** uses the singular `subset` property. Its right-hand value must be a literal, not an expression; subset `eq` uses overlap semantics. The source documentation requires indexes version 2 for subset deletion support because version 1 does not support deletes. Functional subset indexes support almost all expression functions, but exclude non-deterministic functions and functions referencing other datasets. + +References: [`hops.subsets`](../../hub/dtl/dtl-functions-hops.rst#L80-L86), [dataset source subsets](../../hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L41-L49), [functional subset indexes](../../hub/documentation/building-blocks/datasets.rst#L28-L37). + +### Projection is not business ordering + +`hops` forms a table with one column per alias, then projects it to a list through `return`. With no `return`, it returns the last declared alias. A string can select comma-separated aliases; an expression can project a template. `return` may appear only on the last HOP_SPEC and cannot be used with `recurse`. + +The hops reference guarantees deterministic order based on entity `_id` values when the same entities are processed again. It does **not** guarantee ordering by a returned name, priority, or date. Apply `sorted` or `sorted-descending` explicitly for that order. `sorted` can use a per-value key expression and does not remove duplicates. + +For example, use `["sorted", "_.priority", ]` conceptually when priority is the selection key. If ties matter, define and test a further deterministic selection policy. `first` merely takes the first value, returning null for empty input: it neither proves uniqueness nor repairs an ambiguous join. The troubleshooting guide flags using `first` to obtain a “unique” hops result; the more precise hops reference documents repeatability for identical inputs, not business uniqueness. + +References: [projection and ordering](../../hub/dtl/dtl-functions-hops.rst#L53-L63), [determinism](../../hub/dtl/dtl-functions-hops.rst#L99-L108), [sorting](../../hub/dtl/dtl-functions-lists.rst#L845-L945), [`first`](../../hub/dtl/dtl-functions-lists.rst#L176-L204), [selection warning](../../hub/documentation/operations/troubleshooting.rst#L76-L84). + +### Recursive hierarchy traversal + +For category entities with `_id` and `parent_id`, this synthetic expression retrieves ancestors with a bounded traversal: + +```json +["hops", { + "datasets": ["categories c"], + "where": ["eq", "_S.parent_id", "c._id"], + "recurse": true, + "exclude_root": true, + "max_depth": 4 +}] +``` + +`recurse` defaults to false. When enabled, output feeds the next evaluation until output is exhausted or `max_depth` stops it. The default depth is `10`; `null` requests traversal until exhaustion. `exclude_root` defaults to false and controls inclusion of the original recursion input. Both depth and root exclusion are meaningful only for recursive specifications. Multiple HOP_SPEC arguments pass each output to the next specification, useful for a recursive phase followed by another lookup. + +Set an explicit finite depth appropriate to the model. The hierarchy pattern recommends it as protection against never-ending recursion; do not infer undocumented cycle-detection guarantees. Test root inclusion, a chain longer than the bound, branching, and cyclic input. Sort the final result if the consumer needs a particular order. + +References: [recursion options](../../hub/dtl/dtl-functions-hops.rst#L33-L63), [chaining](../../hub/dtl/dtl-functions-hops.rst#L88-L91), [hierarchy safety](../../hub/documentation/data-management/recursion-hierarchy-pattern.rst#L1-L7). + +## 5. Choose filtering and one-to-many output by deletion behavior + +The names below are not interchangeable. In particular, the **list expression** `filter` returns selected values, whereas the **transform operator** `filter` controls target emission and dataset deletion signaling. + +| Mechanism | Output behavior | Deletion and orphan risk | +| --- | --- | --- | +| List `filter` | Returns values whose predicate is true, with `_` bound to each value. | Removing a value from a local list is not itself a sink deletion instruction. | +| Transform `filter` | On false or omitted condition, stops further transformations. For a dataset sink it emits the target with `_filtered: true`. | The dataset sink deletes an existing, not-already-deleted entity with that ID, including during incremental sync. Handle `_filtered` carefully in later transforms. Other sinks discard the filtered entity. | +| `discard` | On false or omitted condition, stops transformations and drops the target without emitting it. | Does not delete a previously emitted entity in the sink. Use only when that ID has never been sent, or when you intentionally accept that behavior. | +| `create` | Emits additional entities directly to the DTL output stream. | No parent-child delta mechanism is established by direct emission. The troubleshooting guide warns of orphaned children when `create` is used without rescans. | +| `create-child` | Adds entities to the target's `$children`, rather than emitting standalone output. | Intended for dataset sinks, where previous and current child values can be compared to detect removals. | +| Sink `track_children` | Compares `$children` with the previous parent version and updates it with a delta before persistence. | Enables removed-child detection during incremental sync. Inferred true if any transform uses `create-child`, but explicitly setting false overrides it. | +| Separate `emit_children` transform | Emits `$children` entities having `_id`; does not emit the parent. | Must run in a separate pipe. In a chain that removes the parent before storage, deletion tracking of emitted children cannot work as documented. | + +References: [list filtering](../../hub/dtl/dtl-functions-lists.rst#L149-L174), [`filter` and `discard`](../../hub/dtl/dtl-functions-transforms.rst#L514-L607), [non-dataset filtered output](../../hub/documentation/data-management/entity-data-model.rst#L113-L121), [`create` and `create-child`](../../hub/dtl/dtl-functions-transforms.rst#L365-L417), [`track_children`](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L78-L93), [`emit_children` boundary](../../hub/documentation/service-configuration/pipes/configuration-transforms-emit-children.rst#L7-L17), [orphan warning](../../hub/documentation/operations/troubleshooting.rst#L82-L95). + +### Filter before direct emission when rejection must cancel everything + +```json +"default": [ + ["copy", "_id"], + ["filter", ["eq", "_S.active", true]], + ["add", "label", "_S.label"] +] +``` + +This synthetic rule assumes an unchanged source/target ID and a dataset sink. An entity that later becomes inactive can be removed from the sink instead of silently left behind. Neither `filter` nor `discard` cancels entities **already emitted by `create`**: put the gate before direct creation if rejection must prevent those outputs. + +For deliberate control of deletion, the transform reference recommends setting `_deleted` instead of using `filter`. The documented pattern for stopping further work on deleted input, `["filter", ["neq", "_S._deleted", true]]`, is limited to dataset sinks where `_id` is not rewritten. + +A full-run cleanup is a separate mechanism: dataset sink `deletion_tracking` defaults to true and deletes entities that existed before the full run but were not seen during it. It does not make `discard` an incremental deletion signal. Likewise, `suppress_filtered` is an optimization, not a replacement deletion design: it should be used only when output contains exactly one version per `_id`. + +References: [operator ordering and deletion](../../hub/dtl/dtl-functions-transforms.rst#L529-L607), [deleted-input guard](../../hub/documentation/service-configuration/pipes/configuration-transforms.rst#L62-L64), [full-run deletion](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L140-L154), [filtered-output suppression](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L170-L174). + +### Persist the parent before emitting tracked children + +The following two synthetic pipe configurations assume string parent and line IDs and explicitly disable namespaced identifiers to keep the example's IDs simple. The parent uses an empty current child list on deleted input rather than rebuilding live children. + +```json +{ + "_id": "orders-with-lines", + "type": "pipe", + "namespaced_identifiers": false, + "source": {"type": "dataset", "dataset": "orders"}, + "transform": { + "type": "dtl", + "rules": { + "default": [ + ["copy", ["_id", "_deleted"]], + ["add", "$children", ["list"]], + ["if", ["neq", "_S._deleted", true], + ["create-child", ["apply", "line", "_S.lines"]]] + ], + "line": [ + ["add", "_id", ["concat", "_P._S._id", "/", "_S.line_id"]], + ["add", "order_id", "_P._S._id"], + ["add", "quantity", "_S.quantity"] + ] + } + }, + "sink": {"type": "dataset", "track_children": true} +} +``` + +```json +{ + "_id": "order-lines", + "type": "pipe", + "namespaced_identifiers": false, + "source": {"type": "dataset", "dataset": "orders-with-lines"}, + "transform": {"type": "emit_children"}, + "sink": {"type": "dataset"} +} +``` + +For parent `o7` and local line `l2`, the child ID is `o7/l2`. Include the parent identity in a child ID when local sub-object IDs can repeat under different parents; the splitting pattern explicitly recommends this. Use an unambiguous encoding if real identifiers can contain the chosen delimiter. Test that two parents cannot unintentionally produce the same child ID. + +On a later removal, the tracked parent sink compares the previous and current `$children` and includes deleted-child information before the separate emitter consumes it. Check the **persisted parent**, not just the DTL preview, because the sink updates `$children` immediately before writing. + +`id_required` defaults to true: the DTL transform fails for missing or non-string target `_id`, and for invalid `create`/`create-child` values such as non-dicts or missing/non-string IDs. With false, invalid values are ignored instead. Do not disable this merely to hide malformed output. + +References: [child delta contract](../../hub/dtl/dtl-functions-transforms.rst#L395-L417), [sink-side delta update](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L78-L93), [child identity pattern](../../hub/documentation/data-management/splitting-out-lists-of-sub-objects-pattern.rst#L1-L3), [ID validation](../../hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst#L29-L33). + +## 6. Diagnose cardinality before raising limits + +A small final projection can hide a large candidate equality set. Blank or widely shared keys, independent predicates mistaken for composite indexes, and multivalued joins deserve inspection in **both** directions. + +1. Give each expensive hops expression a unique `trace` string, on its **last HOP_SPEC only**. The documented trace records maximum cardinality of join statements and is available in pipe execution log `pump-completed` and `pump-failed` entities. +2. Inspect `system:pump_execution:`. Its metrics include `hops.max-cardinality`, `hops.max-cardinality-last-run`, and `hops.total-rows-last-run`; rows can contain one entity per bound alias. This diagnostic dataset is not a stable public application API. +3. Inspect actual key values, including empty strings, missing/null values, list widths, tuple products, and whether each predicate became a traversal edge or only a comparison. Improve source quality and key precision rather than masking the problem with `first`. +4. Check pipe `dependency_tracking` warning/error thresholds for entity counts and total bytes. Warnings go to the log; exceeding error thresholds fails the pump. Defaults are inherited from service metadata. Raising error thresholds too far risks excessive memory use. +5. Enable `dependency_tracking.enable_hops_thresholds` in development so the same thresholds also apply to ordinary hops, not only inverse dependency processing. Add rescans where residual dependency-limit failures remain possible, as the troubleshooting guide recommends; a rescan does not repair an invalid inverse join. + +If hopping to the pipe's own sink dataset is unavoidable, the hops reference requires `batch_size: 1` for visibility of entities being written: unflushed batch entities are invisible. It also requires sink `set_initial_offset: "onload"` to avoid waiting for its own sink to become populated. Treat this as a special-case dependency and visibility hazard, not the normal enrichment pattern. + +References: [trace contract](../../hub/dtl/dtl-functions-hops.rst#L70-L78), [execution dataset boundary](../../hub/documentation/operations/pump-execution.rst#L1-L13), [hops metrics](../../hub/documentation/operations/pump-execution.rst#L711-L721), [threshold controls](../../hub/documentation/service-configuration/pipes/configuration-pipes.rst#L206-L233), [troubleshooting remedies](../../hub/documentation/operations/troubleshooting.rst#L89-L105), [self-sink hops warning](../../hub/dtl/dtl-functions-hops.rst#L110-L114). + +## 7. Verify configuration output and incremental transitions + +Use configuration-output tests, not just expression examples. The documented local workflow runs pipes until queues are empty while output pipes are disabled or unable to contact external systems, then compares endpoint output with expected results. Each endpoint test has `expected/.json` and `expected/.test.json`; `pipe`, `file`, and `stage` select the comparison target. Available stages are `source`, `before-transform`, `after-transform`, and `sink`, with `sink` the default. + +A minimal synthetic test descriptor is: + +```json +{ + "pipe": "queue-with-agents", + "file": "queue-with-agents.json", + "stage": "sink" +} +``` + +Run `sesam -vv test` against your test node. For incremental checks, establish the initial output, mutate only the relevant source or referenced dataset, and run the affected flow again **without resetting it between transitions**. A full reset can conceal a broken inverse path or missing removal signal. These are recommended test scenarios, not claims that this repository contains executable runtime tests for them. + +| Change pattern | Focused fixture and transition | Configuration-output checks | Contract to recheck | +| --- | --- | --- | --- | +| Scalar/list or composite join | Overlap and non-overlap; null, blank, deleted entity; second key differs; multivalued tuple inputs. | Exact sink values and expected result count, not merely a selected `first`; inspect trace cardinality separately. | [Joins](../../hub/dtl/joins.rst), [tuple construction](../../hub/dtl/dtl-functions-misc.rst#L128-L165). | +| Chain, namespace, or source change | Keep the source queue unchanged; change a referenced agent. Repeat with rewritten join inputs and explicit versus synthesized `$ids`. | Compare stored source and `before-transform` keys; verify the queue's sink enrichment updates incrementally. | [Inverse traversal caveats](../../hub/dtl/caveats.rst). | +| Nested enrichment | Change a dataset used inside the named rule, leaving the outer source unchanged. | Check the nested output refreshes; reject an `apply` rule containing hops. | [`apply-hops`](../../hub/dtl/dtl-functions-dictionaries.rst#L430-L469). | +| Subset lookup | Move an entity into and out of the indexed site/category; delete one in the subset. | Only intended members are read; downstream removals work; confirm version-2 subset indexes where required. | [Source subsets](../../hub/documentation/service-configuration/pipes/configuration-sources-dataset.rst#L41-L49). | +| Ordering or recursion | Multiple matches, equal sort keys, empty result, root, deep chain, branch, cycle. | Check explicit business order, empty selection behavior, root inclusion, and depth-bound membership. | [Hops options](../../hub/dtl/dtl-functions-hops.rst#L33-L108), [list operators](../../hub/dtl/dtl-functions-lists.rst). | +| Filter/discard or direct create | Emit once, then make the predicate false; test creation before versus after the gate; remove a directly created child. | Existing target deletion for `filter`; persistence risk for `discard`; already-created output survives later rejection. Check full/rescan cleanup separately. | [Transform deletion semantics](../../hub/dtl/dtl-functions-transforms.rst#L514-L607), [orphan risk](../../hub/documentation/operations/troubleshooting.rst#L82-L95). | +| Tracked child split or identity change | Parent with two children, remove one, remove all, delete parent, and use two parents with the same local child key. | Check parent `after-transform` current children, persisted-parent sink deltas, and emitted-child sink tombstones and IDs. Check ID validation failure cases. | [`track_children`](../../hub/documentation/service-configuration/pipes/configuration-sinks-dataset.rst#L78-L93), [separate emitter](../../hub/documentation/service-configuration/pipes/configuration-transforms-emit-children.rst#L7-L12), [`id_required`](../../hub/documentation/service-configuration/pipes/configuration-transforms-dtl.rst#L29-L33). | + +The local-test documentation says internal properties other than `_id` and `_deleted` are removed from comparison output. Inspect raw stage/entity output when checking `_filtered` or other internal diagnostics; a normalized expected-output comparison is not enough for every lifecycle assertion. Do not blanket-ignore identity, child membership, ordering, or deletion differences when updating expected files. + +CI requires a designated test node, serialized runs because the client overwrites configuration, and isolation from external writes. See [Configuration change lifecycle](../testing/configuration-change-lifecycle.md) for broader rollout practices, [Synchronization and state](../configuration/synchronization-and-state.md) for offsets and rescans, [Monitoring and troubleshooting](../operations/monitoring-and-troubleshooting.md) for operational follow-up, and [Master data management](master-data-management.md) for enrichment in global models. + +References: [local test lifecycle and descriptors](../../hub/documentation/operations/testing-locally.rst#L7-L91), [internal comparison properties](../../hub/documentation/operations/testing-locally.rst#L141-L150), [test command and result comparison](../../hub/documentation/operations/testing-locally.rst#L178-L186), [CI safety and serialization](../../hub/documentation/operations/continuous-integration.rst#L7-L24). diff --git a/openwiki/workflows/index.md b/openwiki/workflows/index.md new file mode 100644 index 00000000000..9796e41f075 --- /dev/null +++ b/openwiki/workflows/index.md @@ -0,0 +1,7 @@ +# Files + +- [Bidirectional synchronization without duplicates or lost writes](bidirectional-synchronization.md) - Trace how Sesam turns golden records into target-system desired state, records write responses, and reconciles recollected identities. Explain duplicate prevention, optimistic checks, completeness gates, deletion safety, and replay risks after resets or recovery. +- [Build an integration: Collect, Enrich, Connect, Transform, Share](build-an-integration.md) - Trace a Sesam integration from authenticated source collection and retained raw datasets through semantic enrichment, global merging, target payload preparation, and guarded delivery. Use the HubSpot and mocked Enhetsregisteret example to choose transport, continuation, response capture, and verification patterns without running a live tutorial. +- [Maintain, preview, validate, and publish the Sphinx reference](documentation-maintenance.md) - How authored reStructuredText, Swagger specifications, legal inputs, templates, and assets become the Sesam Sphinx reference. Covers local prerequisites, build-flavor caveats, available checks, container publishing, and the separate managed OpenWiki update workflow. +- [DTL joins, dependency-safe enrichment, and child entities](dtl-joins-and-transformation-patterns.md) - Design indexable DTL joins and enrichment that remains correct under incremental dependency reprocessing. Choose filtering and one-to-many output patterns with explicit deletion tracking, cardinality safeguards, and configuration-output tests. +- [Global models, merging, golden properties, and lineage](master-data-management.md) - Connect source identities into reusable domain datasets, select golden property values, and map them to target models without discarding source context. Explains merge state and identity changes, schema inference and explicit models, integrated search, and best-effort property lineage. diff --git a/openwiki/workflows/master-data-management.md b/openwiki/workflows/master-data-management.md new file mode 100644 index 00000000000..d38d9f07433 --- /dev/null +++ b/openwiki/workflows/master-data-management.md @@ -0,0 +1,406 @@ +--- +type: workflow +title: Global models, merging, golden properties, and lineage +description: Connect source identities into reusable domain datasets, select golden property values, and map them to target models without discarding source context. Explains merge state and identity changes, schema inference and explicit models, integrated search, and best-effort property lineage. +tags: [master-data-management, global-datasets, identity, merging, schema, lineage] +verified: + - by: openwiki/0.7.2 + at: 2026-10-20T13:49:14.868Z +sources: + - id: openwiki-source-e389b2c6e31446ccc4126746 + resource: repo://hub/api.rst + - id: openwiki-source-85265882695376b2e6909b94 + resource: repo://hub/documentation/data-management/adding-type-information-pattern.rst + - id: openwiki-source-79c1f8f52cc7548adb5ae9dc + resource: repo://hub/documentation/data-management/data-management.rst + - id: openwiki-source-ab28f0a659eec676b26e672b + resource: repo://hub/documentation/data-management/entity-data-model.rst + - id: openwiki-source-7f41e784007b777a71d53034 + resource: repo://hub/documentation/data-management/external-merge-pattern.rst + - id: openwiki-source-70288871b9974e0f68a02437 + resource: repo://hub/documentation/data-management/extract-foreign-references-as-extracted-datatypes-pattern.rst + - id: openwiki-source-cdacb84c2648fcbb0eed64d4 + resource: repo://hub/documentation/data-management/extract-reference-properties-pattern.rst + - id: openwiki-source-0e241c75c8c6cc0ec1b0224d + resource: repo://hub/documentation/data-management/feedback-loop-pattern.rst + - id: openwiki-source-a1e0b6de2a932652bced81c1 + resource: repo://hub/documentation/data-management/golden-property-last-updated-pattern.rst + - id: openwiki-source-b58396dd96e1f0b69c694500 + resource: repo://hub/documentation/data-management/golden-property-priority-pattern.rst + - id: openwiki-source-ab52b0d9e9823e76522c8b17 + resource: repo://hub/documentation/data-management/golden-property-quality-pattern.rst + - id: openwiki-source-aa2dfbef68f180c9fa901e80 + resource: repo://hub/documentation/data-management/late-schema-binding-pattern.rst + - id: openwiki-source-8006a7a3c2a9901a3a4ef16f + resource: repo://hub/documentation/data-management/open-to-extension-closed-for-modification-pattern.rst + - id: openwiki-source-3c9c286a56c525d8a53a5321 + resource: repo://hub/documentation/data-management/rewriting-identity-pattern.rst + - id: openwiki-source-140d62f5eefd9421919aa273 + resource: repo://hub/documentation/data-management/splitting-out-lists-of-sub-objects-pattern.rst + - id: openwiki-source-b5d954bd408fc16d1a044424 + resource: repo://hub/documentation/data-management/time-based-masterdata-management.rst + - id: openwiki-source-ee051b4306ddf053a4fbad94 + resource: repo://hub/documentation/data-synchronization/claims-pattern.rst + - id: openwiki-source-36d87051e96fd518941e710f + resource: repo://hub/documentation/operations/testing-locally.rst + - id: openwiki-source-6a5de2a911806771b5cfd05a + resource: repo://hub/documentation/service-configuration/configuration-metadata.rst + - id: openwiki-source-b88ab8bcd7069b9437346a72 + resource: repo://hub/documentation/service-configuration/pipes/configuration-pipes.rst + - id: openwiki-source-811b94c0236de6dfe3bad74f + resource: repo://hub/documentation/service-configuration/pipes/configuration-pump.rst + - id: openwiki-source-bc08155ee9d6e1ec83e30030 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-merge-datasets.rst + - id: openwiki-source-c32b360d8e1b5891f21864d1 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-merge.rst + - id: openwiki-source-4203a074d0925b6702669052 + resource: repo://hub/documentation/service-configuration/pipes/configuration-sources-union-datasets.rst + - id: openwiki-source-80d11a77ba6626aaf9a2d07f + resource: repo://hub/documentation/service-configuration/pipes/configuration-transforms-json-schema-validation.rst + - id: openwiki-source-c27c69f00f9a3913135cc0c4 + resource: repo://hub/dtl/caveats.rst + - id: openwiki-source-e222c4aa209056e7340716af + resource: repo://hub/dtl/dtl-functions-hops.rst + - id: openwiki-source-0dc85ac7312c5f7cf505e624 + resource: repo://hub/dtl/dtl-functions-namespaced-identifiers.rst + - id: openwiki-source-bf713a2a436e5ee14581521f + resource: repo://hub/dtl/dtl-functions-nulls.rst + - id: openwiki-source-133c24a94ca8f7beb23e7ab4 + resource: repo://hub/dtl/joins.rst + - id: openwiki-source-2b8c59d97f75284f0a8927f3 + resource: repo://hub/dtl/namespaces.rst + - id: openwiki-source-782bcbded2c4efbea17fb497 + resource: repo://hub/features/automatic-reprocessing.rst + - id: openwiki-source-c4f45d3a0f3643170205d462 + resource: repo://hub/features/dependency-tracking.rst + - id: openwiki-source-46c662d103933ce45e0322d8 + resource: repo://hub/features/global-datasets.rst + - id: openwiki-source-b7fe0a062d08b595ab024630 + resource: repo://hub/features/integrated-search.rst + - id: openwiki-source-476492e27f30fbe648642588 + resource: repo://hub/features/namespaces.rst + - id: openwiki-source-cdddf93a1e40c7459b0e0f3b + resource: repo://hub/features/property-lineage.rst + - id: openwiki-source-f2ff67a687ade64cb1bd2048 + resource: repo://hub/features/schema-inference.rst + - id: openwiki-source-b4df844f943d03991b359ea0 + resource: repo://hub/features/schema-models.rst + - id: openwiki-source-c92a884f90ca8ac7f160c79a + resource: repo://hub/swagger_public.yaml + - id: openwiki-source-0c618f531a4c5114878bee24 + resource: repo://hub/tutorial-getting-started-connect.rst + - id: openwiki-source-ea3cb71ba61ef90e2241e1ce + resource: repo://hub/tutorial-getting-started-enrich.rst +generated: { by: "openwiki/0.7.2", at: "2026-10-20T13:49:14.868Z" } +--- + +# Global models, merging, golden properties, and lineage + +A **global dataset** groups data about a business concept across sources. A **golden property** is a value chosen or composed for that concept under an explicit business policy. A **schema model** groups entity types and documents their properties. These are related, but none automatically supplies the others: marking a pipe global does not decide which records are the same, select the most trustworthy values, or enforce a target schema. + +The practical objective is to preserve source facts and identities while adding reusable domain meaning. Bind that domain view to a particular target's shape and identifiers late in the flow, rather than making every inbound connector serve one target. + +This page uses the repository's configuration references for runtime contracts and its documented patterns for modeling guidance. Recommendations such as keeping imports raw, routing data through globals, and putting most target logic in preparation pipes are **business-pattern guidance**, not universal runtime restrictions. + +## Responsibilities and the recommended flow + +| Stage | Responsibility | What to preserve or add | +| --- | --- | --- | +| Collect | Import source data faithfully and comprehensively. | Original structure and values, independent of current consumers. | +| Enrich | Add semantic information needed to connect and navigate data. | Source namespaces, typed NI references, `rdf:type` or `$type`, and optionally property metadata. | +| Connect | Group data by concept, and merge only records that represent the same thing. | Source properties and identities alongside reusable global properties. | +| Transform / prepare | Map globals to a target schema and enrich the target view through domain relationships. | Target-system identifiers and any original target object needed for sharing. | +| Share | Deliver the prepared data to the target. | Keep business transformations upstream so their result can be inspected and reused. | + +The documented workflow recommends that imported data appear in at least one global dataset. It does **not** prescribe a fixed number of globals or require every record within a global to be merged. Global membership is a semantic decision requiring knowledge of the business and source cardinalities. For example, sites and regions can share a location global without being declared the same entity. Collapsing a many-to-one relationship into a single sink identity can overwrite information; aggregation and sameness are different decisions. + +Use `metadata.global: true` to mark a global pipe in the management graph. A pipe with an omitted sink writes to a dataset whose id is the pipe's `_id`; the global marker is not a special merge source or a replacement for source/transform configuration. See [Hub model and boundaries](../architecture/hub-model-and-boundaries.md) and [Build an integration](build-an-integration.md) for the surrounding integration structure. + +## Preserve source context before connecting identities + +Namespaces distinguish properties that happen to have the same name. Keeping `catalog-asset:label` and `maintenance-asset:label` avoids silently treating them as interchangeable. A selected `global-asset:label` can then coexist with both source values. + +The relevant pipe controls are: + +- `namespaced_identifiers` enables source/sink namespace defaults; its default is `false` when not set in service metadata. +- `namespaces.identity` and `namespaces.property` choose the identifier and property namespaces; each defaults to the pipe id. Enrich pipes can explicitly use the source datatype's namespace rather than their `-enrich` pipe name. +- `add_namespaces: true` adds namespaces **before the first transform**. This is normally an inbound/enrich concern. +- `remove_namespaces: true` removes namespaces from `_id`, properties, and NI values **after the last transform**. This is normally an outbound concern; external sink defaults depend on `namespaced_identifiers` being enabled. + +Some DTL functions are namespace-aware. Unqualified property references generally match across namespaces, so use qualified names when source-specific selection matters. Namespace prefixes on property names and **namespaced identifier values** are also distinct: `"catalog-asset:asset-a"` is an identity string, while `"~:catalog-asset:asset-a"` is the JSON encoding of a typed NI. `ni` constructs NI values; `make-ni` supports adding reference properties. + +Semantic enrichment commonly adds: + +- **Type information** (`rdf:type` or `$type`) to select relevant subsets later. +- **NI references** for relationships and matching against identities, rather than relying on ambiguous bare strings. +- **Separate reference/classification entities** where a source provides only a code. The enrichment pattern recommends local, source-controlled namespaces and extracting objects that can later be connected to the equivalent concept from other sources. +- **Independent child objects** where a list item has its own domain meaning. The splitting pattern uses `create-child` and `emit_children`, with the parent id included in the child id. + +These are modeling choices, not automatic consequences of enabling namespaces. See [Entities, datasets, and identifiers](../concepts/entities-datasets-and-identifiers.md) and the [enrich patterns](../../hub/documentation/data-management/enrich-patterns.rst). + +## Choose union or merge deliberately + +| Source | Observable behavior | Appropriate use | +| --- | --- | --- | +| `union_datasets` | Reads datasets in configured order, exhausting each before moving to the next; its `since` handling tracks each dataset. By default, prefixes each `_id` with the dataset id and `:` to avoid collisions. | Put related types or independent records in one domain dataset without resolving sameness. `prefix_ids: false` disables that protection. | +| `merge` | Uses equality rules to resolve sameness transitively, then combines each connected group into an output entity. | Connect different source identities for the same domain object. | +| `merge_datasets` | Leaves ids unchanged and reads across datasets ordered by `_ts`. Its default `latest` strategy selects the newest entity version for an identity; `all` keeps the latest per-dataset entities keyed by dataset id. | Combine versions of already-shared identities. This is not equality-based identity resolution or property-level time-based MDM. | + +For `union_datasets`, `include_previous_versions` defaults to `false`: the source returns only the latest version per unique input `_id`. Do not use a union as if it had deduplicated domain objects, or use `merge_datasets`' ingestion timestamps as if they described when each business property changed. + +### Sameness is transitive, not a lookup relationship + +`merge` applies the same matching rules as DTL joins: if **any values overlap**, the match succeeds. A scalar can match an element of a list, and two lists can match through an overlapping value. Equality expressions returning `null` or empty lists do not cause merging. Filter unsuitable matching values before they enter the equality expressions. + +`equality` specifies individual `eq` rules. The preferred `equality_sets` groups related value expressions and expands into equality rules. It is syntactic sugar, not a separate matching engine. Both properties can coexist, but that makes the rules harder to reason about. Overlapping equality sets do not produce a configuration warning and can effectively connect one larger set. + +Consequently, if A matches B and B matches C, all three become one merged entity, even without a direct A-to-C match. A shared placeholder or a wrongly modeled relationship can therefore join a much larger group than intended. If matching needs several fields together, the join reference recommends composite keys using `tuples` rather than separate broad matches. + +### Synthetic asset relationship example + +The following diagram uses invented asset and location tokens, not source sample records. Assume enrichment has produced three records: maintenance references the catalog asset, and inspection references the maintenance asset. Those are sameness links. The asset's location reference is a relationship to another concept, **not** another equality rule. + +```mermaid +flowchart TD + Cat["Catalog asset: asset-a"] -->|enrich| A["catalog-asset:asset-a"] + Maint["Maintenance asset: asset-b"] -->|enrich| B["maintenance-asset:asset-b"] + Insp["Inspection asset: asset-c"] -->|enrich| C["inspection-asset:asset-c"] + A ---|same asset| B + B ---|same asset| C + A --> M["Merge source v2"] + B --> M + C --> M + M --> G["global-asset: source context and golden properties"] + Sites["Synthetic site and region records"] --> U["Union datasets source"] + U --> L["global-location: distinct location entities"] + G -.->|location NI relationship| L + G --> P["Target preparation with dataset source"] + L -->|hops for location context| P + P --> Share["Share target-shaped asset"] +``` +*Two sameness links form one asset group; a separate location relationship enriches its target view without merging locations into the asset.* + +A representative global pipe for the asset side is: + +```json +{ + "_id": "global-asset", + "type": "pipe", + "namespaced_identifiers": true, + "add_namespaces": false, + "remove_namespaces": false, + "namespaces": { + "identity": "global-asset", + "property": "global-asset" + }, + "source": { + "type": "merge", + "version": 2, + "datasets": [ + "catalog-asset-enrich a", + "maintenance-asset-enrich b", + "inspection-asset-enrich c" + ], + "equality_sets": [ + ["a.$ids", "b.catalog-asset-ni"], + ["b.$ids", "c.maintenance-asset-ni"] + ], + "identity": "first", + "strategy": "compact" + }, + "transform": { + "type": "dtl", + "rules": { + "default": [ + ["copy", "*"], + ["add", "label", + ["coalesce", + ["list", "_S.catalog-asset:label", "_S.maintenance-asset:label"] + ] + ] + ] + } + }, + "metadata": { + "global": true, + "models": ["asset-domain"] + } +} +``` + +This assumes input ids `catalog-asset:asset-a`, `maintenance-asset:asset-b`, and `inspection-asset:asset-c`; the two foreign-reference NI values are `~:catalog-asset:asset-a` and `~:maintenance-asset:asset-b`. Dataset aliases use unqualified property expressions as in the documented merge patterns. The transform keeps source properties and adds `global-asset:label` with catalog-first priority. `compact` affects value representation, **not** source trust. + +## Identity and property combination are separate policies + +### Output identity and identity history + +Merge identity ordering is by the dataset's position in `datasets`, then by the input entity's `_id`: + +- `identity: "composite"` is the default. It combines dataset offsets and all participating ids into a deterministic id. +- `identity: "first"` uses the first input id under that same ordering. It is not “the first record to arrive,” nor a permanent canonical id independent of dataset order or group membership. +- `$ids` carries the participating original identities. When an input already has `$ids`, its merge-entity `_id` is not added as another original identity; downstream merges combine its existing identity list instead. This preserves original identities through multiple merge layers. +- If later merging makes an old output id inapplicable, the source emits a delete for that id and sets `$replaced: true`. A source entity that is deleted is not merged; it is output as a standalone entity with `_deleted: true`. + +`_S.$ids` is also dynamic: when namespaced identifiers are enabled and the source has no explicit `$ids`, it wraps `_S._id` as an NI using the identity-namespace rules. That convenience matters for joins, but it can also interfere with inverse dependency tracking if the join no longer matches the stored source entity. + +**Version caveat:** merge version 2 with `identity: "first"` supports overlapping entity ids across input datasets only if equality on `_id` or `$ids` covers **all** datasets with those overlaps. Namespacing is valuable collision protection, but it does not waive this requirement. + +See the [merge source contract](../../hub/documentation/service-configuration/pipes/configuration-sources-merge.rst) and [entity data model](../../hub/documentation/data-management/entity-data-model.rst). + +### Combining values + +Merge's `strategy` determines the output structure: + +| Strategy | Result | +| --- | --- | +| `default` | Unions all property values; duplicates are not removed. | +| `compact` | Removes duplicate values, drops empty-list properties, and turns singleton lists into scalar values. | +| `list` | Places the contributing entities in `$merged`, enabling a custom combination transform. Internal fields such as `_ts` are excluded unless `include_internal_properties: true`. | + +None of these selects a business master value automatically. In particular, compact output can change scalar/list shape without improving the semantic quality of the selected data. + +## Select golden properties explicitly + +A global is useful even before it has golden properties: it is a reusable domain grouping with source context. Golden properties add the business policy for a shared consumer-facing value. The documented golden-record approach adds these properties alongside source-specific ones rather than discarding competing source facts. + +| Policy | Documented mechanism | Business decisions still needed | +| --- | --- | --- | +| Priority | Use `coalesce` with candidates in trust order. It returns the first non-null value, or the first value satisfying its optional predicate. | Define priority per property and distinguish missing values from valid empty values or intentional clears. | +| Quality | Normalize quality scores across candidate sources and choose the value with the most relevant score. | Define comparable scores, eligibility, and tie-breaking. This is a pattern to implement, not a built-in merge ranking algorithm. | +| Last updated | Preserve reliable source timestamps and choose the newest candidate property. | Define timestamp reliability, history, ties, and behavior when data returns through a feedback loop. | + +Source priority for a property is not the same thing as the dataset ordering used for `identity: "first"`. A domain record can use one source's identity and another source's preferred label. + +### Time-based MDM and property claims + +The [time-based MDM guidance](../../hub/documentation/data-management/time-based-masterdata-management.rst) describes per-property **claims**: value-plus-metadata dictionaries created in enrich pipes and kept in addition to raw source data. Here “claim” means a data representation, not a schema-validation result or an automatically enforced runtime assertion. + +A property claim can carry its value, `$last-modified`, and `end-time`, which records when a newer claim replaced it. The recommended timestamp preference is: + +1. Use the source's property-level last-modified time when available. +2. Otherwise, use an entity-level source timestamp initially and maintain the property's timestamp when its value changes. +3. If the source supplies neither, initialize from the collect dataset's `_ts` and maintain timestamps as values change. + +`_ts` is a dataset-registration timestamp, not a source-business-change timestamp. Its use in the third case is an approximation in the business pattern, not proof of the real change time. The selection recipe filters current claims with no `end-time`, sorts by `$last-modified`, and selects the newest value. The fuller history example also checks that incoming data is not older than retained history. + +The [last-updated golden-property pattern](../../hub/documentation/data-management/golden-property-last-updated-pattern.rst) offers another approach using a per-property `$updated` dictionary. It stresses reliable propagated timestamps and feedback-loop awareness. Do not confuse such dictionaries, `$last-modified`, or suggested `$last_updated` fields with the source's opaque incremental `_updated` token. + +**Stateful enrichment caveat:** the last-updated example looks up previous output in its own sink. For sink-targeting `hops`, the DTL contract requires `batch_size: 1` for visibility of prior writes and `sink.set_initial_offset: "onload"` to avoid waiting on the sink's initial population. The example disables dependency tracking for that self-lookup. These are specific self-history concerns, not general settings to copy to every global. + +Before sharing time-selected values back into contributing systems, design how returned writes retain origin and timestamps. See [Bidirectional synchronization](bidirectional-synchronization.md); re-imported writes must not accidentally become a fresh business edit merely because they arrived later. + +## Evolve target models through late schema binding + +The [late schema binding pattern](../../hub/documentation/data-management/late-schema-binding-pattern.rst) recommends mapping with **global properties or the target system's own namespace**, and performing hops on global properties. Referencing unrelated source namespaces in target transforms recreates source-to-source coupling. Use identifiers understood by the target rather than treating the global merge id as the target primary key. + +Bidirectional sharing may require the original target object when patching is unavailable. Keep that context rather than assuming the golden subset is always a complete replacement payload. When namespace removal changes how an id will be rendered, explicitly map or rewrite `_id` for the target; do not assume a composite or namespaced global id survives unchanged. + +If rewriting `_id` is necessary, the identity pattern recommends preserving `$original_id` for tracing and doing the rewrite **before filtering**. Filters before a rewrite act on the old identity, potentially leaving the new sink identity undeleted. Avoid deriving stable ids from mutable properties, especially values fetched through joins: a change can create a new entity rather than update the old one. + +For reusable connectors, the documented extension principle favors adding datatypes and properties over removing existing parts of the model. This is compatibility guidance, not an automatic migration guarantee. See [DTL joins and transformation patterns](dtl-joins-and-transformation-patterns.md) for mapping mechanisms. + +## Inference, models, search, and lineage serve different purposes + +| Capability | What it tells you | What it does not establish | +| --- | --- | --- | +| Schema inference | Observed structure of source and sink entities as data changes. | A mandatory schema contract or complete proof of all future data shapes. | +| Schema models | Grouped entity types and descriptions of their properties. | Automatic golden-value selection or validation of pipe traffic. | +| Integrated Search | Free-text search and navigation of indexed globals. | Identity matching or permission to read otherwise inaccessible data. | +| Property lineage | A best-effort graph connecting upstream/downstream namespaced properties and pipes. | An exhaustive provenance audit of each value or a runtime reprocessing guarantee. | +| Dependency tracking | Runtime invalidation/reprocessing of affected source entities after changes in joined datasets. | The same thing as the property-lineage graph. | + +### Schema inference and explicit models + +Sesam data is dynamically typed: properties and types can change over time, and schema validation is optional. Automatic schema inference generates source and sink entity types. `infer_pipe_entity_types: false` disables it for a pipe; although generally enabled by default, the pipe reference specifies a default of `false` for **developer subscriptions**. + +A schema model groups JSON-schema entity types and can add property descriptions aggregated to property landing pages. Inferred sink types are mapped to implicit models, visible in **Browse → Models** and filterable in **Browse → Entity types**: + +- `Global`: sink types of global pipes. +- `Input`: sink types of inbound pipes. +- `Output`: sink types of outbound pipes. +- A model for each unique pipe-id prefix before the first `-`. + +`metadata.models` customizes a pipe's implicit model membership. Explicit models can be uploaded through `/api/models` to provide curated grouping and documentation. + +**Experimental API caveat:** the repository's public API specification labels the model endpoints **EXPERIMENTAL**. It documents list/add operations at `/api/models`, model retrieval/deletion at `/api/models/{model_id}`, and entity-type retrieval at `/api/models/{model_id}/{entity_type_id}`. Retrieval supports `effective: true` to merge implicit and explicit models in the response. Check the instance's `/api/reference` before building automation around these APIs; the general schema-model feature description does not remove that API caveat. + +If target-shape validation is needed, configure it separately. The `json_schema` transform annotates validity using `key_valid` (default `valid`) and validation messages using `key_errors` (default `errors`). It does not by itself discard invalid entities; add the desired filtering/error-handling policy. Its optional `trigger_on` selector is also documented as experimental and can bypass validation for nonmatching entities. + +### Search and best-effort property lineage + +Integrated Search indexes globals for free-text browsing and relationship navigation. The feature reference warns of a **2× increase in data size needed for global pipes**. Results are limited to data the user has permission to read. + +Search and property lineage require **clustered architecture**. The payment method owner enables **Integrated search and property lineage** in the subscription's **Products** tab at [portal.sesam.io](https://portal.sesam.io). The feature documentation directs non-clustered subscriptions to support for migration; do not assume availability from the subscription name alone. + +Property lineage combines **static pipe-configuration analysis** with **schema-inference observations** to build a best-effort dependency graph. Namespaced properties have landing pages showing upstream dependencies and downstream dependents. Navigate to them by: + +- `Ctrl/Cmd+Click` on a namespaced property in the Integrated Search entity view. +- `Ctrl/Cmd+Click` on a namespaced property in a pipe's Input/Output view. +- Selecting a property from the pipe's Inferred Schema tab or the pipe entity-type view under Browse. + +Namespaces, inference, and curated descriptions make this graph easier to understand. They do not turn it into value-by-value historical provenance. + +### Runtime dependency tracking is a separate boundary + +Dependency tracking follows DTL joins backward to find source entities affected by changes in referenced datasets and reprocesses them. It is supported only for pipes using a **`dataset` source**. A transform on a `merge` source does **not** get dependency tracking for its `hops` or `apply-hops`; split the flow into a merge pipe and a downstream dataset-source pipe when joined-data changes must trigger reprocessing. This is why the diagram puts location enrichment in target preparation. + +Even with a dataset source, inverse traversal must match the stored source values. Changing join properties in an earlier transform, adding namespaces to those values, or relying on dynamically synthesized `$ids` can break that correspondence. `track-dependencies: false` disables tracking for a particular hops specification. A visible lineage edge is not evidence that any of these runtime requirements are satisfied. + +## Operate merge changes as state changes + +New pipes should explicitly set `version: 2`. The documented default is still `1` for compatibility, and version 1 is deprecated. Existing examples that omit `version` must not be treated as version-2 configurations. + +| Change or condition | Documented consequence / safe plan | +| --- | --- | +| Add equality after inputs have already been processed | Existing processed entities do not merge retroactively under the added rule. Reset/rescan if they must be reconsidered. | +| Reorder datasets in version 1 | Requires resetting the pipe and may require deleting the downstream dataset. | +| Reorder datasets with an order-based identity policy | Both identity strategies depend on dataset positions. Review downstream identity changes; absence of the version-1 reset warning is not a promise that version-2 ids stay unchanged. | +| Remove input datasets in version 1 or 2 | Requires a full run to clear removed inputs from merge state. Background incremental processing can still use state containing datasets marked for removal. | +| Add inputs, alter transforms, or recreate/truncate datasets | Review out-of-sync and reprocessing requirements. `reprocessing_policy` defaults to `continue`, not automatic reset; config-triggered reprocessing additionally involves `rescan_when_config_changes`. | +| Background rescan during merge-source reconfiguration | Incremental runs may use the old merge-source version and temporarily emit erroneous entities. Rescan completion catches up and deletion tracking removes those outputs. | + +An incremental run processes input after stored `last_seen`. Reset/full runs process all source entities and perform deletion tracking at completion. Background rescans also reprocess all inputs, but support concurrent incremental progress and require a dataset sink. They are disabled by default. Their output order and version coverage can differ from a normal reset run; completion, not merely starting the rescan, is the relevant consistency checkpoint. + +Additional operational controls: + +- `max_merged` limits the number of entities in one merge group in version 2 (unsupported in version 1). Exceeding it fails the pipe. The documented default is `50000`, inherited from service metadata unless overridden; the reference recommends lowering it to limit excessive RAM use. +- For merge and union, `require_populated_input: true` gates execution until required inputs are populated; the default is `false`. `initial_datasets` can restrict the population prerequisite. `ignore_non_existent_datasets` defaults to `true`, so missing entries in that prerequisite list do not block population unless configured otherwise. +- `if_source_empty: "accept"` is the documented merge/union default and allows previously synchronized entities to be deleted when the source is empty. `"fail"` fails the pipe instead and preserves those prior entities. +- `supports_signalling` schedules a run when input datasets change; it does not interrupt an active run or retroactively rebuild merge state. Defaults and schedule interactions also depend on service metadata. + +Large globals can take substantial time to reprocess after logic changes. The global-dataset guidance suggests separating current and historical data where that helps manage scale. Inspect input/output and execution status before restoring normal downstream delivery. See [Synchronization and state](../configuration/synchronization-and-state.md) and [Monitoring and troubleshooting](../operations/monitoring-and-troubleshooting.md). + +## Extension patterns and focused verification + +Two useful extensions have additional lifecycle responsibilities: + +- **External merge links:** the external-merge pattern describes manually maintained linking datasets or externally generated link objects. Equality-based merging still needs those links represented in the dataflow; it does not automatically perform fuzzy or AI matching. +- **Feedback enrichment:** move expensive hops or external transforms into a separate flow so the primary flow need not wait. The feedback pattern keys results from the merge-source identity and may process an entity twice when enrichment returns. Delete feedback when its originating data disappears, or the feedback entity itself can keep the merged object alive. + +Use synthetic fixtures and inspect both the domain dataset and the final target view. The documented local test workflow runs pipes until their queues are drained, with real output delivery disabled or unable to reach systems, then compares endpoint output with expected files. Configure `expected/.json` and `expected/.test.json`; the test settings support selecting a pipe stage. Run: + +```sh +sesam -vv test +``` + +A useful verification set for this workflow is: + +1. **Identity connectivity:** A–B and B–C produce one group; unmatched records remain separate; null/empty matching keys do not connect anything. Verify the intended overlap behavior for list-valued keys. +2. **Identity lifecycle:** after a group acquires a higher-precedence identity, inspect the old id's delete and `$replaced`, plus retained `$ids`. Test overlap-id configurations against the version-2 requirement. +3. **Source context and golden values:** retain all source namespaces, change one candidate at a time, and verify priority, score, or timestamp selection independently of merge identity order. +4. **Time history:** test unchanged values, genuinely newer edits, delayed older data, tied timestamps, and returned writes. Assert your chosen policy rather than assuming the pattern defines every tie or clear-value case. +5. **Safe model changes:** compare a fresh/full run with the planned reset/rescan route after equality or input changes. Wait for background rescans to finish before judging final membership. +6. **Joined-data invalidation:** change only the related location and verify reprocessing through the downstream dataset-source pipe. Do not substitute a lineage screenshot for this test. +7. **Target binding:** verify target ids, namespace removal, required original-object context, and behavior of invalid target-shaped records before enabling delivery. + +These are recommended checks derived from the documented contracts, not a claim that the repository includes a runtime test suite for this synthetic example. + +## Complete pattern and configuration references + +Use the full catalogs for recipes not repeated here: + +- [Data management patterns](../../hub/documentation/data-management/data-management-patterns.rst): enrich, connect, transform, and generic patterns. +- [Connect patterns](../../hub/documentation/data-management/connect-patterns.rst): cleaning, external merge, golden-value selection, feedback, and reference conventions. +- [Data management guidance](../../hub/documentation/data-management/data-management.rst) and [global datasets](../../hub/features/global-datasets.rst). +- [Merge](../../hub/documentation/service-configuration/pipes/configuration-sources-merge.rst), [union datasets](../../hub/documentation/service-configuration/pipes/configuration-sources-union-datasets.rst), and [merge datasets](../../hub/documentation/service-configuration/pipes/configuration-sources-merge-datasets.rst) source contracts. +- [Schema inference](../../hub/features/schema-inference.rst), [schema models](../../hub/features/schema-models.rst), [model API specification](../../hub/swagger_public.yaml), [Integrated Search](../../hub/features/integrated-search.rst), and [property lineage](../../hub/features/property-lineage.rst).