Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
181 commits
Select commit Hold shift + click to select a range
62e10cd
docs(plans): orchestrate Luna Max delivery batches
BeforeLights Aug 2, 2026
eeb0853
docs(operations): record Luna Max handoff
BeforeLights Aug 2, 2026
1ebdc1e
feat(api): compose audit and entitlement foundations
BeforeLights Aug 2, 2026
db436ce
feat(aud): add tenant-scoped Prisma audit persistence
BeforeLights Aug 2, 2026
ff69724
feat(bua): add durable entitlement and usage persistence
BeforeLights Aug 2, 2026
0f46d16
feat(iam): add versioned PKCE boundary
BeforeLights Aug 2, 2026
0124139
feat(iam): add versioned CSRF boundary
BeforeLights Aug 2, 2026
46c2ee5
feat(iam): add durable credential lookup
BeforeLights Aug 2, 2026
881b5d5
refactor(iam): make session principal lookup async
BeforeLights Aug 2, 2026
a10e443
feat(iam): add durable session lifecycle
BeforeLights Aug 2, 2026
5360c15
feat(iam): persist personal identity bootstrap
BeforeLights Aug 2, 2026
54cc494
fix(iam): resolve organization memberships for sign-in
BeforeLights Aug 2, 2026
5f7c58f
feat(iam): persist MFA factors and recovery codes
BeforeLights Aug 2, 2026
3c90475
feat(iam): persist tenant-scoped memberships
BeforeLights Aug 2, 2026
7ff5bd4
feat(api): enforce browser CSRF boundary
BeforeLights Aug 2, 2026
9f140f1
feat(iam): add secure session cookie boundary
BeforeLights Aug 2, 2026
a909d9c
feat(iam): keep browser refresh credentials in cookies
BeforeLights Aug 2, 2026
305fdec
fix(iam): accept rotating refresh token cookie values
BeforeLights Aug 2, 2026
3af9101
feat(iam): rotate refresh sessions through HTTP
BeforeLights Aug 2, 2026
15d7018
feat(iam): revoke sessions through HTTP
BeforeLights Aug 2, 2026
5dc1779
feat(iam): persist access-token lookup digests
BeforeLights Aug 2, 2026
0b19a0b
feat(iam): derive tenant context from live sessions
BeforeLights Aug 2, 2026
152eae3
test(iam): verify protected tenant context integration
BeforeLights Aug 2, 2026
7852402
feat(iam): compose durable MFA service
BeforeLights Aug 2, 2026
02c1822
feat(iam): expose authenticated MFA lifecycle
BeforeLights Aug 2, 2026
676c632
test(iam): verify MFA HTTP lifecycle
BeforeLights Aug 2, 2026
293ed25
feat(aud): expose authenticated immutable audit reads
BeforeLights Aug 2, 2026
dc045fd
feat(bua): expose scoped entitlement reads
BeforeLights Aug 2, 2026
39dc6e0
feat(iam): expose current session identity
BeforeLights Aug 2, 2026
559124f
fix(iam): preserve MFA state in session context
BeforeLights Aug 2, 2026
fa3795f
fix(ci): satisfy strict TypeScript lint gates
BeforeLights Aug 2, 2026
238ce52
fix(ci): normalize repository formatting
BeforeLights Aug 2, 2026
86f25c8
Merge pull request #24 from DatabreezeService/feat/foundation-identit…
BeforeLights Aug 2, 2026
8022db1
feat(iae): expose exact artifact version reads
BeforeLights Aug 2, 2026
b06482a
feat(iae): expose artifact lineage reads
BeforeLights Aug 2, 2026
56ed43a
feat(iae): version content placement availability
BeforeLights Aug 2, 2026
474843f
feat(iae): model explicit artifact deletion authorization
BeforeLights Aug 2, 2026
bf197f4
feat(iae): add governed retention request service
BeforeLights Aug 2, 2026
c678bed
feat(iae): define verifiable artifact export manifests
BeforeLights Aug 2, 2026
33e2fe6
feat(iae): persist artifact export manifests
BeforeLights Aug 2, 2026
98bcb59
feat(dsm): expose governed dataset publication APIs
BeforeLights Aug 2, 2026
aef376c
feat(dsm): expose mapping publication endpoint
BeforeLights Aug 2, 2026
2269787
feat(dsm): expose rule-set publication endpoint
BeforeLights Aug 2, 2026
66d2a11
feat(dsm): expose reference entity version history
BeforeLights Aug 2, 2026
f23dc51
feat(dsm): persist immutable dataset result manifests
BeforeLights Aug 2, 2026
b36f66d
feat(iae): add retention and export persistence schema
BeforeLights Aug 2, 2026
538cff4
fix(iae): make Prisma placement registration idempotent
BeforeLights Aug 2, 2026
2ce24da
feat(dsm): add Prisma dataset version adapter
BeforeLights Aug 2, 2026
9808e8f
feat(iae): add Prisma retention repository
BeforeLights Aug 2, 2026
8d1baac
feat(iae): add Prisma export repository
BeforeLights Aug 2, 2026
72131d1
feat(iae): add Prisma lineage repository
BeforeLights Aug 2, 2026
9bbc79e
fix(iae): persist validated inbox transitions
BeforeLights Aug 2, 2026
1ca8cc2
feat(iae): add resumable upload domain
BeforeLights Aug 2, 2026
67713f2
feat(iae): coordinate resumable upload sessions
BeforeLights Aug 2, 2026
3fbb581
feat(iae): persist resumable upload sessions
BeforeLights Aug 2, 2026
270ceb1
feat(iae): add Prisma upload session adapter
BeforeLights Aug 2, 2026
1970f55
feat(iae): expose upload session control plane
BeforeLights Aug 2, 2026
a077152
feat(iae): add Prisma evidence grant adapter
BeforeLights Aug 2, 2026
0bb9391
fix(dsm): enforce dataset result input validation
BeforeLights Aug 2, 2026
11bb7b7
feat(dsm): list dataset result manifests
BeforeLights Aug 2, 2026
7da9117
feat(iae): persist artifact admission status
BeforeLights Aug 2, 2026
ad9857b
feat(iae): coordinate artifact admission
BeforeLights Aug 2, 2026
f54d096
feat(iae): expose artifact admission endpoint
BeforeLights Aug 2, 2026
a860c91
fix(iae): normalize retention adapter formatting
BeforeLights Aug 2, 2026
f496647
fix(test): satisfy strict API lint gates
BeforeLights Aug 2, 2026
356a4ff
chore(api): refresh generated OpenAPI and migration inventory
BeforeLights Aug 2, 2026
8e430ba
feat(dsm): add immutable dataset quality result contract
BeforeLights Aug 2, 2026
b4e1873
feat(dsm): coordinate tenant-scoped quality results
BeforeLights Aug 2, 2026
53acdea
feat(dsm): persist quality results with Prisma
BeforeLights Aug 2, 2026
9c12117
feat(dsm): expose dataset quality result API
BeforeLights Aug 2, 2026
e87d729
feat(engine): evaluate value-free dataset quality rules
BeforeLights Aug 2, 2026
6b3c8cd
feat(iae): add revisioned inbox metadata policy
BeforeLights Aug 2, 2026
76e7053
feat(iae): coordinate inbox metadata updates
BeforeLights Aug 2, 2026
e6207c2
feat(iae): persist inbox metadata with Prisma
BeforeLights Aug 2, 2026
0aba003
feat(iae): expose revisioned inbox metadata patch
BeforeLights Aug 2, 2026
ecd89c9
fix(test): remove unsafe quality response assertion
BeforeLights Aug 2, 2026
511c483
feat(dsm): add reproducible profile disclosure contract
BeforeLights Aug 2, 2026
612c1fe
feat(dsm): coordinate scoped profile disclosures
BeforeLights Aug 2, 2026
ef43306
feat(dsm): expose profile disclosure API
BeforeLights Aug 2, 2026
384213b
feat(dsm): persist profile disclosures with Prisma
BeforeLights Aug 2, 2026
e415fa7
feat(dsm): add typed safe finding subjects
BeforeLights Aug 2, 2026
261c8af
feat(dsm): expose typed safe finding values
BeforeLights Aug 2, 2026
083e076
feat(dsm): add stable profile pagination
BeforeLights Aug 2, 2026
ebadd9d
feat(dsm): expose cursor-paginated profiles
BeforeLights Aug 2, 2026
ddb7fd2
feat(iae): add opaque upload storage boundary
BeforeLights Aug 2, 2026
56b61b1
feat(iae): verify uploads through storage boundary
BeforeLights Aug 2, 2026
79ebbfd
feat(iae): expose opaque upload transfer grants
BeforeLights Aug 2, 2026
83982e8
feat(iae): add secret-free protected document unlock contract
BeforeLights Aug 2, 2026
b2beaaf
feat(iae): coordinate protected document unlock attempts
BeforeLights Aug 2, 2026
25863a0
feat(iae): expose protected document unlock workflow
BeforeLights Aug 2, 2026
06272d4
feat(iae): persist protected document unlock state
BeforeLights Aug 2, 2026
f978b19
feat(dsm): add governed dataset export manifest contract
BeforeLights Aug 2, 2026
66b6e49
feat(dsm): coordinate governed export manifests
BeforeLights Aug 2, 2026
f3d6356
feat(dsm): expose governed dataset export manifests
BeforeLights Aug 2, 2026
e396283
feat(dsm): persist governed export manifests
BeforeLights Aug 2, 2026
27f8a56
fix(iae): clean expired upload storage state
BeforeLights Aug 2, 2026
135cac8
feat(sa): add safe deterministic spreadsheet auditor core
BeforeLights Aug 2, 2026
7a03e21
feat(sa): add value-free spreadsheet audit result contract
BeforeLights Aug 2, 2026
032ba16
feat(sa): coordinate immutable spreadsheet audit results
BeforeLights Aug 2, 2026
3a88d39
feat(sa): expose spreadsheet audit API boundary
BeforeLights Aug 2, 2026
534b518
feat(sa): persist spreadsheet audit results
BeforeLights Aug 2, 2026
bdd03af
feat(sa): bridge engine audits to value-free manifests
BeforeLights Aug 2, 2026
45c4ed0
docs(sa): record vertical slice evidence and limits
BeforeLights Aug 2, 2026
203cc7a
fix(foundation): keep application layers adapter-independent
BeforeLights Aug 2, 2026
a110846
fix(sa): preserve formula geometry and formatting gates
BeforeLights Aug 2, 2026
b85d843
fix(engine): satisfy deterministic processor lint gates
BeforeLights Aug 2, 2026
5459778
fix(engine): match Ruff processor formatting
BeforeLights Aug 2, 2026
688896a
Merge pull request #26 from DatabreezeService/feat/artifacts-datasets…
BeforeLights Aug 2, 2026
e107145
fix(iae): fail closed for unavailable evidence
BeforeLights Aug 2, 2026
e52bd2a
feat(iae): expose safe evidence resolution
BeforeLights Aug 2, 2026
7927cf2
fix(iae): make evidence persistence idempotent
BeforeLights Aug 2, 2026
081147b
fix(sa): validate finding geometry
BeforeLights Aug 2, 2026
2563aab
feat(iae): persist artifact scan state
BeforeLights Aug 2, 2026
d4cda4d
feat(iae): expose retention request reads
BeforeLights Aug 2, 2026
70a4596
fix(dsm): enforce deterministic quality state
BeforeLights Aug 2, 2026
9312775
fix(iae): reject invalid lineage references
BeforeLights Aug 2, 2026
6431c9a
feat(iae): enforce one lineage per derived version
BeforeLights Aug 2, 2026
556dd73
test(sa): ignore correlation id in content assertion
BeforeLights Aug 2, 2026
968168e
feat(sa): detect deterministic formula gaps
BeforeLights Aug 2, 2026
d87cdac
fix(iae): validate evidence geometry before lookup
BeforeLights Aug 2, 2026
27789f7
fix(sa): preserve absolute formula references
BeforeLights Aug 2, 2026
4d3f40d
fix(api): expose audit and entitlement composition options
BeforeLights Aug 2, 2026
868c573
fix(iam): wrap direct bootstrap saves in transactions
BeforeLights Aug 2, 2026
237ba56
fix(iam): guard membership updates by revision
BeforeLights Aug 2, 2026
bc069e2
fix(iae): guard placement updates by revision
BeforeLights Aug 2, 2026
68e69df
fix(iae): use unique lookup for derived lineage
BeforeLights Aug 2, 2026
e2ccd90
fix(iae): bind retention requests to actor context
BeforeLights Aug 2, 2026
221c3c6
fix(iae): guard retention transitions by revision
BeforeLights Aug 2, 2026
536a2d1
fix(iae): guard artifact status transitions by scan state
BeforeLights Aug 2, 2026
91b63ba
test(iae): cover retention HTTP actor binding
BeforeLights Aug 2, 2026
9bbcb53
fix(iam): reject changed stale MFA revisions
BeforeLights Aug 2, 2026
068286b
fix(iam): guard device transitions by revision
BeforeLights Aug 2, 2026
216f4a1
fix(bua): guard reservation settlement by revision
BeforeLights Aug 2, 2026
735c1f3
fix(dso): guard capability replacement by revision
BeforeLights Aug 2, 2026
98f7f75
fix(dso): guard sync transitions by revision
BeforeLights Aug 2, 2026
49e7426
fix(dso): guard grant revocation by revision
BeforeLights Aug 2, 2026
ebf76c5
fix(dsm): validate immutable dataset revisions
BeforeLights Aug 2, 2026
9d3f82e
fix(dsm): validate immutable mapping revisions
BeforeLights Aug 2, 2026
21be92e
fix(style): format artifact domain tests
BeforeLights Aug 2, 2026
1336ddc
fix(tooling): ignore worktrees in lint
BeforeLights Aug 2, 2026
48ede83
fix(engine): satisfy ruff pairwise checks
BeforeLights Aug 2, 2026
c9cac6b
fix(api): satisfy strict correlation redaction typing
BeforeLights Aug 2, 2026
8f50039
fix(engine): format spreadsheet auditor fixtures
BeforeLights Aug 2, 2026
12d9271
Merge pull request #27 from DatabreezeService/feat/iae-evidence-gover…
BeforeLights Aug 2, 2026
e6800db
fix(iam): compare bootstrap rows by owned fields
BeforeLights Aug 2, 2026
b7ee10a
perf(iam): bound membership reads to organization scope
BeforeLights Aug 2, 2026
26ff403
fix(iam): make membership selection deterministic
BeforeLights Aug 2, 2026
587eebe
fix(iam): expire in-memory access tokens
BeforeLights Aug 2, 2026
e668bd4
fix(iam): compare-and-set MFA revisions
BeforeLights Aug 2, 2026
6d26ec7
fix(iam): use constant-time recovery matching
BeforeLights Aug 2, 2026
a62e515
fix(iam): map session persistence failures to unavailable
BeforeLights Aug 2, 2026
8ea5ec9
fix(http): require production CSRF origins
BeforeLights Aug 2, 2026
8874b36
perf(aud): scope chain reads to the target ledger
BeforeLights Aug 2, 2026
463abbb
fix(aud): compare immutable records by owned fields
BeforeLights Aug 2, 2026
eb02077
fix(bua): compare immutable records by owned fields
BeforeLights Aug 3, 2026
ebe73cf
perf(aud): bound append lookups to latest and replay
BeforeLights Aug 3, 2026
bb8a11f
perf(bua): scope usage reads to tenant ancestry
BeforeLights Aug 3, 2026
50e325d
fix(bua): enforce terminal reservation transitions
BeforeLights Aug 3, 2026
2328dd4
fix(bua): return entitlement problems with HTTP status
BeforeLights Aug 3, 2026
295b911
fix(iam): authorize sign-out session ownership
BeforeLights Aug 3, 2026
afdd94b
fix(iam): map MFA persistence failures to unavailable
BeforeLights Aug 3, 2026
5e67f8b
fix(iam): fail closed at device identity API boundary
BeforeLights Aug 3, 2026
7c94a11
fix(iam): distinguish session authority outages
BeforeLights Aug 3, 2026
44c1fae
test(iam): exercise unsafe principal rejection
BeforeLights Aug 3, 2026
868267d
fix(iam): bound session cookie parsing
BeforeLights Aug 3, 2026
447b029
fix(http): bound CSRF cookie parsing
BeforeLights Aug 3, 2026
048d5bd
fix(iam): enforce narrowest membership authority
BeforeLights Aug 3, 2026
c48aa8b
fix(iam): scope membership mutation lookup
BeforeLights Aug 3, 2026
4f1b555
fix(iam): scope device identity lookups
BeforeLights Aug 3, 2026
ead1d27
fix(aud): map read outages to unavailable
BeforeLights Aug 3, 2026
ab1e2a6
fix(aud): scope event identity lookup
BeforeLights Aug 3, 2026
e86f7ad
fix(bua): scope entitlement identity lookups
BeforeLights Aug 3, 2026
784fa32
fix(iam): propagate session authority outages
BeforeLights Aug 3, 2026
7b628f2
fix(iam): bind sessions to tenant scope
BeforeLights Aug 3, 2026
12b8c3a
docs(traceability): reconcile identity foundation coverage
BeforeLights Aug 3, 2026
2c12a91
docs(git): enforce 30 to 50 commit PR slices
BeforeLights Aug 3, 2026
8e9d753
style(iam): format bootstrap repository
BeforeLights Aug 3, 2026
47db553
test(api): register session scope migration
BeforeLights Aug 3, 2026
d323c02
test(web): tolerate lazy route startup under load
BeforeLights Aug 3, 2026
5d09843
fix(aud): preserve success responses in OpenAPI
BeforeLights Aug 3, 2026
7ccbbd1
Merge pull request #28 from DatabreezeService/feat/foundation-identit…
BeforeLights Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion apps/web/test/error-privacy-query.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ describe('safe localized recovery', () => {
const router = createAppRouter({ initialEntries: ['/vi-VN/debug/route-error'] });
render(<ApplicationBoundary router={router} />);

expect(await screen.findByRole('heading', { name: 'Không thể mở khu vực này' })).toBeTruthy();
expect(
await screen.findByRole('heading', { name: 'Không thể mở khu vực này' }, { timeout: 5_000 }),
).toBeTruthy();
expect(screen.queryByText(/internal tenant detail/u)).toBeNull();
consoleError.mockRestore();
});
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Identity, audit, and entitlement reconciliation — 2026-08-03

## Scope

This evidence record covers the 30-commit `feat/foundation-identity-reconciliation` batch based on `dev`. The batch hardens existing IAM, AUD, and BUA foundations; it does not claim completion of Plan 020 or any production release gate.

## Implemented in this batch

- IAM persistence now compares only owned immutable fields, scopes membership and Device lookups before row materialization, applies optimistic revisions to MFA state, binds sessions to the exact sign-in organization/workspace, expires access credentials, separates rejected credentials from authority outages, authorizes sign-out ownership, and bounds cookie/CSRF parsing.
- Membership authority flows only from a containing tenant scope, and the narrowest applicable membership wins. A project or workspace membership cannot authorize its parent or a sibling.
- AUD append paths use scoped, bounded replay/latest lookups; immutable comparisons ignore persistence metadata; read outages return safe retryable `AUDIT_UNAVAILABLE` problems.
- BUA tenant-owned identity lookups and usage reads are scope-bound; immutable comparisons ignore persistence metadata; reservations allow only one terminal transition; API failures return stable Problem Details.

## Conservative requirement state

The traceability manifest marks only requirements with concrete implementation and tests as `partial`. All remain `not-verified`; no P0/P1 release status is promoted. Requirements whose primary behavior is absent—such as invitations, service accounts, account recovery, audit exports/legal holds, commercial billing reconciliation, and usage exports—remain `planned`.

## Evidence

- Domain tests: `packages/domain/test/identity-v1.test.mjs`, `packages/domain/test/audit-v1.test.mjs`, `packages/domain/test/entitlements-v1.test.mjs`, and tenant/authorization/CSRF/MFA suites.
- API tests: `services/api/test/features/iam/`, `services/api/test/features/aud/`, `services/api/test/features/bua/`, `services/api/test/platform/http/`, and `services/api/test/http-contract.test.ts`.
- Persistence: `services/api/prisma/schema/iam.prisma`, `services/api/prisma/schema/aud.prisma`, `services/api/prisma/schema/bua.prisma`, and the ordered IAM session-scope migration.
- Focused verification passed throughout the batch, including TypeScript compilation, Prisma schema validation, 122 domain tests, and the affected API suites.

## Remaining gates

- Plan 020 still requires invitations, ownership transfer workflows, service accounts, signed offline authorization issuance, full permission enforcement, audit action-definition governance, signed independent seals, legal holds/retention/export/restore, provider-independent subscriptions, offline entitlement issuance, reconciliation/exports, client administration surfaces, and real PostgreSQL/backup/security evidence.
- FND-003 remains blocked only on live Docker daemon evidence; this batch does not change its status.
- The feature PR targets `dev` without CodeRabbit. CodeRabbit remains reserved for the later `dev` to `main` promotion PR and is invoked once there.
85 changes: 85 additions & 0 deletions docs/operations/luna-max-handoff-2026-08-02.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Luna Max implementation handoff

Observed at (UTC): `2026-08-02T14:16:09Z`

## Repository state

- Canonical repository/worktree: `databreeze-platform/.worktrees/luna-max-orchestration`
- Branch: `feat/foundation-identity-completion`
- Upstream: `origin/feat/foundation-identity-completion`
- Branch base / remote `dev`: `783a4710c0aa2a2808d78ad7f0643e6731150bd7`
- Remote `main`: `3ed3d77d0281ef239d0509c81ded447d8fffd213`
- Completed orchestration commit: `62e10cddeda3cd6d49a3c78795a420b7c58331fc`
- Open feature PR: none
- Open promotion PR: none
- CodeRabbit invocation for this batch: `0`
- Normal batch count before this handoff record: `1` commit and `8` changed files

## Active execution state

- Active batch: `B01 — Foundation verification and identity completion`
- Next task: `FND-003 — Close local infrastructure gaps`
- Batch target: 70 atomic commits; allowed range 30–85; repository hard maximum 99
- Promotion changed-file target: at most 260; review stop gate: 280
- Requirement ledger remains conservative: 608 `planned`, 3 `partial`, 0 `verified`
- Verified foundation task evidence: `FND-001`, `FND-002`
- Integrated but incompletely evidenced foundation work: `FND-003..007`

## Delivered planning outcome

- Added `docs/plans/004-luna-max-execution-plan.md` with 15 dependency-safe delivery batches covering all 153 unfinished orchestration tasks exactly once.
- Updated the execution ledger to version 2 with the current promotion checkpoint, `activeBatchId`, exact batch dependencies, branch names, commit budgets, changed-file limits, exit gates, and conservative foundation task states.
- Extended the orchestration checker to reject missing/duplicate task ownership, batch dependency cycles, undersized normal batches, 100-or-more commit maxima, changed-file limits above 260, undocumented batch drift, and an active batch that does not contain the next task.
- Updated the resume runbook with batch-state recovery, sequential package-manager operation, `EBUSY`/`EEXIST` recovery, and the exact Luna Max bootstrap contract.
- Corrected the stale plan-package filename in `docs/plans/README.md`.

## Verification evidence

Passed from the isolated worktree after sequential bootstrap:

- `corepack pnpm install --frozen-lockfile`
- `uv sync --locked --offline` in `services/engine`
- `corepack pnpm repo:check`
- `corepack pnpm repo:build`
- `git diff --check`
- Orchestration checker: 19 plans, 155 tasks, 15 batches, 611 requirements, next `FND-003`, active `B01`
- Repository CLI tests: 74 passed
- Orchestration tests: 13 passed
- Python engine tests: 92 passed
- Turborepo tests: 21 successful tasks
- Turborepo builds: 12 successful tasks
- TypeScript/Python/Kotlin contract parity: 28 cases

Environment gates intentionally remain open:

- OpenTofu is unavailable on this workstation; static AWS checks pass, but pinned `fmt/init/validate` and reviewed plan evidence remain required.
- Docker Desktop/Compose v2 was unavailable during the foundation implementation; live health, collision, disk-pressure, Redis persistence, and restart checks remain required for `FND-003`.
- GitHub protected release-environment reviewers and branch restrictions require administrator evidence.
- Android instrumentation/emulator and signed packaging remain later release gates.

## Resume instructions

Run sequentially:

```powershell
git fetch --all --prune
git switch feat/foundation-identity-completion
git pull --ff-only origin feat/foundation-identity-completion
corepack pnpm install --frozen-lockfile
Push-Location services/engine
uv sync --locked --offline
Pop-Location
corepack pnpm orchestration:check
corepack pnpm requirements:check
```

Then read `AGENTS.md`, `docs/plans/002-complete-execution-orchestration.md`, `docs/plans/003-luna-handoff-runbook.md`, `docs/plans/004-luna-max-execution-plan.md`, the Plan 010/020 documents, and the selected trace records. Resume `FND-003` from its live-environment gate; reconcile existing merged behavior before writing replacement code.

Do not open a PR yet. Continue atomic `B01` work on this branch until it reaches at least 30 commits, targeting about 70. The feature PR goes to `dev` without CodeRabbit; the later `dev` to `main` promotion receives the single full CodeRabbit review.

## Rollback and preserved state

- Revert the handoff-record commit to remove only this status record.
- Revert `62e10cddeda3cd6d49a3c78795a420b7c58331fc` to remove the Luna batch plan, ledger version 2, and its validation changes as one independent unit.
- No infrastructure was applied, no database was migrated, no customer data was read, and no feature flag changed.
- Ignored `node_modules`, `.venv`, `dist`, and tool caches are disposable worktree products; tracked files are clean after the containing handoff commit.
2 changes: 2 additions & 0 deletions docs/plans/000-platform-program.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ Child plans are written and approved before their product slice begins. Each nam

docs/plans/requirement-traceability.json records all 611 IDs with requested trace fields, one primary plan/task, release status, and verified paths only after evidence exists.

`docs/plans/004-luna-max-execution-plan.md` packages the unfinished orchestration tasks into 15 dependency-safe delivery batches. A normal PR slice contains 30–50 atomic commits; an exceptional completed-task boundary may extend to 79 but never to CodeRabbit's 100-commit limit. Promotion diffs stay at or below 260 changed files and use the `feat/*` or `fix/*` → `dev` → reviewed `main` flow below.

## Branch, commit, and review policy

- `main` contains stable releases. `dev` is the integration branch.
Expand Down
15 changes: 10 additions & 5 deletions docs/plans/002-complete-execution-orchestration.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

**Goal:** Finish all 611 DataBreeze requirements through dependency-ordered, independently reversible tasks and preserve enough verified state that a new model can resume without guessing.

**Architecture:** The numbered child plans remain the requirement owners. This document adds the execution DAG, atomic task boundaries, parallel-work rules, cross-plan gates, failure handling, and handoff contract that bind those child plans into one program. `execution-orchestration.json` is the machine-readable control record; `requirement-traceability.json` remains the requirement-to-code-and-evidence authority.
**Architecture:** The numbered child plans remain the requirement owners. This document adds the execution DAG, atomic task boundaries, parallel-work rules, cross-plan gates, failure handling, and handoff contract that bind those child plans into one program. `004-luna-max-execution-plan.md` packages unfinished tasks into reviewable delivery batches, `execution-orchestration.json` is the machine-readable control record, and `requirement-traceability.json` remains the requirement-to-code-and-evidence authority.

**Tech Stack:** pnpm/Turborepo and strict TypeScript, NestJS/Fastify, PostgreSQL 17 with Prisma, Redis 7.4, S3-compatible storage, Electron, Kotlin/Compose, Python 3.13, OpenAPI/JSON Schema, OpenTofu/AWS Singapore, GitHub Actions, and CodeRabbit.

Expand Down Expand Up @@ -33,8 +33,9 @@ Read sources in this order when they disagree:
3. Normative requirements under `docs/specs/` and `docs/specs/requirement-index.json`.
4. Product and architecture documents under `docs/product/` and `docs/architecture/`.
5. The requirement-owning child plan under `docs/plans/`.
6. This orchestration plan and `execution-orchestration.json`.
7. Existing code and historical implementation reports.
6. This orchestration plan.
7. `004-luna-max-execution-plan.md` and `execution-orchestration.json`.
8. Existing code and historical implementation reports.

Code is evidence of work, not evidence of full requirement completion. Use these states consistently:

Expand All @@ -57,11 +58,15 @@ The ledger also uses these plan/task states; they are not requirement statuses a

Never infer `verified` from a merged PR, a green unit test, file existence, or a previous model's prose.

The numbered child plans own requirement scope and release obligations. Their early generated `Paths` examples are not repository path authority. Section 4 of this document supersedes generic aggregate names such as `identity-audit-entitlements`, `production-readiness`, or hyphenated Python processor directories; use the module-owned roots and deterministic platform keys below.

## 2. Recorded checkpoint

This plan was prepared on 2026-08-02 from remote `dev` at `b21642b` and remote `main` at `8ac8bca`; promotion PR 8 had merged and no PR was open. The requirement manifest contained 611 records: 444 P0, 154 P1, 13 P2; 608 were `planned` and 3 were `partial`.
This plan was reconciled on 2026-08-02 from remote `dev` at `783a4710c0aa2a2808d78ad7f0643e6731150bd7` and remote `main` at `3ed3d77d0281ef239d0509c81ded447d8fffd213`; promotion PR 20 had merged and no PR was open. The requirement manifest contained 611 records: 444 P0, 154 P1, 13 P2; 608 were `planned` and 3 were `partial`.

Merged PRs 1–23 establish substantial engineering, IAM/AUD/BUA, IAE/DSM, JRA, and DSO code. PR 19 delivered the normal 73-commit foundation batch to `dev`; PR 20 promoted it to `main`; PRs 21–23 carried validated promotion-review fixes back through `dev`. Plans 010–050 must therefore start with evidence reconciliation, not blind reimplementation. Plans 060–500 remain unverified and must be treated as planned until their gates pass.

Merged PRs 1–8 establish substantial engineering, IAM/AUD/BUA, IAE/DSM, JRA, and DSO code. Plans 010–050 must therefore start with evidence reconciliation, not blind reimplementation. Plans 060–500 remain unverified and must be treated as planned until their gates pass.
The active execution packet is `B01` in `004-luna-max-execution-plan.md`, starting with `FND-003` on `feat/foundation-identity-completion`. The packet preserves the requested 30–99 commit rule, targets about 70 commits, and carries the implementation forward without opening a documentation-only PR.

The hashes above are an audit anchor, not a branch lock. Every session must fetch and recompute live state; update the ledger checkpoint only as part of a committed task/PR handoff so session-local observations do not create meaningless dirty files.

Expand Down
Loading
Loading