Tracking source compatibility: worker RESULT evidence¶
Task: 0bff1b12-2ccd-4ea0-87ee-0e6bd11d89fc, frozen version 2.
Execution: 2624ace8-f87f-4abc-a027-f141744a2ec3, 2026-10-11.
Repository: h8v6/heyaira; origin: [email protected]:h8v6/heyaira.git.
Branch: heyaira/0bff1b12.
Source and starting HEAD: 5948e9641867746b2f65724c46f0cda7cc200c47.
Starting parent: 5f2eb52f25e0f4f4002d6267cc691cb0057de946.
Initial git status --short was empty; there was no carried candidate.
Working directory for all commands:
/Users/jablonskib/HeyAira-agents/.heyaira-worktrees/heyaira/0bff1b12-worker.
Tests ran on the implementation above the starting HEAD, before the new local
commit containing this file. The task_result receipt records the resulting SHA.
server_identity matched the supplied resource, instance, project and execution
principal. task_get read exact v2 before editing. Execution-scoped tools expose
neither continuity_context nor claiming/task-update tools. This worker follows
docs/agents/skills/deliver-bridge-task.md; Bridge owns independent verification.
No push, PR, merge, install, deployment or production mutation was performed.
Only the authorized RESULT/receipt is written through MCP.
Cause, change and confidence¶
Migration 056 permits a tracking source's stored SHA to be null. The source list
previously returned that null to deployed clients requiring a string, and did
not include the branch. The list now excludes tracking rows in SQL before
pagination unless include_tracking=true. Only tracking rows gain
tracking_ref; pinned fields and response envelope remain unchanged.
Bootstrap tracking references also name their branch, preserving pinned fields.
Branch resolution now maps a missing installation argument to the same
provider_unconfigured error as get_file.
Confidence is high for the tested HTTP/MCP handler and PostgreSQL behavior. Authentication and GitHub responses are synthetic; production GitHub transport and a listening MCP server were not exercised. No schema or dispatch changes are needed. Independent acceptance remains Bridge's responsibility.
Intended files: src/heyaira/server.py, src/heyaira/git_provider.py,
tests/test_tracking_sources_compat.py, tests/test_tracking_git_provider.py,
docs/BRIDGE_PROTOCOL.md, docs/GIT_DOCUMENT_ACCESS.md, and this evidence.
Audit of every document-source SHA reader¶
Audit command: rg -n 'commit_sha|document_source' src/heyaira (exit 0).
The criterion's literal grep -n commit_sha src/heyaira exits 2 with
grep: src/heyaira: Is a directory; the recursive ripgrep command above is the
equivalent successful directory audit. Spot-checks include bootstrap and
read_document, with dedicated regressions, and the existing catalog/dispatch
tracking suites. Locations and disposition:
server.py:_document_sourceand_load_document_sourcealready preserve nullable SHA andtracking_ref, with project/revocation fencing. Changedbridge_sourcesto filter tracking by default and identify opted-in rows. Changedruntime_bootstrap_get's shared reference serializer (runtime refs, project-config refs and allowed documents) to identify tracking rows.git_document_getdelegates to the pinned-only validation below; no head resolution occurs.github_ci_status's optional SHA filters workflow runs, not document sources, so it is unrelated and unchanged.documents.py:DocumentSourcealready allows null SHA and tracking ref.validate_commit_shaexplicitly rejects null.read_documentvalidates before provider reads, cursor decoding/encoding or output; standalone tracking reads failinvalid_commit.CursorCodecbinds and serializes the validated/resolved immutable SHA. Existing client formats are unchanged.task_execution.py:send_taskexplicitly resolves tracking sources to task base commit or one cached branch head, validates full SHAs and passes resolved provenance. Pinned sources retain their stored SHA. Unchanged.catalog_workflow.py:SourcePinrequires a full SHA.dispatch_catalogrequires server-resolved provenance for tracking, substitutes the resolved SHA beforeread_document, and freezes immutable SHA plusresolved_from.validate_catalog_contractexplicitly checks pinned versus tracking origins and registry revocation/changes. Unchanged.admin.py:_add_document_sourcealready validates optional pinned SHA, chooses the tracking or pinned uniqueness key, stores the exclusive mode, and returns a source ID rather than nullable SHA. Unchanged.git_provider.py:get_filereceives a validated immutable SHA viaread_document. Only the branch token-argument error mapping changed; exact-head lookup and dispatch resolution are unchanged.
No other commit_sha or document_source matches exist under src/heyaira.
Actual checks¶
All pytest commands below used the existing Python 3.12.7 and supplied TMPDIR; no dependencies were installed. PostgreSQL used the supplied isolated test admin database via Unix socket, not a production DSN. No DSN or token is saved.
Baseline, with new tests but production code still exactly at 5948e96:
PYTHONPATH=src python3.12 -m pytest -q -p no:cacheprovider \
tests/test_tracking_sources_compat.py \
tests/test_tracking_git_provider.py::test_tracking_provider_missing_installation_matches_get_file
Exit 1; first run 4 failed in 3.93s. Repeated to retain output, again exit 1:
FAILED tests/test_tracking_sources_compat.py::test_sources_default_preserves_pinned_client_format
FAILED tests/test_tracking_sources_compat.py::test_sources_include_tracking_preserves_filters_and_pagination
FAILED tests/test_tracking_sources_compat.py::test_bootstrap_tracking_references_name_branch_without_changing_pinned_format
FAILED tests/test_tracking_git_provider.py::test_tracking_provider_missing_installation_matches_get_file
4 failed in 3.33s
Observed failures: default list included the tracking ID before pinned IDs;
opt-in and bootstrap raised KeyError: 'tracking_ref'; branch resolution raised
TypeError: ...token_provider() missing 1 required positional argument: 'installation_id'.
Same command after the fix, exit 0: 4 passed in 3.06s.
Named regressions after the fix (exit 0):
PYTHONPATH=src python3.12 -m pytest -q -p no:cacheprovider \
tests/test_tracking_sources_compat.py::test_sources_default_preserves_pinned_client_format \
tests/test_tracking_sources_compat.py::test_sources_include_tracking_preserves_filters_and_pagination \
tests/test_tracking_sources_compat.py::test_bootstrap_tracking_references_name_branch_without_changing_pinned_format \
tests/test_tracking_git_provider.py::test_tracking_provider_missing_installation_matches_get_file
.... [100%]
4 passed in 3.31s
Existing and new tracking suites (exit 0):
PYTHONPATH=src python3.12 -m pytest -q -p no:cacheprovider \
tests/test_tracking_document_sources.py tests/test_tracking_git_provider.py \
tests/test_tracking_sources_compat.py
....................................................... [100%]
55 passed in 17.37s
Dedicated PostgreSQL acceptance runner for the same selection (exit 0):
PYTHONPATH=src python3.12 scripts/test_postgres.py \
tests/test_tracking_sources_compat.py tests/test_tracking_document_sources.py \
tests/test_tracking_git_provider.py
....................................................... [100%]
55 passed in 9.96s
postgres_acceptance=passed: selected tests, zero skipped tests
Related checks (exit 0), separate from required acceptance:
PYTHONPATH=src python3.12 -m pytest -q -p no:cacheprovider \
tests/test_documents.py tests/test_git_provider.py tests/test_catalog_workflow.py \
tests/test_mcp_runtime_contract.py tests/test_docs_contract.py
SKIPPED [1] tests/test_catalog_workflow.py:18: set HEYAIRA_EXECUTION_E2E_DATABASE_URL to an isolated PostgreSQL database
55 passed, 1 skipped in 3.23s
The optional listener-based catalog E2E was not run; the required tracking handler/PostgreSQL tests ran without skips. Full suite and production canaries were not run.
Static checks (each exit 0):
PYTHONPATH=src python3.12 scripts/export_mcp_contract.py --check:MCP contract is up to date.PYTHONPATH=src python3.12 scripts/check_docs_contract.py:documentation contract passed: 46 MCP tools covered.git diff --check: no whitespace errors.git diff --quiet 5948e9641867746b2f65724c46f0cda7cc200c47 -- migrations/056_tracking_document_sources.sql src/heyaira/task_execution.py src/heyaira/catalog_workflow.py ios: no changes to the forbidden paths.
Frozen criterion checklist¶
criterion_id: compat-default method: Run the new regression test by name (PostgreSQL); it fails on 5948e96 and passes on the candidate. outcome: pass evidence_path: docs/agent-work/0bff1b12-evidence.md feedback: Named default regression failed on the base and passed after the fix; full pinned fields and 40-hex SHAs asserted with tracking present; PostgreSQL acceptance exit 0, zero skips.
criterion_id: opt-in method: Run the new test by name; read the documentation paragraph. outcome: pass evidence_path: docs/agent-work/0bff1b12-evidence.md feedback: Named opt-in regression failed on the base and passed after the fix; null SHA, branch, pagination, authorized filter, foreign-project refusal and invalid pagination asserted; docs/BRIDGE_PROTOCOL.md documents the parameter.
criterion_id: other-readers method: grep -n commit_sha src/heyaira; compare with the list in RESULT; spot-check two. outcome: pass evidence_path: docs/agent-work/0bff1b12-evidence.md feedback: Directory grep syntax failure retained; equivalent recursive rg audit completed and every reader listed above. Bootstrap tracking-reference regression and existing standalone-read/catalog resolution regressions passed.
criterion_id: provider-error method: Run the new git_provider test by name. outcome: pass evidence_path: docs/agent-work/0bff1b12-evidence.md feedback: Named provider regression reproduced TypeError on the base; passes with provider_unconfigured matching get_file and no GitHub request.
criterion_id: scope method: git diff --stat 5948e9641867746b2f65724c46f0cda7cc200c47..HEAD; run tests/test_tracking_document_sources.py and tests/test_tracking_git_provider.py. outcome: pass evidence_path: docs/agent-work/0bff1b12-evidence.md feedback: Seven intended files only; forbidden-path diff empty. Required tracking suites and compatibility regressions passed (55 tests), also passed the PostgreSQL zero-skip gate. Final commit/stat/clean-tree confirmation is recorded in the task_result receipt.