Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
f857437
docs(roadmap): close merged P02d-6 and record next packet
cemililik Oct 10, 2026
3160714
docs(decisions): accept P02d-7 demo and audit contracts
cemililik Oct 10, 2026
82459cb
feat(dev): add the shared seeded demo lifecycle
cemililik Oct 11, 2026
4966dca
fix(dev): close demo lifecycle review findings
cemililik Oct 11, 2026
6395d85
fix(dev): isolate demo profiles and Compose controls
cemililik Oct 11, 2026
eb3f2da
test(dev): prove demo profile refusal is causal
cemililik Oct 11, 2026
69363fe
test(architecture): enforce the P7 demo identity boundary
cemililik Oct 11, 2026
f54c2f0
fix(architecture): close demo identity scan omissions
cemililik Oct 11, 2026
e70e204
fix(architecture): preserve conditional and runtime census semantics
cemililik Oct 11, 2026
69ce613
fix(architecture): refuse unmodeled resolver options
cemililik Oct 11, 2026
d99d10b
feat(dev): enforce seeded browser and Lighthouse demo proofs
cemililik Oct 11, 2026
38c15d9
fix(dev): refuse incomplete or invisible demo proof results
cemililik Oct 11, 2026
39cee01
fix(dev): join audit output and reject hidden product markers
cemililik Oct 11, 2026
e1486de
fix(dev): preserve the total owned shutdown deadline
cemililik Oct 11, 2026
06d46ad
docs(roadmap): close P7 browser proof review rounds
cemililik Oct 11, 2026
bf5bc9c
feat(ci): enforce P7 public demo and reconcile phase exit
cemililik Oct 11, 2026
100b022
fix(ci): complete P7 exit proofs and reserve owned cleanup
cemililik Oct 11, 2026
8605fc9
docs(roadmap): close both P7 phase-exit review rounds
cemililik Oct 11, 2026
36cd6e0
docs: record P02d-7 CI and phase-exit verification
cemililik Oct 11, 2026
e00395a
docs(roadmap): align locale exit rows with verified CI
cemililik Oct 11, 2026
d47ef17
test(architecture): handle optional demo curricula consistently
cemililik Oct 11, 2026
dca3a7b
fix(dev): align demo tool versions and review evidence
cemililik Oct 11, 2026
aebefee
docs(roadmap): record P7 review remediation verification
cemililik Oct 11, 2026
cd6affd
fix(dev): preserve independent demo cleanup and seed launch
cemililik Oct 11, 2026
db6bcdf
test(architecture): close demo source census admission gaps
cemililik Oct 11, 2026
90114f0
test(architecture): refuse ambiguous demo census resolution
cemililik Oct 11, 2026
c6cd69f
test(web): inspect every inherited demo census config candidate
cemililik Oct 11, 2026
9a0d285
test(dev): verify demo reconciliation and align delivery guidance
cemililik Oct 11, 2026
e3a32d2
docs(roadmap): close systematic P7 remediation review rounds
cemililik Oct 11, 2026
4541d63
docs(roadmap): clarify proof helper closeout wording
cemililik Oct 11, 2026
d16d2d7
test(architecture): admit ignored local machine artifacts
cemililik Oct 11, 2026
9343e99
test(architecture): refuse ignored MSBuild user hooks
cemililik Oct 11, 2026
ec86884
docs(roadmap): close ignored-machine-file review follow-up
cemililik Oct 11, 2026
32a7951
test(cache): coordinate the noncooperative factory timeout proof
cemililik Oct 11, 2026
8d9d219
docs(roadmap): record cache timeout proof reviews
cemililik Oct 11, 2026
3e86041
docs(roadmap): close Phase 02d after PR 28 merge
cemililik Oct 11, 2026
6baeffb
docs(roadmap): complete P02b-0 entry verification
cemililik Oct 12, 2026
fffbd4d
docs(decisions): propose P02b-1 event producer contracts
cemililik Oct 12, 2026
907ca35
docs(decisions): clarify P02b-1 producer decision boundaries
cemililik Oct 12, 2026
b157650
docs(decisions): accept P02b-1 producer contracts
cemililik Oct 12, 2026
cbab31a
feat(kernel): share producer and audit execution lifecycle
cemililik Oct 12, 2026
ab2c37d
fix(kernel): fence producer ownership and prove all ancestors
cemililik Oct 12, 2026
3fd8e8a
docs(events): close shared lifecycle review rounds
cemililik Oct 12, 2026
7541b73
docs(events): align producer packet review status
cemililik Oct 12, 2026
db882e0
feat(kernel): persist outbox events in the admitted transaction
cemililik Oct 12, 2026
37d95bd
docs(events): reconcile the delivered outbox entry baseline
cemililik Oct 12, 2026
937e36a
test(kernel): prove enqueue and completion never publish
cemililik Oct 12, 2026
d6fbd85
feat(kernel): complete saved domain facts before commit
cemililik Oct 12, 2026
3473843
docs(events): close domain completion review rounds
cemililik Oct 12, 2026
b6e3932
test(events): enforce producer contracts across production code
cemililik Oct 12, 2026
98c22a8
test(events): cover abstract and virtual helper dispatch
cemililik Oct 12, 2026
1e799a8
docs(roadmap): close P02b-1 implementation and review rounds
cemililik Oct 12, 2026
11871a2
test(web): expose bounded browser admission failure phases
cemililik Oct 12, 2026
471d0a0
docs(events): reconcile producer and pending delivery guarantees
cemililik Oct 12, 2026
d5afc66
docs(architecture): distinguish local event invocation ordering
cemililik Oct 12, 2026
d38b0c5
docs(events): align transport comments with ordering ownership
cemililik Oct 12, 2026
a903b53
test(web): preserve the first admission proof failure
cemililik Oct 12, 2026
cb2bb6d
docs(roadmap): record P02b-1 CI follow-up verification
cemililik Oct 12, 2026
d8fd919
test(kernel): strengthen producer and audit proof controls
cemililik Oct 12, 2026
75fc79b
docs(roadmap): record external producer proof review
cemililik Oct 12, 2026
c7dae0c
fix(kernel): distinguish frame refusal from indeterminate commit
cemililik Oct 12, 2026
3f4c121
fix(kernel): bound shared execution proofs and reconcile review records
cemililik Oct 12, 2026
9b2fcf6
fix(web): authenticate sanitized browser proof failures
cemililik Oct 12, 2026
b561c8f
docs(roadmap): record verified PR29 remediation and reviews
cemililik Oct 12, 2026
96e6f4d
fix(kernel): poison the unit after a failed outbox insert
cemililik Oct 12, 2026
8a97cd2
docs(roadmap): record outbox failure and ownership verification
cemililik Oct 12, 2026
b1f6df3
docs(roadmap): close P02b-1 after PR 29 merge
cemililik Oct 12, 2026
cc5de26
docs(decisions): propose P02b-2 delivery and recovery
cemililik Oct 12, 2026
4b010ef
docs(decisions): tighten P02b-2 recovery and audit contracts
cemililik Oct 12, 2026
192810b
docs(decisions): accept P02b-2 durable delivery contracts
cemililik Oct 12, 2026
d9bc77b
feat(kernel): add confined outbox dispatch foundation
cemililik Oct 12, 2026
6a13455
fix(docs): reconcile remaining shared inbox guidance
cemililik Oct 12, 2026
b6fc714
fix(kernel): refuse open generic active outbox handlers
cemililik Oct 12, 2026
c6ceaa9
docs(roadmap): close P02b-2 foundation review rounds
cemililik Oct 12, 2026
7976113
feat(kernel): add fenced outbox transitions and terminal audit
cemililik Oct 12, 2026
ffce05f
fix(kernel): validate persisted outbox routing fields
cemililik Oct 12, 2026
d4c06a4
docs(roadmap): close P02b-2 transition review rounds
cemililik Oct 12, 2026
756c852
feat(kernel): host bounded outbox dispatch and observation
cemililik Oct 12, 2026
da637e3
fix(dev): confine dispatcher credentials to the API host
cemililik Oct 12, 2026
02540d0
fix(kernel): clarify dispatcher boot refusal and close step 3
cemililik Oct 12, 2026
d2531f2
test(kernel): enforce confined outbox dispatch boundaries
cemililik Oct 12, 2026
2f8693e
fix(kernel): close dispatcher census mutation gaps
cemililik Oct 12, 2026
606362b
fix(kernel): pin dispatcher authority and observation bindings
cemililik Oct 12, 2026
7bf14a0
docs(roadmap): close P02b-2 implementation and review rounds
cemililik Oct 12, 2026
a80e06d
docs(roadmap): link P02b-2 PR and live verification ownership
cemililik Oct 12, 2026
a851b7c
fix(dev): reject paired missing demo role passwords
cemililik Oct 12, 2026
4408970
docs(roadmap): record demo password correction reviews
cemililik Oct 12, 2026
13cd632
fix(kernel): align recovery selection and preserve commit faults
cemililik Oct 12, 2026
41ac292
docs(kernel): reconcile integration contract delivery remarks
cemililik Oct 12, 2026
3531a2e
docs(roadmap): record external correction reviews and verification
cemililik Oct 12, 2026
a5b1e72
fix(kernel): close dispatcher membership and credential census gaps
cemililik Oct 13, 2026
3620b42
docs(roadmap): record dispatcher guard follow-up verification
cemililik Oct 13, 2026
3baf3a2
fix(kernel): respect the outbox snapshot refresh interval
cemililik Oct 13, 2026
4b4e3e4
docs(roadmap): record snapshot cadence correction reviews
cemililik Oct 13, 2026
d0b67e5
chore: sync development after PR 30 merge
cemililik Oct 13, 2026
6520042
docs(roadmap): close P02b-2 after PR 30 merge
cemililik Oct 13, 2026
6a214e8
docs(roadmap): prepare the P02b-3 decision package
cemililik Oct 13, 2026
63363ac
docs(decisions): accept the P02b-3 implementation package
cemililik Oct 13, 2026
6b1efef
feat(kernel): add shared delivery and inbox storage
cemililik Oct 13, 2026
ad57a1b
style(kernel): remove blank SQL lines with trailing whitespace
cemililik Oct 13, 2026
fe6f9c7
test(kernel): prove ledger organization scope boundaries
cemililik Oct 13, 2026
80a3261
docs(roadmap): close both P02b-3 storage review rounds
cemililik Oct 13, 2026
78992fc
feat(kernel): accept integration events durably per subscription
cemililik Oct 13, 2026
bce0bc7
docs(standards): align the durable acceptance proof reference
cemililik Oct 13, 2026
81ab105
docs(roadmap): close both durable acceptance review rounds
cemililik Oct 13, 2026
77890ea
feat(kernel): own subscriber business completion and commit admission
cemililik Oct 13, 2026
5a8b85d
docs(roadmap): record subscriber owner review and regression evidence
cemililik Oct 13, 2026
3411424
docs(roadmap): close both subscriber business owner reviews
cemililik Oct 13, 2026
262d4b2
feat(kernel): schedule independent subscriber delivery and replay
cemililik Oct 13, 2026
14d5f93
fix(kernel): isolate acceptance from subscriber execution lanes
cemililik Oct 13, 2026
94d7d6b
docs(roadmap): close subscriber scheduler review rounds
cemililik Oct 13, 2026
d53ae27
feat(customization): initialize preserved defaults and hand off seed
cemililik Oct 13, 2026
0302d8a
docs(architecture): align current default delivery guidance
cemililik Oct 13, 2026
ac7bbee
docs(roadmap): close default delivery and seed review rounds
cemililik Oct 13, 2026
82623d8
test(kernel): enforce production subscription delivery boundaries
cemililik Oct 13, 2026
84995d3
fix(kernel): close typed delivery enforcement escapes
cemililik Oct 13, 2026
a8e9c9d
docs(roadmap): close all subscriber delivery review rounds
cemililik Oct 13, 2026
683ea53
docs(roadmap): link subscriber delivery PR handoff
cemililik Oct 13, 2026
586ed75
fix(kernel): close subscriber delivery review gaps
cemililik Oct 15, 2026
a393a4b
docs: align delivery review guidance with accepted ownership
cemililik Oct 15, 2026
d8c766f
docs(standards): wrap tenant announcement guidance
cemililik Oct 15, 2026
b681edb
fix(standards): count both implemented isolation rules
cemililik Oct 15, 2026
92e296e
fix(kernel): preserve delivery progress and compatible acceptance
cemililik Oct 15, 2026
a95ae2e
docs(roadmap): record delivery remediation review round one
cemililik Oct 15, 2026
bd51a97
fix(kernel): preserve producer progress during terminal audit faults
cemililik Oct 15, 2026
0fa7dc8
docs(roadmap): close verified delivery and producer review fixes
cemililik Oct 15, 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
38 changes: 23 additions & 15 deletions .claude/skills/add-integration-event/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,11 @@ production censuses and catalogue enforcement; the
owns final verification and review status.
Accepted [ADR-0046](../../../docs/decisions/0046-durable-event-delivery-and-recovery.md)
owns dispatcher recovery, subscription readiness and the shared inbox contract.
P02b-2 implements producer dispatch; P02b-3 still owns durable acceptance,
independent execution, canonical inbox/ledger DDL and real subscriptions.
P02b-2 implements producer dispatch; P02b-3 Steps 1–4 implement durable
acceptance, shared inbox/ledger storage, independent execution and scheduling.
Step 5 supplies the real default subscriptions and semantic Seeder handoff; the
[delivery record](../../../docs/roadmap/phase-02b-events-auth.md#p02b-3-step-5--useful-defaults-and-semantic-seed-handoff-2026-10-13)
owns validation/review status.

## When to use

Expand Down Expand Up @@ -193,7 +196,7 @@ fails the build.

### Step 4: Consumer — transport-owned inbox boundary

**Accepted target, pending P02b-3 implementation.** The transport owns the shared
**P02b-3 owner implemented.** The transport owns the shared
`inbox_messages` guard; business handlers do not inject or call `IInboxGuard`.
Deduplication is `(tenant_id, subscription_id, event_id)`, with a stable versioned
subscription ID independent of handler type names. The separate delivery ledger
Expand Down Expand Up @@ -221,9 +224,9 @@ outbox intent; database rollback alone cannot undo them.

The first real flow has two independent Customization subscriptions:
`customization.initialize-content-type-default.v1` installs `card@1` content type;
`customization.initialize-taxonomy-default.v1` installs `plain@1` taxonomy. Both
remain Pending until P02b-3 supplies durable acceptance, create-only preservation,
per-effect MUST audit and the semantic key/version Seeder handoff. Neither may
`customization.initialize-taxonomy-default.v1` installs `plain@1` taxonomy.
P02b-3 activates both together with create-only preservation, classified nested
initialization commands and the semantic key/version Seeder handoff. Neither may
suppress its sibling or overwrite authored, retired or deleted definitions.

### Step 5: Subscription registration
Expand All @@ -239,17 +242,21 @@ builder.AddLearnStackCrossCuttingFoundation(
typeof(LearnStack.Modules.Customization.Application.AssemblyMarker).Assembly);
```

Today `InProcessEventBus` resolves the concrete
`IIntegrationEventHandler<T>` directly from DI in that subscription's async
scope. MediatR is not involved. There is no shipped
The independent `DeliveryExecutor` resolves the concrete
`IIntegrationEventHandler<T>` from its owned async scope after validation, inbox
claim and classification. A coordinating handler may send one classified nested
command through MediatR. Check that command's `Result`; a refusal must fail the
consumer with a bounded exception rather than silently complete its inbox. The
two default coordinators are explicitly Off; their commands own the MUST intents.
There is no shipped
`AddDaprSubscription<T>` helper; do not invent one. P02b-2's construction-free
manifest implements stable subscription IDs, compatible
type aliases and required Pending/Active readiness. Pending holds the producer row
before acquisition or payload validation. Only explicit intentional absence may
acknowledge a known type without publication. P02b-3 makes Active publication mean
durable acceptance of all matching deliveries, independently of business handling.
Do not invent a registration API before its implementation ships. Phase 11 must
preserve these contracts when it adds Dapr.
Use the shipped `OutboxSubscriptionManifest` and handler-registry registration
in the API composition root. Phase 11 must preserve these contracts when it adds Dapr.

### Step 6: Tests

Expand All @@ -273,8 +280,8 @@ byte boundaries, SQL NULL metadata and terminal reuse. For delivered flows:
- `dotnet build` and `dotnet test` pass.
- `LearnStack.Tests.Architecture` is green — `Integration_Event_TopicNames_FollowConvention`
and `Integration_Events_Inherit_From_IntegrationEventBase` run today.
`Integration_Event_Handlers_Use_InboxGuard` remains Registered for P02b-3's
transport-owned consumer delivery. Check
`Integration_Event_Handlers_Use_InboxGuard` is Implemented with P02b-3's
nonempty all-layer production census and real transport-owned delivery proofs. Check
[the catalogue](../../../docs/standards/21-architecture-tests-catalogue.md) for their
status rather than assuming a net is under you.
- P02b-2 proves producer recovery and terminal audit independently of Pending
Expand All @@ -288,8 +295,9 @@ byte boundaries, SQL NULL metadata and terminal reuse. For delivered flows:
that owns the aggregate. The moment another module needs to react, it must be an
integration event.
- **Moving the inbox guard into a handler.** The transport must claim before
construction. The rule remains Registered until P02b-3; its name alone proves
no enforcement. Redelivery must preserve independent sibling effects.
construction. P02b-3 enforces typed invocation boundaries and actual transaction
atomicity; extend both controls for a new subscription. Redelivery must preserve
independent sibling effects.
- **Writing the outbox row in a separate transaction.** Use `IOutbox.EnqueueAsync`
through the enrolled ambient `IUnitOfWork`; never `new TransactionScope`.
- **Supplying a second topic at enqueue or subscription time.** The concrete
Expand Down
13 changes: 8 additions & 5 deletions .claude/skills/add-integration-test/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ architecture test) plus any other invariant the change touches. See
> what almost every test wants: **every** migration chain applied — through
> `MigrationChains.ApplyAllAsync`, never a list a fixture keeps itself — and every
> table seeded for two tenants, with a second organization under tenant A. There
> are five chains and 21 data tables (26 including migration histories). Discover
> are five chains and 23 data tables (28 including migration histories). Discover
> current chains and history names through
> [MigrationChains](../../../backend/tests/LearnStack.Tests.Integration/Database/MigrationChains.cs);
> do not copy that inventory into a fixture. Share the schema with
Expand Down Expand Up @@ -241,8 +241,10 @@ those shipped examples for Education rather than inventing an authenticated rout
> `IOutbox`; follow `OutboxProducerTests` and `TenantCreatedProducerTests` for
> shipped producer fixtures. P02b-2 Step 3 implements the API-host dispatcher;
> both independent review rounds are complete, and `OutboxProcessorTests` owns its
> runtime proofs. Real subscriptions remain Pending; consumer/inbox assertions
> belong to P02b-3. `audit_log` shipped in Packet 9: for a real audit assertion,
> runtime proofs. P02b-3 Steps 1–5 implement shared inbox, per-subscription
> execution and both Active production defaults. Follow `DeliveryExecutionTests`
> for ownership/atomicity and `CustomizationDefaultDeliveryTests` for the actual
> API-worker/Seeder flow. `audit_log` shipped in Packet 9: for a real audit assertion,
> follow `AuditWorkflowTests`, which drives commands through
> the seeder's composition root on `SchemaFixture` as `learnstack_app` and reads the
> persisted columns. The durable `IIdempotencyStore` ships on the trigger
Expand Down Expand Up @@ -272,8 +274,9 @@ public async Task CreateEnrollment_publishes_EnrollmentCreated_via_outbox()
}
```

The future P02b-3 consumer-side assertion below is illustrative; the shipped
worker has no `_fx.RunOutboxProcessorOnceAsync()` fixture API:
The consumer-side assertion below remains illustrative; the shipped P02b-3
fixtures above exercise actual workers and have no
`_fx.RunOutboxProcessorOnceAsync()` fixture API:

```csharp
await _fx.RunOutboxProcessorOnceAsync();
Expand Down
9 changes: 6 additions & 3 deletions .claude/skills/code-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -295,11 +295,14 @@ Author intent: <one-paragraph restatement>
causation/causal actor; transaction announcement supplies tenant/organization.
No caller header/snapshot establishes authority. Common non-MediatR audit
entry refuses unregistered direct mutation and reconciles only at the outer
frame; producer receipts are distinct. P02b-3 delivery/inbox remains open.
frame; producer receipts are distinct. P02b-3 Steps 1–6 deliver durable
acceptance, transport-owned inbox/business completion and useful defaults;
check the packet record for current enforcement and review evidence.
- **Real flow and evidence.** Completed provisioning emits
`TenantCreatedIntegrationEventV1`; P02b-1 claims pending rows only. P02b-3 owns
`TenantCreatedIntegrationEventV1`; P02b-1 claims pending rows only. P02b-3 delivers
separate create-only `card@1`/`plain@1` subscriptions and Seeder identity
handoff after G1; no settings invalidation or Audit mirror is the sample.
handoff under Accepted G1; both subscriptions are Active. No settings
invalidation or Audit mirror is the sample.
Read current producer/consumer statuses in the catalogue; require production
censuses and planted offenders rather than zero-subject passes.
- **No direct write to `audit_log` / `outbox_messages` /
Expand Down
23 changes: 18 additions & 5 deletions .claude/skills/seed-tenant/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@ description: >
The [P02d-2 accepted package](../../../docs/roadmap/phase-02d-walking-skeleton.md#p02d-2-decision-package-2026-10-02)
records the decisions. Step 4 delivers the complete inventory and contextual
verification; both implementation review rounds and final verification passed.
P02d-2 is merged, and P02d-4 supplies public API reads. Server ingress/transport
P02d-2 is merged, and P02d-4 supplies public API reads. The accepted
[P02b-3 package](../../../docs/roadmap/phase-02b-events-auth.md#p02b-3-decision-package-2026-10-13)
adds shared create-only defaults and the semantic built-in handoff; its
[Step 5 record](../../../docs/roadmap/phase-02b-events-auth.md#p02b-3-step-5--useful-defaults-and-semantic-seed-handoff-2026-10-13)
owns current validation/review status. Server ingress/transport
belongs to P02d-5; P02d-6 pages and P02d-7's shared foreground/CI demo are delivered.
Step 3 supplies the narrow browser/Lighthouse proof; its
[delivery record](../../../docs/roadmap/phase-02d-walking-skeleton.md#p02d-7-step-3--browser-and-audit-proof-2026-10-11)
Expand Down Expand Up @@ -74,7 +78,9 @@ that file. There is no `make seed-tenant`, `infra/seed/`, or seed-reset command.

### 2. Read the declaration

The existing fixed tenant, organization, host and built-in IDs are preserved.
Fixed tenant, organization, host and authored curriculum IDs are preserved.
P02b-3 discovers built-ins by semantic key/version and verifies their complete
Active shape while retaining the stored ID; new built-ins mint owner UUIDv7 IDs.
English's host remains tenant-wide; Yoga's host maps to Studio One. The exact
[accepted inventory](../../../docs/roadmap/phase-02d-walking-skeleton.md#seed-inventory-and-ownership)
and `SeedData` own the choices; this skill does not keep a second literal list.
Expand All @@ -94,7 +100,9 @@ URLs or logo are seeded. Restricted publication grants no anonymous lesson acces
and host mapping. The tenant starts Trial. Provisioning alone writes the
sanctioned Tenant/Organization pair ([ADR-0042](../../../docs/decisions/0042-tenant-provisioning-cross-aggregate-transaction.md)).
2. Enabled locales, with the declared default first.
3. Built-in and tenant-specific definitions, each registered then published.
3. The two built-ins through separate shared initialization commands; each new
root is Active at one save, generation bump and MUST audit. Tenant-authored
definitions retain separate exact-ID registration and publication.
4. Complete branding, in tenant-wide scope.
5. Draft Course/Lesson creation and each translation, followed by each selected
publication. Course and Lesson publication remain independent.
Expand All @@ -116,7 +124,11 @@ IDs; contract-local IDs cross the module boundary as Guid under ADR-0023.
- Missing acts write through the ordinary command.
- Completed acts skip before invoking a writer, so the second completed run changes
no root, timestamp, version, generation or audit row.
- Creation accepts only the declared Draft intermediate or intended final state
- Built-ins require exact Active version/shape but allow matching warm/generated
IDs. Any Draft, deprecated, deleted or successor history is preserved; a failed
demo postcondition refuses without overwrite. Initialization and registration
share the transaction-owned semantic concept lock.
- Authored creation accepts only the declared Draft intermediate or intended final state
with matching immutable data. Definition creation accepts Draft/Active, with a
separate publication act verifying Active.
- Existing translations are checked before draft-only insertion. JSON object
Expand All @@ -134,7 +146,8 @@ IDs; contract-local IDs cross the module boundary as Guid under ADR-0023.
The process entry point exits 2 for missing connection configuration, 1 for a
refused credential or run failure, and 0 for a completed run. Completed acts remain
durable; a later explicit run resumes the remaining acts. If a different revision
becomes Active between registration's pre-read and post-read, the newly committed
becomes Active between authored registration's pre-read and post-read, the newly
committed
Draft, generation increment and audit remain durable; the run refuses and requires
explicit operator reconciliation. It does not retire either revision or undo an
already committed act.
Expand Down
3 changes: 2 additions & 1 deletion .claude/skills/standards-check/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,8 @@ domain the diff doesn't touch.
endpoint carries its ADR and lands in both repositories.
- [ ] Producer INSERT uses its announced transaction. ADR-0046 dispatcher
transitions use fresh tokens and atomic terminal audit; transport-owned shared
inbox acquisition precedes handler construction (P02b-3 pending).
inbox acquisition precedes handler construction (P02b-3 Steps 2–3 delivered;
Step 5 activates both real defaults).
- [ ] Manifest readiness preserves required Pending rows. Active publication
means durable acceptance; subscriber retry/terminal/replay state is independent
of the producer budget. Check catalogue status before claiming enforcement.
Expand Down
13 changes: 7 additions & 6 deletions .claude/skills/wire-dapr-pubsub/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@ that contract. The wiring contract is in
this skill is the **mechanical** check-list. Accepted
[ADR-0046](../../../docs/decisions/0046-durable-event-delivery-and-recovery.md)
adds construction-free stable subscription identities, Pending/Active readiness
and durable acceptance. Those consumer components remain P02b-3 work; Phase 11
must preserve their contracts rather than reintroduce handler-owned deduplication.
and durable acceptance, implemented by P02b-3 with independent execution/retries
and both real default subscribers. Phase 11 must preserve these contracts rather
than reintroduce handler-owned deduplication.

## When to use

Expand Down Expand Up @@ -266,12 +267,12 @@ obligations to the adapter or infer delivery from a registered metric name.
- Current architecture tests
`Integration_Event_TopicNames_FollowConvention` and
`Modules_Do_Not_Inject_IEventBus_Directly` pass.
- When doing Phase 02b consumer work, add/keep its registered inheritance and
- When doing Phase 02b consumer work, extend its implemented inheritance and
inbox-guard rules. When doing Phase 11 adapter work, add/keep the Dapr binding
and direct-provider boundary rules owned by that phase.
- The current baseline has no durable inbox. P02b-3 must prove acceptance plus
atomic inbox/business completion, concurrent duplicates, independent sibling
retries, sticky timeout and uncertain-COMMIT recovery on the real delivery path.
- P02b-3 implements durable acceptance and the shared inbox. Extend the real
delivery proofs for atomic inbox/business completion, concurrent duplicates,
independent sibling retries, sticky timeout and uncertain-COMMIT recovery.
- When Phase 11's adapter exists, its Dapr/Testcontainers binding test and
transport metrics pass as additional validation.

Expand Down
Loading
Loading