Skip to content

Avoid archive scans in autonomous queue status reads - #322

Merged
ifuri-validator-agent[bot] merged 1 commit into
mainfrom
ticket/262-index-cross-sprint-status-reads-for-autonomous-queue-snapshots
Oct 30, 2026
Merged

ifuri-validator-agent[bot] merged 1 commit into
mainfrom
ticket/262-index-cross-sprint-status-reads-for-autonomous-queue-snapshots

Conversation

@tom-sapletta-com

Copy link
Copy Markdown
Contributor

Control lifecycle snapshots fail as planfile_unavailable when cross-sprint status reads scan the archive. The deployed database has more than 20,000 tickets, no status-leading index, and EXPLAIN QUERY PLAN reports SCAN tickets USING INDEX tickets_position; even limit-one reads for an absent in-progress status and for blocked tickets exceed the 6–10 second observation budget.

Add an ordered (status, position) index when opening fresh or existing disposable SQLite projections. Existing upgraded connections avoid schema writes, and the change preserves ticket payloads, signatures and pagination. No readiness gate, source ticket state or execution authority changes.

Validation: 82 focused tests passed; fresh and legacy query plans, bounded SQLite VM work for an absent status, concurrent migration, unchanged data and pagination, connection lifetime and prior index regressions. Focused Ruff, whitespace and governance checks passed. Runtime adoption and business readback remain separate from source merge.

Ticket: ticket-262

@ifuri-validator-agent ifuri-validator-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Validator approval after policy checks for exact head 3b857f101437768700df45a5a5f2330537e0d749.

Ticket: ticket-262
Correlation ID: local-semcod-planfile-pr-322-ticket-262
Model: openai/cursor-auto
Reviewed diff chunks: 1
Advisory LLM verdict: APPROVE
Advisory summary: Reviewed all 1 diff chunk(s). The change safely adds the required ordered (status, position) index for both fresh and legacy SQLite projections while preserving records, signatures, payload ordering, and pagination. The idempotent migration is appropriate for concurrent opens, and no security defects or correctness issues are evident in the visible diff.
Advisory findings: none
The LLM output above is advisory and was not used as the approval trust root.
Semantic review prerequisite: not_required; policy 676cb4516bbfed2a000e40b9b1b6e4a430ecc761ec546aeb53d721a1905cfdd7.

Actual PR impact radar

Exact range: 57d085698cd2a92f6da7bf69a4e6a270571aec0e...3b857f101437768700df45a5a5f2330537e0d749
Change digest: 72a994d9e8b7da4169dd4649667ffbcec23707f30af9517a959aa46ca63fe6da
Score: 52/100 (M), estimated 54 min, split recommended: true
Affected services/components: repository-wide/unclassified

Machine-readable radar JSONL and SVG
{"actual_change":{"additions":219,"base_sha":"57d085698cd2a92f6da7bf69a4e6a270571aec0e","binary_files":0,"categories":{"code":1,"configuration":1,"docs":1,"tests":1},"change_digest":"72a994d9e8b7da4169dd4649667ffbcec23707f30af9517a959aa46ca63fe6da","comparison":"57d085698cd2a92f6da7bf69a4e6a270571aec0e...3b857f101437768700df45a5a5f2330537e0d749","deletions":0,"file_count":4,"files":["planfile/core/sqlite_index.py","project/ticket-262/README.md","project/ticket-262/intent.json","tests/test_sqlite_status_index.py"],"head_sha":"3b857f101437768700df45a5a5f2330537e0d749","service_count":0,"services":[]},"assessment_mode":"observed-pr","axes":{"coupling":3,"delivery":3,"scope":2,"uncertainty":3,"validation":2},"complexity":"M","confidence":0.9,"diagnostics":["RADAR-ACCEPTANCE-MISSING","RADAR-BUDGET-EXCEEDED"],"estimate":{"budget_minutes":30,"minutes":54,"within_budget":false},"impact":{"components":["planfile","project","tests"],"files":["planfile/core/sqlite_index.py","project/ticket-262/README.md","project/ticket-262/intent.json","tests/test_sqlite_status_index.py"],"public_interfaces":[],"runtime_dependencies":0},"schema":"subactor.ticket-radar/v1","score":52,"split":{"parts":[{"estimated_minutes":15,"name":"Implement planfile","scope":["planfile"]},{"estimated_minutes":15,"name":"Implement project","scope":["project"]},{"estimated_minutes":15,"name":"Implement tests","scope":["tests"]},{"estimated_minutes":15,"name":"Validate and project to trackers","scope":["tests","planfile","github/gitlab/jira projections"]}],"reason":"estimated_minutes_exceed_budget","recommended":true},"standards":[{"id":"wellmanifest/dsl","revision":"6c60fc4e0dd1f1bb74f46a7745e28019908d1203","version":"0.1.0-dev"},{"id":"wellmanifest/ticket-lifecycle","revision":"5bf581907a87b46a13a73e6c033d3abe4d9a306f","version":"0.1.0-dev"},{"id":"wellmanifest/git-lifecycle","revision":"7d77d4b7af57e69bc75c3a0290b3a4805c5c4438","version":"0.2.0-dev"},{"id":"wellmanifest/logs","revision":"48c284ef7a069055c0bcb6b900147ce5e65f8b43","version":"0.3.0"}],"ticket_ref":"ticket-262"}
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128" role="img"><title>ticket-262: Avoid archive scans in autonomous queue status reads</title><rect width="128" height="128" rx="12" fill="#f8fafc"/><g stroke-width="1"><polygon points="64,55 72,61 69,71 59,71 56,61" fill="none" stroke="#d7dde5"/><polygon points="64,47 80,59 74,78 54,78 48,59" fill="none" stroke="#d7dde5"/><polygon points="64,38 89,56 79,85 49,85 39,56" fill="none" stroke="#d7dde5"/><polygon points="64,30 97,53 84,92 44,92 31,53" fill="none" stroke="#d7dde5"/><polygon points="64,21 105,51 89,99 39,99 23,51" fill="none" stroke="#d7dde5"/><line x1="64" y1="64" x2="64" y2="21" stroke="#aab4c0"/><line x1="64" y1="64" x2="105" y2="51" stroke="#aab4c0"/><line x1="64" y1="64" x2="89" y2="99" stroke="#aab4c0"/><line x1="64" y1="64" x2="39" y2="99" stroke="#aab4c0"/><line x1="64" y1="64" x2="23" y2="51" stroke="#aab4c0"/></g><polygon points="64,47 89,56 79,85 54,78 39,56" fill="#fb923c" fill-opacity="0.45" stroke="#c2410c" stroke-width="2"/><circle cx="64" cy="64" r="3" fill="#c2410c"/><g font-family="sans-serif" font-size="7" fill="#334155"><text x="64" y="11" text-anchor="middle">SCO</text><text x="114" y="48" text-anchor="middle">COU</text><text x="95" y="107" text-anchor="middle">UNC</text><text x="33" y="107" text-anchor="middle">VAL</text><text x="14" y="48" text-anchor="middle">DEL</text></g><text x="64" y="124" text-anchor="middle" font-family="sans-serif" font-size="8" fill="#0f172a">M · 54m</text></svg>
Merge will be attempted after this approval when explicitly authorized. ## Decision record (recomputable)
DECISION D-262-4948
TICKET ticket-262
HEAD_SHA 3b857f101437768700df45a5a5f2330537e0d749
CORRELATION_ID local-semcod-planfile-pr-322-ticket-262
ACTOR agent:ifuri-validator-agent[bot]
APPLIED_RULE P-CORE-015
INPUT author_login = "tom-sapletta-com"
INPUT observed_checks = ["notify=PASS","governance / enforce=PASS","governance / remote lifecycle=PASS","test (3.10)=PASS","freshness=PASS","ci-loop=PASS","test (3.13)=PASS","onedev/local-verify=PASS"]
INPUT required_checks = ["ci-loop","notify","freshness","governance / remote lifecycle","governance / enforce","test (3.10)","test (3.13)","onedev/local-verify"]
INPUT required_checks_source = "protected registry + GitHub applied rules (env/request)"
INPUT reviewer_login = "ifuri-validator-agent[bot]"
INPUT semantic_review_assessment = {"schema":"subactor.validator/semantic-review-assessment/v1","subject":{"repository":"semcod/planfile","pull_request":322,"head_sha":"3b857f101437768700df45a5a5f2330537e0d749","base_sha":"57d085698cd2a92f6da7bf69a4e6a270571aec0e","diff_sha256":"915d239bef0d05425a7be5ee1a5183b889988cf3cbf49cad5c0bea29a02eccf4"},"policy":{"policy_schema":"subactor.validator/semantic-review-policy/v1","policy_version":1,"policy_sha256":"676cb4516bbfed2a000e40b9b1b6e4a430ecc761ec546aeb53d721a1905cfdd7","required":false,"critical_paths":[],"observed_paths":["planfile/core/sqlite_index.py","project/ticket-262/README.md","project/ticket-262/intent.json","tests/test_sqlite_status_index.py"]},"grounding":"full-diff-not-per-finding-proof","execution_authority":false,"status":"not_required","reason":null,"review_sha256":null,"unresolved":[]}
INPUT superseded_checks = []
INPUT ticket_radar_receipt = {"schema":"subactor.ticket-radar/v1","base_sha":"57d085698cd2a92f6da7bf69a4e6a270571aec0e","head_sha":"3b857f101437768700df45a5a5f2330537e0d749","change_digest":"72a994d9e8b7da4169dd4649667ffbcec23707f30af9517a959aa46ca63fe6da","score":52,"complexity":"M","estimated_minutes":54,"split_recommended":true,"services":[],"authority":"ADVISORY","promotion":"FORBIDDEN"}
VERDICT APPROVE AUTHORITY DETERMINISTIC
REJECTED REQUEST_CHANGES BECAUSE NO_UNSAFE_CHANGE_REASON_FOUND
ADVISORY llm_verdict = "APPROVE" MODEL "openai/cursor-auto"
ASSERT VERDICT_AUTHORITY != "ADVISORY"

@ifuri-validator-agent ifuri-validator-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Validator approval after policy checks for exact head 3b857f101437768700df45a5a5f2330537e0d749.

Ticket: ticket-262
Correlation ID: local-semcod-planfile-pr-322-ticket-262
Model: openai/cursor-auto
Reviewed diff chunks: 1
Advisory LLM verdict: APPROVE
Advisory summary: Reviewed all 1 diff chunk(s). The additive (status, position) index is created for both fresh and existing SQLite projections, preserves ticket data and ordering, and avoids repeated schema writes after migration. The implementation is scoped, idempotent, and introduces no evident security defect.
Advisory findings: none
The LLM output above is advisory and was not used as the approval trust root.
Semantic review prerequisite: not_required; policy 676cb4516bbfed2a000e40b9b1b6e4a430ecc761ec546aeb53d721a1905cfdd7.

Actual PR impact radar

Exact range: 57d085698cd2a92f6da7bf69a4e6a270571aec0e...3b857f101437768700df45a5a5f2330537e0d749
Change digest: 72a994d9e8b7da4169dd4649667ffbcec23707f30af9517a959aa46ca63fe6da
Score: 52/100 (M), estimated 54 min, split recommended: true
Affected services/components: repository-wide/unclassified

Machine-readable radar JSONL and SVG
{"actual_change":{"additions":219,"base_sha":"57d085698cd2a92f6da7bf69a4e6a270571aec0e","binary_files":0,"categories":{"code":1,"configuration":1,"docs":1,"tests":1},"change_digest":"72a994d9e8b7da4169dd4649667ffbcec23707f30af9517a959aa46ca63fe6da","comparison":"57d085698cd2a92f6da7bf69a4e6a270571aec0e...3b857f101437768700df45a5a5f2330537e0d749","deletions":0,"file_count":4,"files":["planfile/core/sqlite_index.py","project/ticket-262/README.md","project/ticket-262/intent.json","tests/test_sqlite_status_index.py"],"head_sha":"3b857f101437768700df45a5a5f2330537e0d749","service_count":0,"services":[]},"assessment_mode":"observed-pr","axes":{"coupling":3,"delivery":3,"scope":2,"uncertainty":3,"validation":2},"complexity":"M","confidence":0.9,"diagnostics":["RADAR-ACCEPTANCE-MISSING","RADAR-BUDGET-EXCEEDED"],"estimate":{"budget_minutes":30,"minutes":54,"within_budget":false},"impact":{"components":["planfile","project","tests"],"files":["planfile/core/sqlite_index.py","project/ticket-262/README.md","project/ticket-262/intent.json","tests/test_sqlite_status_index.py"],"public_interfaces":[],"runtime_dependencies":0},"schema":"subactor.ticket-radar/v1","score":52,"split":{"parts":[{"estimated_minutes":15,"name":"Implement planfile","scope":["planfile"]},{"estimated_minutes":15,"name":"Implement project","scope":["project"]},{"estimated_minutes":15,"name":"Implement tests","scope":["tests"]},{"estimated_minutes":15,"name":"Validate and project to trackers","scope":["tests","planfile","github/gitlab/jira projections"]}],"reason":"estimated_minutes_exceed_budget","recommended":true},"standards":[{"id":"wellmanifest/dsl","revision":"6c60fc4e0dd1f1bb74f46a7745e28019908d1203","version":"0.1.0-dev"},{"id":"wellmanifest/ticket-lifecycle","revision":"5bf581907a87b46a13a73e6c033d3abe4d9a306f","version":"0.1.0-dev"},{"id":"wellmanifest/git-lifecycle","revision":"7d77d4b7af57e69bc75c3a0290b3a4805c5c4438","version":"0.2.0-dev"},{"id":"wellmanifest/logs","revision":"48c284ef7a069055c0bcb6b900147ce5e65f8b43","version":"0.3.0"}],"ticket_ref":"ticket-262"}
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128" role="img"><title>ticket-262: Avoid archive scans in autonomous queue status reads</title><rect width="128" height="128" rx="12" fill="#f8fafc"/><g stroke-width="1"><polygon points="64,55 72,61 69,71 59,71 56,61" fill="none" stroke="#d7dde5"/><polygon points="64,47 80,59 74,78 54,78 48,59" fill="none" stroke="#d7dde5"/><polygon points="64,38 89,56 79,85 49,85 39,56" fill="none" stroke="#d7dde5"/><polygon points="64,30 97,53 84,92 44,92 31,53" fill="none" stroke="#d7dde5"/><polygon points="64,21 105,51 89,99 39,99 23,51" fill="none" stroke="#d7dde5"/><line x1="64" y1="64" x2="64" y2="21" stroke="#aab4c0"/><line x1="64" y1="64" x2="105" y2="51" stroke="#aab4c0"/><line x1="64" y1="64" x2="89" y2="99" stroke="#aab4c0"/><line x1="64" y1="64" x2="39" y2="99" stroke="#aab4c0"/><line x1="64" y1="64" x2="23" y2="51" stroke="#aab4c0"/></g><polygon points="64,47 89,56 79,85 54,78 39,56" fill="#fb923c" fill-opacity="0.45" stroke="#c2410c" stroke-width="2"/><circle cx="64" cy="64" r="3" fill="#c2410c"/><g font-family="sans-serif" font-size="7" fill="#334155"><text x="64" y="11" text-anchor="middle">SCO</text><text x="114" y="48" text-anchor="middle">COU</text><text x="95" y="107" text-anchor="middle">UNC</text><text x="33" y="107" text-anchor="middle">VAL</text><text x="14" y="48" text-anchor="middle">DEL</text></g><text x="64" y="124" text-anchor="middle" font-family="sans-serif" font-size="8" fill="#0f172a">M · 54m</text></svg>
Merge will be attempted after this approval when explicitly authorized. ## Decision record (recomputable)
DECISION D-262-3535
TICKET ticket-262
HEAD_SHA 3b857f101437768700df45a5a5f2330537e0d749
CORRELATION_ID local-semcod-planfile-pr-322-ticket-262
ACTOR agent:ifuri-validator-agent[bot]
APPLIED_RULE P-CORE-015
INPUT author_login = "tom-sapletta-com"
INPUT observed_checks = ["notify=PASS","governance / enforce=PASS","governance / remote lifecycle=PASS","test (3.10)=PASS","freshness=PASS","ci-loop=PASS","test (3.13)=PASS","onedev/local-verify=PASS"]
INPUT required_checks = ["ci-loop","notify","freshness","governance / remote lifecycle","governance / enforce","test (3.10)","test (3.13)","onedev/local-verify"]
INPUT required_checks_source = "protected registry + GitHub applied rules (env/request)"
INPUT reviewer_login = "ifuri-validator-agent[bot]"
INPUT semantic_review_assessment = {"schema":"subactor.validator/semantic-review-assessment/v1","subject":{"repository":"semcod/planfile","pull_request":322,"head_sha":"3b857f101437768700df45a5a5f2330537e0d749","base_sha":"57d085698cd2a92f6da7bf69a4e6a270571aec0e","diff_sha256":"915d239bef0d05425a7be5ee1a5183b889988cf3cbf49cad5c0bea29a02eccf4"},"policy":{"policy_schema":"subactor.validator/semantic-review-policy/v1","policy_version":1,"policy_sha256":"676cb4516bbfed2a000e40b9b1b6e4a430ecc761ec546aeb53d721a1905cfdd7","required":false,"critical_paths":[],"observed_paths":["planfile/core/sqlite_index.py","project/ticket-262/README.md","project/ticket-262/intent.json","tests/test_sqlite_status_index.py"]},"grounding":"full-diff-not-per-finding-proof","execution_authority":false,"status":"not_required","reason":null,"review_sha256":null,"unresolved":[]}
INPUT superseded_checks = []
INPUT ticket_radar_receipt = {"schema":"subactor.ticket-radar/v1","base_sha":"57d085698cd2a92f6da7bf69a4e6a270571aec0e","head_sha":"3b857f101437768700df45a5a5f2330537e0d749","change_digest":"72a994d9e8b7da4169dd4649667ffbcec23707f30af9517a959aa46ca63fe6da","score":52,"complexity":"M","estimated_minutes":54,"split_recommended":true,"services":[],"authority":"ADVISORY","promotion":"FORBIDDEN"}
VERDICT APPROVE AUTHORITY DETERMINISTIC
REJECTED REQUEST_CHANGES BECAUSE NO_UNSAFE_CHANGE_REASON_FOUND
ADVISORY llm_verdict = "APPROVE" MODEL "openai/cursor-auto"
ASSERT VERDICT_AUTHORITY != "ADVISORY"

@ifuri-validator-agent
ifuri-validator-agent Bot merged commit 1765e2d into main Oct 30, 2026
8 checks passed
@ifuri-validator-agent
ifuri-validator-agent Bot deleted the ticket/262-index-cross-sprint-status-reads-for-autonomous-queue-snapshots branch October 30, 2026 19:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant