Skip to content

feat(projects): add authoritative lifecycle ingestion - #312

Closed
seonghobae wants to merge 6 commits into
feat/project-history-timeline-v2184-r3from
codex/project-lifecycle-ingestion
Closed

seonghobae wants to merge 6 commits into
feat/project-history-timeline-v2184-r3from
codex/project-lifecycle-ingestion

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 20, 2026 •

Copy link
Copy Markdown
Contributor

Closes #284

Buyer gap

Buyer Project History needs a source-owned lifecycle clock that does not turn title/body hints or model output into fact.

Change

  • Add explicit, versioned source-event mappings for order, specification change, delivery, VOC, and rebid.
  • Require offset-aware timestamps and an evidence post owned by the same source record.
  • Keep identity, source, mapping, event, evidence, actor, responsibility, relation, and audit data normalized.
  • Make same-source imports idempotent and atomic; replacement is scoped to that source identity.
  • Withdraw only the owned projection while preserving independent source rows.
  • Enforce the dedicated project_lifecycle_write permission at the adapter boundary.
  • Do not call an LLM, classify title/body text, invent TEPP results, or copy source bodies into audit rows.

Stack and verification

  • Stacked on feat: add Buyer Project history destination (v2.18.0) #285 at current parent cfc125cb65f26ed7e834976dbff12b6b9790b59c.
  • Current head 47efe147 after resolving the Changelog-only restack conflict without dropping either parent decision.
  • uv run python -m pytest — 754 passed, 16 skipped, 5 warnings.
  • Frontend lint, 157 tests, production build, and Storybook build passed.
  • actionlint and git diff --check passed.
  • Synthetic fixtures only; no credentials or real records are included.

Keep this PR pending until the exact current head has independent approval and all required terminal Checks pass. Merge only through normal protected-branch policy.

@coderabbitai

coderabbitai Bot commented Aug 20, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c1df3d96-19e0-45f8-9dbb-3956f7b5a518

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Updated the product/technical gap baseline at this exact head with aggregate local runtime evidence: synthetic OIDC login, authorized board load, one authorized post detail open/close via Playwright, without recording source identifiers or content. The document still distinguishes local evidence from protected-main acceptance and keeps the next action to repeat the matrix on the exact integrated revision.

@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent review exact current HEAD b601a86. Review this project-lifecycle ingestion change at this exact commit and publish a formal review.

…184-r3' into codex/project-lifecycle-ingestion
devin-ai-integration[bot]

This comment was marked as resolved.

…184-r3' into codex/project-lifecycle-ingestion

# Conflicts:
#	CHANGELOG.md
@seonghobae

Copy link
Copy Markdown
Contributor Author

Closing as not merge-ready after comparing this exact head with #285 and the refined #284 contract. The branch adds a generic, uncalled writer plus ten parallel project identity/source/event/actor/relation tables; no production adapter calls it, and #285’s Buyer read model continues to project the existing source_post, post_project_mention, post_summary_role, and post_lineage_edge authority. The hard-coded source-event family is not backed by a concrete owned source schema, and the new permission is not bound to an authenticated route. Keep #284 open until one versioned source adapter contract exists; then extend the existing import/application-service boundary and add only facts it cannot already represent. This branch and its tests remain recoverable for reference.

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