Skip to content

feat: deliver workspace evidence board and source-grounded ontology surface - #258

Closed
seonghobae wants to merge 1013 commits into
mainfrom
feat/analysis-run-name-evidence-lineage
Closed

feat: deliver workspace evidence board and source-grounded ontology surface#258
seonghobae wants to merge 1013 commits into
mainfrom
feat/analysis-run-name-evidence-lineage

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Scope

This root stack reconciliation preserves the accumulated customer-facing evidence, ontology, semantic-source, contextual-orchestrator, durable-ingestion, and customer-evidence capability while following protected main through normal merge history. No product capability is removed to reduce the diff.

Product and security boundary

  • Keeps Board, Customer Master, Calendar, Ask Agent, authorized source evidence, 5W1H, project/Keyman context, Event Lineage, and ontology/provenance contracts.
  • Prevents unauthenticated login from rendering the authenticated Admin surface.
  • Keeps contextual-orchestrator, OIDC, RankWeave, TEPP, and durable-worker failures behind stable customer-facing errors while preserving chained server diagnostics.
  • Preserves synthetic-only repository fixtures and the established Figma, Storybook, token, provenance, and knowledge-cutoff boundaries.
  • Keeps the heterogeneous Ontology Explorer and Event Lineage readability follow-ups independent rather than weakening this root.

Exact current candidate

  • Protected base: main@ef6f5a5ffcb467bd935dc1e53acc0029669b0bd7.
  • Exact current head: f4ebfc684cdd6017255712cc4be37528cbb7d21a.
  • GitHub reports the PR mergeable.
  • Auto-merge is not enabled; merge automation state is not used as readiness evidence.
  • Existing submitted reviews are comments, not an independent formal APPROVED verdict on this exact head.
  • Required checks were re-queued on this head; queued evidence is non-passing. The ADR 0146 reference repair passed 5 documentation-hygiene tests and diff validation locally. Do not merge until terminal success plus independent APPROVE.

Verification and merge gate

Merge only after:

  1. every required check is terminal-success on f4ebfc684cdd6017255712cc4be37528cbb7d21a;
  2. no new unresolved current-head finding exists;
  3. an eligible independent non-author formal approval exists for this head; and
  4. GitHub branch protection accepts an expected-head merge without bypass, force-push, or history rewrite.

Do not self-approve. After this root lands, dependent branches continue by ordinary restack and retain their full customer-visible scope.

@coderabbitai

coderabbitai Bot commented Aug 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 363 files, which is 263 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: fc7e7f7f-6ca7-4ce5-a5ce-509ef8837aa3

📥 Commits

Reviewing files that changed from the base of the PR and between ef6f5a5 and f0b5234.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (363)
  • .env.example
  • .github/workflows/repair-global-ask-pnpm-v2.yml
  • AGENTS.md
  • ARCHITECTURE.md
  • CHANGELOG.d/2.12.0-weekly-voc-iso-week.md
  • CHANGELOG.d/2.12.6-frontend-build-gate.md
  • CHANGELOG.d/2.12.6-oidc-return-storage.md
  • CHANGELOG.d/2.12.6-provider-error-boundary.md
  • CHANGELOG.d/2.12.6-remove-self-modifying-repair-workflows.md
  • CHANGELOG.d/2.12.7-korean-search-boundary.md
  • CHANGELOG.d/2.12.7-lineage-dag-evidence.md
  • CHANGELOG.d/2.12.8-ontology-org-shacl.md
  • CHANGELOG.d/2.13.0-weekly-voc-open-event-lineage.md
  • CHANGELOG.d/2.13.1-mcp-browser-admission.md
  • CHANGELOG.d/2.14.0-calendar-open-event-lineage.md
  • CHANGELOG.d/2.15.0-customer-hierarchy-boundary.md
  • CHANGELOG.d/2.15.0-customer-master-open-event-lineage.md
  • CHANGELOG.d/2.16.0-ask-agent-open-event-lineage.md
  • CHANGELOG.d/2.16.0-pr262-hardening.md
  • CHANGELOG.d/2.17.0-event-lineage-node-keeps-gnb-focus.md
  • CHANGELOG.d/2.17.0-image-and-summary-boundaries.md
  • CHANGELOG.d/2.18.0-ask-agent-evidence-workspace.md
  • CHANGELOG.d/2.18.0-project-history-truth-and-loading.md
  • CHANGELOG.d/2.18.2-authenticated-mcp-global-ask.md
  • CHANGELOG.d/2.19.0-gnb-event-lineage-focus-keyman.md
  • CHANGELOG.d/2.19.0-remove-source-fix-artifacts.md
  • CHANGELOG.d/2.19.1-mcp-boundary-hardening.md
  • CHANGELOG.d/2.20.0-global-ask-cutoff-safety.md
  • CHANGELOG.d/2.20.1-authorized-entity-ids.md
  • CHANGELOG.d/2.20.2-ask-session-storage-key.md
  • CHANGELOG.d/2.23.0-global-ask-knowledge-cutoff.md
  • CHANGELOG.d/2.23.2-project-history-lineage-counts.md
  • CHANGELOG.d/cross-repo-lineage-provider-contract.md
  • CHANGELOG.d/customer-master-tree-projection.md
  • CHANGELOG.d/external-lineage-contract.md
  • CHANGELOG.d/mcp-distributed-account-rate-limit.md
  • CHANGELOG.d/pr258-bug-fixes.md
  • CHANGELOG.md
  • CLAUDE.md
  • add_translations.py
  • backend/Dockerfile
  • backend/app/activity_stream.py
  • backend/app/analysis_run_ingestion.py
  • backend/app/analysis_run_start.py
  • backend/app/ask_project_history.py
  • backend/app/auth.py
  • backend/app/config.py
  • backend/app/demo_scope.py
  • backend/app/entity_relationship_ingestion.py
  • backend/app/five_w1h_ingestion.py
  • backend/app/global_ask.py
  • backend/app/global_ask_media.py
  • backend/app/global_ask_verification.py
  • backend/app/issue_ticket_ingestion.py
  • backend/app/keycloak_audience_reconciler.py
  • backend/app/knowledge_graph.py
  • backend/app/main.py
  • backend/app/mcp_admission.py
  • backend/app/mcp_auth.py
  • backend/app/mcp_rate_limit.py
  • backend/app/mcp_server.py
  • backend/app/organization_name_resolution_ingestion.py
  • backend/app/post_chat_ingestion.py
  • backend/app/post_content_worker.py
  • backend/app/post_eligibility.py
  • backend/app/post_summary_ingestion.py
  • backend/app/project_history.py
  • backend/app/ranking_ingestion.py
  • backend/app/report_ingestion.py
  • backend/app/source_post_revision.py
  • backend/app/tepp_project_history.py
  • backend/tests/test_api.py
  • backend/tests/test_auth_jwks.py
  • docker-compose.yml
  • docker/contextual-orchestrator/start.py
  • docker/keycloak/Dockerfile
  • docker/keycloak/entrypoint.sh
  • docker/keycloak/realm-export.json
  • docker/keycloak/themes/lineageweave/login/resources/css/lineageweave.css
  • docker/keycloak/themes/lineageweave/login/theme.properties
  • docker/postgres-init/migrate.sh
  • docs/adr/0002-figma-access-boundary.md
  • docs/adr/0005-relation-verification-agent.md
  • docs/adr/0008-organization-abbreviation-resolution.md
  • docs/adr/0022-authorized-tepp-start.md
  • docs/adr/0063-third-normal-form-bookmarks.md
  • docs/adr/0090-global-ask-lineage-timeline-expansion.md
  • docs/adr/0092-weekly-voc-iso-week-filter.md
  • docs/adr/0093-weekly-voc-open-focuses-event-lineage.md
  • docs/adr/0094-calendar-open-focuses-event-lineage.md
  • docs/adr/0095-customer-master-open-focuses-event-lineage.md
  • docs/adr/0096-ask-agent-open-focuses-event-lineage.md
  • docs/adr/0097-event-lineage-node-keeps-gnb-focus.md
  • docs/adr/0100-gnb-event-lineage-focuses-keyman.md
  • docs/adr/0101-internal-relation-evidence.md
  • docs/adr/0102-major-event-requester-processor.md
  • docs/adr/0103-semantic-document-evidence-contract.md
  • docs/adr/0105-source-whitespace-is-not-authoritative-structure.md
  • docs/adr/0106-related-node-business-captions.md
  • docs/adr/0108-semantic-source-unit-boundaries.md
  • docs/adr/0113-project-history-links-in-ask-surfaces.md
  • docs/adr/0114-stale-summary-buyer-continuity.md
  • docs/adr/0119-mcp-browser-request-admission.md
  • docs/adr/0120-two-word-database-identifiers.md
  • docs/adr/0121-mhtml-source-body-resolution.md
  • docs/adr/0122-ticket-mutation-resource-authorization.md
  • docs/adr/0123-provider-error-boundary.md
  • docs/adr/0124-customer-master-tree-projection.md
  • docs/adr/0125-global-ask-cutoff-and-migration-identity.md
  • docs/adr/0126-enrichment-timeout-does-not-block-summary.md
  • docs/adr/0127-recover-tepp-validation-on-canonical-project-history.md
  • docs/adr/0128-authorized-project-history-buyer-surface.md
  • docs/adr/0129-customer-master-three-pane-workspace.md
  • docs/adr/0130-global-ask-cutoff-and-migration-identity.md
  • docs/adr/0131-batched-post-ask-reauthorization.md
  • docs/adr/0132-operational-controlled-vocabulary-semantic-layer.md
  • docs/adr/0133-external-email-project-lineage-contract.md
  • docs/adr/0134-calendar-open-focuses-event-lineage.md
  • docs/adr/0135-global-ask-knowledge-cutoff.md
  • docs/adr/0136-authorized-project-history-buyer-surface.md
  • docs/adr/0137-ask-agent-evidence-workspace.md
  • docs/adr/0138-authenticated-mcp-global-ask.md
  • docs/adr/0139-valkey-account-operation-events.md
  • docs/adr/0140-mathematical-script-semantic-normalization.md
  • docs/adr/0141-retire-buyer-terminology.md
  • docs/adr/0142-lineage-provider-contract.md
  • docs/adr/0146-distributed-mcp-principal-rate-limit.md
  • docs/adr/0147-tepp-topic-lineage-project-history.md
  • docs/contracts/README.md
  • docs/contracts/external-lineage-analysis-v1.authorization.md
  • docs/contracts/external-lineage-analysis-v1.consumer-checklist.md
  • docs/contracts/external-lineage-analysis-v1.data-minimization.md
  • docs/contracts/external-lineage-analysis-v1.example.json
  • docs/contracts/external-lineage-analysis-v1.limitations.md
  • docs/contracts/external-lineage-analysis-v1.operability.md
  • docs/contracts/external-lineage-analysis-v1.schema.json
  • docs/contracts/external-lineage-analysis-v1.security.md
  • docs/contracts/external-lineage-analysis-v1.versioning.md
  • docs/doctoring/CUSTOMER_HIERARCHY_REFERENCES.md
  • docs/doctoring/DESIGN_TOKEN_REFERENCES.md
  • docs/doctoring/EXTERNAL_LINEAGE_CONTRACT_REFERENCES.md
  • docs/doctoring/EXTERNAL_LINEAGE_CONTRACT_TRACEABILITY.md
  • docs/doctoring/GLOBAL_ASK_KNOWLEDGE_CUTOFF.md
  • docs/doctoring/MCP_REFERENCES.md
  • docs/doctoring/PRODUCT_TECHNICAL_GAP_REFERENCES.md
  • docs/doctoring/RELATED_NODE_AFFILIATION_REFERENCES.md
  • docs/image-content-schema.md
  • docs/integrations/MCP.md
  • docs/lineage-bi-research-notes.md
  • docs/ontology/lineageweave-kg.shacl.ttl
  • docs/ontology/lineageweave-kg.ttl
  • docs/product-technical-gap-baseline.md
  • docs/storybook-inventory.md
  • docs/superpowers/plans/2026-08-21-external-lineage-integration-contract.md
  • docs/superpowers/plans/2026-08-21-forward-only-fast-stabilization.md
  • docs/superpowers/plans/2026-08-21-naruon-email-project-lineage-contract.md
  • docs/superpowers/specs/2026-08-21-naruon-email-project-lineage-contract-design.md
  • fix_prompts.py
  • frontend/package.json
  • frontend/src/App.css
  • frontend/src/App.test.tsx
  • frontend/src/App.tsx
  • frontend/src/LineageDag.css
  • frontend/src/LineageDag.css.test.ts
  • frontend/src/LineageDag.stories.tsx
  • frontend/src/LineageDag.test.tsx
  • frontend/src/LineageDag.tsx
  • frontend/src/PostBody.stories.tsx
  • frontend/src/PostBody.test.tsx
  • frontend/src/PostBody.tsx
  • frontend/src/RelatedNodeChip.stories.tsx
  • frontend/src/RelatedNodeChip.test.tsx
  • frontend/src/RelatedNodeChip.tsx
  • frontend/src/analysisRunNavigation.test.ts
  • frontend/src/analysisRunNavigation.ts
  • frontend/src/api.test.ts
  • frontend/src/api.ts
  • frontend/src/boardCss.test.ts
  • frontend/src/components/AskAgentWorkspace.css
  • frontend/src/components/AskAgentWorkspace.stories.tsx
  • frontend/src/components/AskAgentWorkspace.styles.test.ts
  • frontend/src/components/AskAgentWorkspace.test.tsx
  • frontend/src/components/AskAgentWorkspace.tsx
  • frontend/src/components/AskProjectHistoryLinks.css
  • frontend/src/components/AskProjectHistoryLinks.stories.tsx
  • frontend/src/components/AskProjectHistoryLinks.test.tsx
  • frontend/src/components/AskProjectHistoryLinks.tsx
  • frontend/src/components/BuyerNav.tsx
  • frontend/src/components/CitationChip.test.tsx
  • frontend/src/components/CustomerMasterRelationshipWorkspace.test.tsx
  • frontend/src/components/CustomerMasterTree.css
  • frontend/src/components/CustomerMasterTree.stories.tsx
  • frontend/src/components/CustomerMasterTree.test.tsx
  • frontend/src/components/CustomerMasterTree.tsx
  • frontend/src/components/PopupCloseButton.test.tsx
  • frontend/src/components/PopupCloseButton.tsx
  • frontend/src/components/ProjectHistoryTimeline.css
  • frontend/src/components/ProjectHistoryTimeline.stories.tsx
  • frontend/src/components/ProjectHistoryTimeline.tepp.test.tsx
  • frontend/src/components/ProjectHistoryTimeline.test.tsx
  • frontend/src/components/ProjectHistoryTimeline.tsx
  • frontend/src/components/TeppProjectHistoryEvidence.css
  • frontend/src/components/TeppProjectHistoryEvidence.stories.tsx
  • frontend/src/components/TeppProjectHistoryEvidence.test.tsx
  • frontend/src/components/TeppProjectHistoryEvidence.tsx
  • frontend/src/components/WorkspaceNav.test.tsx
  • frontend/src/components/WorkspaceNav.tsx
  • frontend/src/components/icons.tsx
  • frontend/src/customerMasterTree.test.ts
  • frontend/src/customerMasterTree.ts
  • frontend/src/customerMasterWorkspace.ts
  • frontend/src/i18n.test.ts
  • frontend/src/i18n.ts
  • frontend/src/index.css
  • frontend/src/isoWeek.test.ts
  • frontend/src/isoWeek.ts
  • frontend/src/lineageDagI18n.test.ts
  • frontend/src/lineageDagI18n.ts
  • frontend/src/lineageLayout.test.ts
  • frontend/src/lineageLayout.ts
  • frontend/src/mobileHeaderCss.test.ts
  • frontend/src/oidcReturnUrl.test.ts
  • frontend/src/oidcReturnUrl.ts
  • frontend/src/popupLayoutCss.test.ts
  • frontend/src/postBodyDisplay.test.ts
  • frontend/src/postBodyDisplay.ts
  • frontend/src/projectHistory.ts
  • frontend/src/relatedNodeCaption.test.ts
  • frontend/src/relatedNodeCaption.ts
  • frontend/src/relatedNodeTokens.css
  • frontend/src/styles/tokens.css
  • lineageweave/__init__.py
  • lineageweave/adjudication_client.py
  • lineageweave/affiliate_tree.py
  • lineageweave/caldav_client.py
  • lineageweave/chunking.py
  • lineageweave/commitment_extraction.py
  • lineageweave/corporate_hierarchy_inference.py
  • lineageweave/customer_hint_resolution.py
  • lineageweave/entity_relationship_classification.py
  • lineageweave/external_lineage.py
  • lineageweave/external_lineage_analysis.py
  • lineageweave/external_lineage_contract.py
  • lineageweave/http_client.py
  • lineageweave/image_content.py
  • lineageweave/keyman_extraction.py
  • lineageweave/ontology.py
  • lineageweave/organization_name_resolution.py
  • lineageweave/post_chat.py
  • lineageweave/post_content_normalization.py
  • lineageweave/post_content_persistence.py
  • lineageweave/post_evaluation.py
  • lineageweave/post_summary.py
  • lineageweave/project_history.py
  • lineageweave/rankweave_client.py
  • lineageweave/reconstruct.py
  • lineageweave/relation_verification.py
  • lineageweave/source_artifacts.py
  • lineageweave/tepp_client.py
  • lineageweave/tepp_project_history.py
  • lineageweave/topic_lineage_artifact.py
  • lineageweave/voc_evidence.py
  • migrations/0018_analysis_run_registry.sql
  • migrations/0031_semantic_project_mentions.sql
  • migrations/0035_body_search_prefix.sql
  • migrations/0036_normalized_body_search.sql
  • migrations/0043_bookmark.sql
  • migrations/0044_member_locale_preference.sql
  • migrations/0050_post_content_ingestion_queue.sql
  • migrations/0051_context_scoped_organization_name_resolution.sql
  • migrations/0052_global_ask_context.sql
  • migrations/0053_project_history_lookup.sql
  • migrations/0054_post_chat_knowledge_cutoff.sql
  • migrations/0103_tenant_settings.sql
  • migrations/0104_two_word_database_identifiers.sql
  • migrations/0131_analysis_run_topic_lineage_kind.sql
  • migrations/0132_analysis_run_topic_lineage_result.sql
  • migrations/rollback/0053_project_history_lookup.sql
  • migrations/rollback/0054_post_chat_knowledge_cutoff.sql
  • migrations/rollback/0104_two_word_database_identifiers.sql
  • patch_api.py
  • patch_app_fetch.py
  • patch_app_order.py
  • patch_app_test.py
  • patch_main.py
  • patch_main_pool.py
  • pyproject.toml
  • scripts/backfill_post_content.py
  • scripts/backfill_post_keymen.py
  • scripts/backfill_post_summaries.py
  • scripts/import_postgresql_posts.py
  • scripts/seed_demo_data.py
  • tests/test_activity_stream.py
  • tests/test_adjudication_client.py
  • tests/test_analysis_run_create.py
  • tests/test_analysis_run_start.py
  • tests/test_ask_project_history.py
  • tests/test_ask_project_history_cutoff.py
  • tests/test_backfill_post_content.py
  • tests/test_chunking.py
  • tests/test_config.py
  • tests/test_contextual_orchestrator_start.py
  • tests/test_documentation_hygiene.py
  • tests/test_entity_relationship_ingestion.py
  • tests/test_external_lineage_analysis.py
  • tests/test_external_lineage_contract.py
  • tests/test_external_lineage_explicit_parent_budget.py
  • tests/test_external_lineage_public_api.py
  • tests/test_global_ask_cutoff.py
  • tests/test_global_ask_cutoff_contract.py
  • tests/test_global_ask_cutoff_postgres.py
  • tests/test_global_ask_external_verification.py
  • tests/test_global_ask_external_verification_contracts.py
  • tests/test_global_ask_sources.py
  • tests/test_http_client.py
  • tests/test_image_content.py
  • tests/test_import_postgresql_posts.py
  • tests/test_ingestion_transaction_contracts.py
  • tests/test_keycloak_audience_reconciler.py
  • tests/test_mcp_auth.py
  • tests/test_mcp_browser_admission_contract.py
  • tests/test_mcp_citation_boundary.py
  • tests/test_mcp_config_admission.py
  • tests/test_mcp_cors_preflight.py
  • tests/test_mcp_external_opt_in.py
  • tests/test_mcp_external_optin.py
  • tests/test_mcp_global_ask.py
  • tests/test_mcp_global_ask_media.py
  • tests/test_mcp_jwks_shape.py
  • tests/test_mcp_rate_limit.py
  • tests/test_mcp_request_admission.py
  • tests/test_mcp_server.py
  • tests/test_migration_identity.py
  • tests/test_migration_replay.py
  • tests/test_ontology.py
  • tests/test_ontology_interoperability.py
  • tests/test_organization_name_resolution_ingestion.py
  • tests/test_period_report.py
  • tests/test_person_mention_projection.py
  • tests/test_post_chat.py
  • tests/test_post_chat_citation_type.py
  • tests/test_post_chat_conduct_contract.py
  • tests/test_post_chat_ingestion.py
  • tests/test_post_chat_ingestion_bounds.py
  • tests/test_post_content_normalization.py
  • tests/test_post_content_persistence_edges.py
  • tests/test_post_content_worker.py
  • tests/test_post_summary.py
  • tests/test_project_history.py
  • tests/test_project_history_api_contract.py
  • tests/test_rankweave_client.py
  • tests/test_reconstruct.py
  • tests/test_related_node_affiliation_ambiguity.py
  • tests/test_relation_verification.py
  • tests/test_schema.py
  • tests/test_source_artifacts.py
  • tests/test_stale_summary_continuity.py
  • tests/test_static_sql_review_contracts.py
  • tests/test_strict_http_metadata.py
  • tests/test_tepp_client.py
  • tests/test_tepp_project_history_recovery.py
  • tests/test_topic_lineage_artifact.py
  • update_app.py

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Contributor Author

Queue 2026-08-19T03:01 KST. Exact head 59b1c454 still has no independent current-head APPROVE. Do not self-approve. Do not merge until an independent reviewer approves this exact SHA and required checks succeed on that same head. Checks are queued; queued or predecessor-head gates are non-passing.

github-advanced-security[bot]

This comment was marked as resolved.

github-code-quality[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Contributor Author

Queue 2026-08-19T03:12 KST. Writes work this cycle (push + PR).

Buyer increment Weekly VOC is stacked here as feat/board-weekly-voc-filter-v2120 @ 72c66a3 (v2.12.0 / ADR 0051). After seed, Board → Weekly VOC keeps Public post (2026-W01) and names Event Lineage. Not mixed into #74 or #92. #96 already closed.

This PR (#258) still needs independent current-head APPROVE on 59b1c454. I will not self-approve. Do not wait on Checks from this comment.

github-code-quality[bot]

This comment was marked as resolved.

github-code-quality[bot]

This comment was marked as resolved.

@github-advanced-security github-advanced-security AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Semgrep OSS found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

Copy link
Copy Markdown
Contributor Author

Cycle 2026-08-19T13:02 KST: retrying independent review request and write path. Exact-head APPROVE still required; no self-approve.

Copy link
Copy Markdown
Contributor Author

Continuing the buyer increment on top of this branch: Weekly VOC as an ISO-8601 week list filter on Board, and opening a Weekly VOC post focuses Event Lineage (v2.13.0). Independent exact-head APPROVE still required before squash-merge. Do not self-approve. Issues #79 and #87 stay open.

Copy link
Copy Markdown
Contributor Author

Buyer increment stacked as #260 (ce4663c, v2.13.0) on this exact head 2b1e096. Weekly VOC is an ISO-8601 week list filter; opening that filtered post focuses Event Lineage. Independent exact-head APPROVE still required on this PR and on #260. Do not self-approve. Update-branch remains 422 dirty versus main after #74; not force-merged.

github-code-quality[bot]

This comment was marked as resolved.

github-code-quality[bot]

This comment was marked as resolved.

github-code-quality[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Contributor Author

Cycle 2026-08-19T16:16 KST write-retry: main is now 690f352 after #74 squash-merged. This PR is DIRTY against that head. Independent exact-head APPROVE still required. Do not self-approve. Issues #79 and #87 stay open.

Copy link
Copy Markdown
Contributor Author

Cycle 2026-08-19T16:31 KST. Writes still work (push + PR #263). Buyer GNB Event Lineage focus is now stacked through Ask Agent (v2.16.0 / ADR 0074) on #262. This PR remains DIRTY against main 690f3528 after #74. Independent exact-head APPROVE still required. Do not self-approve. Issues #79 and #87 stay open.

github-code-quality[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Contributor Author

Cycle 2026-08-20T07:03 KST: GitHub writes recovered (MCP REST/comment/push dry-run succeed). Exact head e6f51f1 still lacks independent non-author APPROVE. Do not self-approve. Do not squash-merge. Issues #79 and #87 stay open. #96 already closed as weaker duplicate of merged #91. #74 merged. Stack remains #258#260#261#262#263#264 → draft #265. Independent exact-head review required before merge.

Copy link
Copy Markdown
Contributor Author

@opencode-agent Current protected main has advanced to 690f352 and now contains merged #74. PR #258 is currently non-mergeable on stale base 8c020aa. Repair this existing PR branch only: refetch live main, identify #74 commits/content already upstream, then rebase or otherwise reconstruct #258 so the PR contains only #258's Buyer evidence board / source-grounded ontology / Global Ask / runtime hardening delta not already present on main. Do not duplicate or revert merged #74 behavior, migrations, ADRs, or version history. Preserve every resolved review fix on the current #258 head, especially embedding-client Protocol/static-analysis cleanup. Resolve conflicts semantically, not by choosing ours/theirs wholesale. Re-run exact-current-head Python/frontend/Storybook/security/coverage/PROV-O checks applicable to the resulting diff. Do not touch #260-#265, do not merge, and do not force-push unless required by a true rebase/reconstruction; if history rewrite is necessary, verify the resulting tree against both old #258 head and live main before pushing.

@github-actions
github-actions Bot disabled auto-merge August 23, 2026 11:23
seonghobae and others added 9 commits August 23, 2026 05:19
* feat: show project history lineage counts

* docs: record project history delivery evidence

* fix: label bounded project history counts
* test(red): require exact-origin MCP browser preflight

* test(red): bound MCP request bytes before parsing

* fix(mcp): bound request bytes before SDK parsing

* feat(mcp): configure a bounded request admission limit

* fix(mcp): admit exact-origin bounded browser requests

* fix(mcp): compare raw admission headers safely

* test(mcp): validate request-byte configuration

* test(mcp): cover every request admission branch

* test(mcp): require origin-aware browser responses

* fix(mcp): vary transport rejections by Origin

* docs: record MCP browser admission architecture

* docs: expose MCP browser admission settings

* ops: pass the MCP request-byte limit to the resource server

* docs: specify exact MCP browser and byte admission

* docs: trace MCP browser admission to transport standards

* docs: record MCP browser admission hardening

* test(mcp): bind deployment and documentation admission contracts

* test(mcp): expose OAuth metadata to browser clients

* fix(mcp): expose the OAuth challenge to browser clients

* test(mcp): reject unsafe configured browser origins

* fix(mcp): validate exact browser origin configuration

* docs: record browser-readable OAuth discovery

* docs: include browser OAuth discovery in admission ADR

* docs: expose browser OAuth discovery and exact origin startup rules

* test(mcp): bind browser OAuth discovery documentation

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
* docs(adr): define TEPP topic history boundary

* feat(analysis-run): add topic-lineage kind mirroring TEPP's fail-closed path

Implements the runtime scaffolding for ADR 0132: a new
analysis_run_topic_lineage kind (migration 0131) and result envelope
table (migration 0132) that request TEPP's TRSL-TM topic identity and
CHRONOS/TDT event-intelligence status through the same tepp_client
boundary as the existing TEPP measurement kind (ADR 0022), reusing
TEPP's generic AnalysisRunRequest wire shape with a different
model_contract_version/output_profile instead of inventing a new type.

- backend/app/analysis_run_start.py: topic_lineage_run_request,
  _deliver_topic_lineage_measurement, _persist_topic_lineage_result,
  start_kind_rejection and the outbox dispatch branch now handle the
  new kind, failing closed (tepp_not_available /
  tepp_result_not_persisted) exactly like TEPP.
- backend/app/analysis_run_ingestion.py: POST /api/analysis-runs still
  422s this kind (Create cannot invent a Pending topic-lineage row,
  same as TEPP).
- scripts/seed_demo_data.py: make seed now also writes a Demo Corp
  topic-lineage run; verified end-to-end against the live dev Postgres
  (Pending -> Running -> Failed/tepp_not_available).
- frontend/src/api.ts, App.tsx: AnalysisRunKindCode gains the new
  variant; every exhaustive switch (TypeScript `never` checks) and the
  start/retry UI copy is updated per kind.
- Tests: mirrors the existing TEPP coverage in
  test_analysis_run_start.py, test_analysis_run_create.py, and
  test_migration_replay.py.

Full backend suite: 852 passed, 17 skipped. Frontend: 200 passed,
lint clean, build clean. Migrations verified idempotent on re-apply
against the local Compose Postgres.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mk2aU7vk6Pn4pTnzcKT3Ws

* feat(project-history): consume TEPP topic lineage

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
@seonghobae

Copy link
Copy Markdown
Contributor Author

Superseded: closing as part of the 2026-08-24 merge-drain loop.

Verified against current main (63876eb7):

The genuinely valuable idea here — extracting the Global Ask/MCP monolith out of main.py into bounded application-service modules — is worth re-landing incrementally against current main as small reviewable refactors rather than as one 363-file root reconciliation. Follow-up refactor PRs will reference this closure.

@seonghobae seonghobae closed this Aug 24, 2026
seonghobae added a commit that referenced this pull request Aug 24, 2026
* feat: show persisted image-region locations

Render each stored visual-region bounding range beside its caption,
OCR, and tags so buyers can locate evidence on the source image
(ADR 0133). Hide internal LLM instructions and omit non-finite boxes.

* fix: open image-region locations and separate tag rows

Keep the region list expanded so the bounding range is the next
readable action, and put captions, tags, and locations on separate
lines.

* fix: validate image evidence and restore frontend build

* fix: tolerate normalized image edge rounding

* test(a11y): cover blank persisted image captions

* fix(a11y): keep image fallback names nonblank

* chore: nudge CI re-review (opencode-agent's prior REQUEST_CHANGES was against a transient coverage-evidence flake on this same head; later reruns of the same head passed, but opencode-review only posts once per head SHA)

* test: preserve OIDC hash through login redirect

* fix: normalize blank image-region evidence

* test(frontend): isolate application URL state

* fix(docs): renumber ADR 0133 to 0155 to avoid PR #258 collision

ADR number 0133 is simultaneously claimed by open PR #258
(docs/adr/0133-external-email-project-lineage-contract.md). Both PRs
target main, so main would end up with two different ADR files
sharing one number depending on merge order, breaking every
ADR-number cross-reference.

Renamed docs/adr/0133-buyer-image-region-locations.md to
0155-buyer-image-region-locations.md (0155 checked free on main and
across every currently open PR branch, including PR #258's own
0119-0133 range) and updated the four ADR-0133 citations in
docs/adr/0110-buyer-image-evidence-rendering.md, AGENTS.md,
CHANGELOG.md, and docs/product-technical-gap-baseline.md.

* fix(frontend): ignore blank parent image OCR

* chore(changelog): renumber the image-region fragment past 2.12.26

The fragment claimed 2.12.8 — a version released long before this PR —
and the merged CHANGELOG entry had slid under the released [2.12.19]
section. The entry now sits under [Unreleased], the fragment claims
2.12.27 (next after main's 2.12.26), and the heading drops the 'Buyer'
wording per the naming rule. Review follow-up on this PR's thread.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VENX71RtEntaUq6nkAWZho

---------

Co-authored-by: seonghobae <seonghobae@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request priority: critical

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants