Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
874 commits
Select commit Hold shift + click to select a range
b048412
docs(roadmap): record second ordinary window proposal review
cemililik Oct 26, 2026
d5ebab8
docs(decisions): clarify ordinary window review boundaries
cemililik Oct 26, 2026
9ba876f
docs(roadmap): record revised window proposal first review
cemililik Oct 26, 2026
c274fa6
docs(roadmap): record revised window proposal second review
cemililik Oct 26, 2026
2a1917c
docs(decisions): accept ordinary-only CI job window
cemililik Oct 26, 2026
7dc3f8b
docs(roadmap): record first CI window acceptance review
cemililik Oct 26, 2026
1d609d3
docs(roadmap): close CI window acceptance reviews
cemililik Oct 26, 2026
c2695f2
fix(ci): bind ordinary windows to verified producer identity
cemililik Oct 26, 2026
6bb91ed
docs(roadmap): record first ordinary budget code review
cemililik Oct 26, 2026
ea114d2
docs(roadmap): close ordinary budget reviews for qualification
cemililik Oct 26, 2026
0db4b42
docs(roadmap): record complete ordinary window hosted proof
cemililik Oct 26, 2026
146f743
docs(roadmap): record first hosted evidence review
cemililik Oct 26, 2026
468e9c6
docs(roadmap): distinguish hosted fixture subset evidence
cemililik Oct 26, 2026
58e5a1d
docs(roadmap): close ordinary CI window implementation
cemililik Oct 26, 2026
194992f
chore: sync merged identity foundation from main
cemililik Oct 27, 2026
daf03a4
docs(roadmap): close merged identity foundation packet
cemililik Oct 27, 2026
0389def
docs(decisions): propose live authorization and evidence contracts
cemililik Oct 27, 2026
7159c98
docs(decisions): clarify scoped delegation and evidence ownership
cemililik Oct 27, 2026
9f0edb6
docs: reconcile permission guidance with accepted foundation
cemililik Oct 27, 2026
b81ed06
docs(roadmap): record live authorization decision readiness
cemililik Oct 27, 2026
ead0a22
docs(decisions): close nested authorization and denial design gaps
cemililik Oct 27, 2026
55662b5
docs(roadmap): record revised authorization proposal review
cemililik Oct 27, 2026
725d255
docs(roadmap): close revised authorization decision review
cemililik Oct 27, 2026
e8266bb
docs: accept live authorization and trusted evidence contracts
cemililik Oct 27, 2026
c700084
docs: reconcile authorization setup and workflow guidance
cemililik Oct 27, 2026
5ee659b
docs(roadmap): close authorization acceptance reviews
cemililik Oct 27, 2026
8ec7ee1
feat(identity): add confined live authorization readers
cemililik Oct 27, 2026
7a7bb30
fix(identity): close confined authorization review findings
cemililik Oct 27, 2026
cf9454e
docs(roadmap): close confined authorization reader reviews
cemililik Oct 27, 2026
a15716d
feat(identity): enforce staged scoped operation policies
cemililik Oct 27, 2026
489746d
fix(identity): preserve sensitive read audit failure semantics
cemililik Oct 27, 2026
c1a61dd
docs(roadmap): close scoped execution reviews
cemililik Oct 27, 2026
6780597
feat(identity): retain trusted authorization evidence
cemililik Oct 27, 2026
16667e7
fix(identity): freeze refusals before transaction cleanup
cemililik Oct 27, 2026
56f9554
fix(identity): preserve admitted refusal observations
cemililik Oct 27, 2026
02bce2a
feat(identity): activate live scoped HTTP authorization
cemililik Oct 27, 2026
effc9c5
fix(identity): qualify live database lanes at startup
cemililik Oct 27, 2026
070aa67
docs(roadmap): close live authorization activation reviews
cemililik Oct 27, 2026
2e00aba
test(identity): complete live authorization proof populations
cemililik Oct 27, 2026
309e6d2
fix(identity): preserve explicit admission and completed evidence
cemililik Oct 27, 2026
f3b8d76
fix(identity): preserve public refusals and qualify fixture startup
cemililik Oct 27, 2026
696671b
ci(testing): freeze reviewed live authorization timing observations
cemililik Oct 27, 2026
84abac5
fix(kernel): close failed read owners and retain start diagnostics
cemililik Oct 27, 2026
f34849d
test(kernel): rebalance architecture from hosted timing evidence
cemililik Oct 27, 2026
72d76f2
style(kernel): retain stable ordering in the timing plan
cemililik Oct 27, 2026
6d1a43b
perf(kernel): reuse scoped census instruction indexes
cemililik Oct 27, 2026
c3adebe
docs(roadmap): record census performance review and controls
cemililik Oct 27, 2026
33142a8
docs(roadmap): freeze reviewed census performance correction
cemililik Oct 27, 2026
23262e9
refactor(kernel): separate independent job authority proof families
cemililik Oct 27, 2026
3ccdfc4
test(kernel): bind decomposed proof weights to clean receipts
cemililik Oct 27, 2026
05a5463
docs(roadmap): freeze reviewed whole-authority proof population
cemililik Oct 27, 2026
c1f1d4c
perf(kernel): bound repeated resolution subtype expansion
cemililik Oct 27, 2026
ad7cb5e
docs(roadmap): record resolution correction review and discovery
cemililik Oct 27, 2026
8241433
docs(roadmap): freeze reviewed resolution correction source
cemililik Oct 27, 2026
09ac7c8
fix(kernel): retain bounded provider startup diagnostics
cemililik Oct 28, 2026
01d8234
docs(roadmap): record startup diagnostic review evidence
cemililik Oct 28, 2026
9385c9e
docs(roadmap): freeze reviewed startup diagnostic source
cemililik Oct 28, 2026
7dbf68f
fix(web): wait for complete owned browser port publication
cemililik Oct 28, 2026
8a43eb9
docs(roadmap): record browser readiness review and clean replay
cemililik Oct 28, 2026
6ea5e67
fix(kernel): pace recovery settlement after proven renewals
cemililik Oct 28, 2026
16614b3
docs(roadmap): record recovery scheduling lifetime review
cemililik Oct 28, 2026
07a0431
docs(roadmap): freeze reviewed browser and recovery corrections
cemililik Oct 28, 2026
fb7a892
test(docs): admit the zero-adopted standard census
cemililik Oct 28, 2026
bf79404
docs(roadmap): record the zero census first review
cemililik Oct 28, 2026
c39ab61
docs(roadmap): freeze the reviewed final corpus source
cemililik Oct 28, 2026
6c6747e
docs(identity): close qualified authorization delivery carriers
cemililik Oct 28, 2026
c37c3df
docs(roadmap): record final authorization handoff reviews
cemililik Oct 28, 2026
74254c8
fix(tooling): reject incomplete auxiliary sources before setup
cemililik Oct 28, 2026
39c98e4
docs(roadmap): record PR 39 correction validation
cemililik Oct 28, 2026
6cf8c71
test(tooling): complete isolated API launcher dependencies
cemililik Oct 28, 2026
6ed0f12
test(identity): acknowledge the exact role-catalog blocker
cemililik Oct 28, 2026
ca82e24
docs(roadmap): record cancellation control proof and review
cemililik Oct 28, 2026
4406c1d
docs(roadmap): close cancellation control review rounds
cemililik Oct 28, 2026
2040065
chore(repo): synchronize merged P03-2 history
cemililik Oct 28, 2026
575d8e3
docs(roadmap): close merged P03-2 and record the next packet
cemililik Oct 28, 2026
53a8f06
docs(decisions): propose bounded P03-3 entry and administration
cemililik Oct 28, 2026
076d8de
docs(decisions): close P03-3 first proposal review findings
cemililik Oct 28, 2026
c124f36
docs(decisions): bound retained P03-3 page snapshots
cemililik Oct 28, 2026
4f13347
docs(roadmap): record reviewed P03-3 approval package
cemililik Oct 28, 2026
d267c8d
docs(decisions): accept reviewed P03-3 contracts
cemililik Oct 28, 2026
d844143
docs(decisions): close P03-3 acceptance review findings
cemililik Oct 28, 2026
7a94d6b
docs(standards): close P03-3 acceptance second review
cemililik Oct 28, 2026
10e309e
feat(identity): add bounded self entry and native scope admission
cemililik Oct 28, 2026
476404c
fix(identity): tighten self entry validation and policy proof
cemililik Oct 28, 2026
23869e9
fix(identity): publish self context pagination bounds
cemililik Oct 28, 2026
a478bff
docs(decisions): propose fixed seed prerequisite read scope
cemililik Oct 28, 2026
1f3e738
docs(roadmap): record seed read scope proposal reviews
cemililik Oct 28, 2026
825ae29
docs(roadmap): record seed preservation control results
cemililik Oct 28, 2026
421aa7d
docs(decisions): accept fixed seed prerequisite authority
cemililik Oct 28, 2026
4080131
docs(decisions): propose qualified seed origin completion
cemililik Oct 28, 2026
34319ff
docs(roadmap): record fixed seed regression evidence
cemililik Oct 28, 2026
33ec1d9
docs(decisions): accept separate fixed origin completion
cemililik Oct 29, 2026
467601c
feat(identity): enforce finite releases and fenced seed completion
cemililik Oct 29, 2026
10eaa36
fix(identity): preserve seed creation frontiers
cemililik Oct 29, 2026
57d469d
test(identity): close finite seed qualification
cemililik Oct 29, 2026
4043328
feat(identity): implement contextual membership administration
cemililik Oct 29, 2026
0e29a0b
fix(kernel): map scoped sensitive read commit failures
cemililik Oct 29, 2026
3cca247
docs(roadmap): close P03-3 membership administration step
cemililik Oct 29, 2026
b1a7efe
feat(tenancy): add bounded organization administration
cemililik Oct 29, 2026
a46e51d
fix(tenancy): fence retained incomplete default updates
cemililik Oct 29, 2026
e343be5
fix(tenancy): classify only owned organization conflicts
cemililik Oct 29, 2026
c33381f
feat(identity): persist protected outcomes and reauthorize replay
cemililik Oct 29, 2026
3ad5136
docs(identity): align live receipt permission bindings
cemililik Oct 29, 2026
cc79cca
docs(roadmap): close durable protected replay review rounds
cemililik Oct 29, 2026
d8d63ca
feat(identity): expose bounded administration HTTP and SDK
cemililik Oct 29, 2026
7615c80
fix(identity): keep own navigation out of diagnostic strings
cemililik Oct 29, 2026
75f9745
fix(identity): enforce replay media and navigation wire bounds
cemililik Oct 29, 2026
ddfa54b
feat(web): own native entry and scoped administration calls
cemililik Oct 29, 2026
492baf7
fix(web): preserve mutation recovery and private request state
cemililik Oct 29, 2026
83ce78b
fix(web): conceal identity-bearing entry continuations
cemililik Oct 29, 2026
27bb72d
feat(web): prepare scoped administration pages under native ownership
cemililik Oct 29, 2026
9c56433
fix(web): close snapshot and browser proof review gaps
cemililik Oct 29, 2026
c336353
fix(web): settle closed sockets and preserve profile intent
cemililik Oct 30, 2026
5ac767f
fix(kernel): qualify administration and seed boundaries
cemililik Oct 30, 2026
db2a1e1
fix(kernel): close reviewed caller and test-owner gaps
cemililik Oct 30, 2026
3c063bf
fix(kernel): follow concrete virtual helper slots
cemililik Oct 30, 2026
e7deaf2
fix(kernel): bound CI traversal and retain failure diagnostics
cemililik Oct 30, 2026
77f62f1
fix(kernel): complete fixture cleanup and CI qualification probes
cemililik Oct 31, 2026
f0de02c
fix(kernel): isolate mutation proofs and join fixture shutdown
cemililik Oct 31, 2026
4417211
fix(web): isolate concurrent native protocol proofs
cemililik Oct 31, 2026
06c09dd
docs(decisions): propose current-source CI execution windows
cemililik Oct 31, 2026
8cc4c61
docs(roadmap): record CI window proposal reviews
cemililik Oct 31, 2026
7b5a9f6
fix(kernel): preserve native proof cleanup and bounded diagnostics
cemililik Oct 31, 2026
cb489e0
docs(roadmap): close native follow-up review rounds
cemililik Oct 31, 2026
35f1ca0
docs(decisions): accept current-source CI execution windows
cemililik Oct 31, 2026
1d39fbc
docs(decisions): keep accepted ADR rows in one table
cemililik Oct 31, 2026
c6b926d
docs(roadmap): close CI window acceptance reviews
cemililik Oct 31, 2026
97c07eb
fix(kernel): bind CI windows to verified execution modes
cemililik Oct 31, 2026
c4c0d83
docs(roadmap): record CI window enforcement delivery
cemililik Oct 31, 2026
820d871
test(web): isolate diagnostics and watch owned child groups
cemililik Oct 31, 2026
2499f1f
docs(roadmap): clarify the live-watcher proof boundary
cemililik Oct 31, 2026
7d7f20d
docs(roadmap): close frontend qualification follow-up reviews
cemililik Oct 31, 2026
c98604d
fix(auth): settle native end after premature TLS close
cemililik Nov 1, 2026
a8eeda4
test(auth): bind generated proof imports to reviewed source
cemililik Nov 1, 2026
e718187
test(auth): bind proof instrumenter and normalize checkout lines
cemililik Nov 1, 2026
e0b1880
test(auth): make checkout conversion controls idempotent
cemililik Nov 1, 2026
eb1c992
test(jobs): observe actual native business task publication
cemililik Nov 1, 2026
bc477fe
test(jobs): bound publication-regression cleanup observations
cemililik Nov 1, 2026
d3b6981
docs(decisions): propose owned Next response cleanup
cemililik Nov 1, 2026
d0adfa1
docs(decisions): clarify Next cleanup error and wire boundaries
cemililik Nov 1, 2026
590ab71
test(jobs): preserve primary errors through fixture disposal
cemililik Nov 1, 2026
66fa41d
docs: close task reviews and refine Next runtime proposal
cemililik Nov 1, 2026
655fa66
docs(decisions): specify cancellation before stream cleanup joins
cemililik Nov 1, 2026
08c922a
docs(roadmap): record Next cleanup proposal review readiness
cemililik Nov 1, 2026
d2794d1
docs(decisions): accept qualified Next cleanup contract
cemililik Nov 1, 2026
676f5b2
docs(roadmap): align accepted cleanup status after review
cemililik Nov 1, 2026
4852f73
docs(roadmap): close accepted cleanup contract reviews
cemililik Nov 1, 2026
b55efac
fix(frontend): own qualified Next response cleanup
cemililik Nov 1, 2026
b7f088a
docs(decisions): propose owned frontend runtime process families
cemililik Nov 1, 2026
b90f71d
docs(decisions): refine native runtime ownership boundaries
cemililik Nov 1, 2026
b6ecc9b
docs(decisions): complete runtime family proposal reviews
cemililik Nov 1, 2026
285734e
fix(web): retain compiler families and qualify runtime inputs
cemililik Nov 1, 2026
d090922
fix(web): bind selected routes and imported source helpers
cemililik Nov 1, 2026
859d540
fix(web): refuse reserved source before producer mutation
cemililik Nov 1, 2026
8baa621
docs(roadmap): close independent framework correction reviews
cemililik Nov 1, 2026
f317da9
docs(decisions): accept owned native runtime process families
cemililik Nov 1, 2026
087f4c5
docs(standards): clarify runtime observation wording
cemililik Nov 1, 2026
a608948
docs(web): preserve the existing admission proof protocol
cemililik Nov 1, 2026
31610c3
docs(decisions): disclose all runtime correction carriers
cemililik Nov 1, 2026
c96735a
docs(roadmap): close runtime family decision reviews
cemililik Nov 1, 2026
aee0a22
feat(frontend): own native runtime process families
cemililik Nov 1, 2026
5dbd3bc
fix(frontend): retain startup failure and proof correlation
cemililik Nov 1, 2026
0cd5f15
fix(web): correlate fetch and producer proof generations
cemililik Nov 1, 2026
13570dc
fix(web): join response cleanup after transport close
cemililik Nov 1, 2026
645caa2
fix(web): retain failed shutdown and capture proof output
cemililik Nov 2, 2026
5e717ac
fix(web): complete owned setup and group observations
cemililik Nov 2, 2026
a8f1fd8
test(ci): refresh reviewed whole-selector estimates
cemililik Nov 2, 2026
82761da
fix(web): qualify initialized router failure ownership
cemililik Nov 2, 2026
d6281d7
docs(roadmap): close frontend ownership source reviews
cemililik Nov 2, 2026
a6ae5a0
docs(decisions): propose bounded public demo CI window
cemililik Nov 2, 2026
7742784
docs(decisions): complete public demo proposal carriers
cemililik Nov 2, 2026
86d4938
fix(ci): keep pnpm setup shims inside build admission
cemililik Nov 2, 2026
16f5d19
docs(roadmap): record transport and proposal review bounds
cemililik Nov 2, 2026
18f0043
docs(roadmap): close pnpm transport implementation reviews
cemililik Nov 2, 2026
aeeaaa0
docs(decisions): accept reviewed public-demo CI window
cemililik Nov 2, 2026
0dc0f7e
docs(decisions): keep the accepted CI window in its index table
cemililik Nov 2, 2026
fb41459
docs(roadmap): close public-demo window acceptance reviews
cemililik Nov 2, 2026
bcd716d
fix(ci): apply the accepted public-demo execution window
cemililik Nov 2, 2026
e1bc18a
docs(roadmap): record public-demo window implementation R1
cemililik Nov 2, 2026
a5359de
docs(roadmap): close public-demo window source reviews
cemililik Nov 2, 2026
71d5e30
fix(web): preserve cold output and producer cancellation ownership
cemililik Nov 2, 2026
8ffe6fc
test(web): prove producer signal forwarding before dispatch
cemililik Nov 2, 2026
28ff416
docs(roadmap): close corrective source reviews for qualification
cemililik Nov 2, 2026
aaa86cd
fix(web): prevent unowned cache output during cold lint
cemililik Nov 2, 2026
bf30446
docs(roadmap): close cold lint correction R1 reviews
cemililik Nov 2, 2026
667c00b
docs(roadmap): close cold lint correction R2 reviews
cemililik Nov 2, 2026
8300009
test(web): retain finite framework failure observations
cemililik Nov 2, 2026
00ef336
docs(roadmap): close finite diagnostic first review round
cemililik Nov 2, 2026
c9b97aa
docs(roadmap): close finite diagnostic source reviews
cemililik Nov 2, 2026
c592948
fix(tests): preserve readiness and fresh capacity scans
cemililik Nov 2, 2026
ff8901a
docs(roadmap): close c9b correction first review round
cemililik Nov 2, 2026
363b791
docs(roadmap): close c9b review and clarify format evidence
cemililik Nov 2, 2026
7eb05c1
test(frontend): refine bounded failure observations
cemililik Nov 2, 2026
6d033e1
test(frontend): avoid redundant copied-source parsing
cemililik Nov 2, 2026
c737566
docs(roadmap): close diagnostic correction reviews
cemililik Nov 2, 2026
3bae0b6
fix(web): correct provenance and bound bodyless diagnostics
cemililik Nov 2, 2026
f2239b6
docs(roadmap): close platform and bodyless correction R1
cemililik Nov 2, 2026
8c2c2e0
docs(roadmap): close platform and bodyless correction R2
cemililik Nov 2, 2026
773daf5
fix(ci): classify finite VM qualification failures
cemililik Nov 2, 2026
89e0c72
docs(roadmap): close finite VM diagnostic review round one
cemililik Nov 2, 2026
9257fa2
docs(roadmap): close finite VM diagnostic reviews
cemililik Nov 2, 2026
672d62b
perf(frontend): reduce repeated proof preparation work
cemililik Nov 3, 2026
e1bb9f6
docs(roadmap): close matrix correction R1 and focus delivery
cemililik Nov 3, 2026
fcbfa35
docs(roadmap): close corrective reviews and hand off final CI
cemililik Nov 3, 2026
e85ea84
test(frontend): bound concurrent file workers to three
cemililik Nov 3, 2026
9480a48
docs(roadmap): close bounded worker reviews for final CI
cemililik Nov 3, 2026
2a2b406
docs(decisions): propose a bounded native web test window
cemililik Nov 3, 2026
31d552a
docs(decisions): accept the bounded native web test window
cemililik Nov 3, 2026
476bafc
test(web): apply the bounded native package window
cemililik Nov 3, 2026
7155579
docs(roadmap): close native web window reviews and local checks
cemililik Nov 3, 2026
b156483
test(web): sequence native groups and join deadline cleanup
cemililik Nov 3, 2026
c32fe39
docs(roadmap): close native grouping reviews and local tests
cemililik Nov 3, 2026
8249d27
docs(decisions): propose complete native proof test windows
cemililik Nov 3, 2026
5696e00
docs(decisions): accept reviewed native proof execution windows
cemililik Nov 3, 2026
4fdcf08
test(frontend): align native proof orchestration windows
cemililik Nov 3, 2026
ddbb577
docs(decisions): link native proof window successor
cemililik Nov 3, 2026
cfa58aa
docs(roadmap): record native proof window validation
cemililik Nov 3, 2026
5f68c44
test(frontend): retain healthy bodyless proof peers
cemililik Nov 3, 2026
8f37256
docs(decisions): propose bounded frontend completion windows
cemililik Nov 3, 2026
69c3aef
docs(roadmap): correct cancelled hosted job count
cemililik Nov 3, 2026
375150e
docs(decisions): clarify frontend completion window cost
cemililik Nov 3, 2026
b19d9ab
docs(decisions): accept reviewed frontend completion windows
cemililik Nov 3, 2026
ce53fde
test(frontend): apply reviewed completion timer settings
cemililik Nov 3, 2026
43da50f
docs(roadmap): record frontend completion validation
cemililik Nov 3, 2026
419b703
test(frontend): publish provenance runtime markers atomically
cemililik Nov 3, 2026
c944b45
docs(roadmap): close provenance publication verification
cemililik Nov 3, 2026
22a0555
docs(decisions): propose provenance control timer allowance
cemililik Nov 3, 2026
a68114f
docs(decisions): clarify parallel PR qualification reuse
cemililik Nov 3, 2026
e1b0d27
docs(roadmap): record provenance timer proposal review
cemililik Nov 3, 2026
e830a1e
docs(decisions): accept reviewed provenance timer settings
cemililik Nov 3, 2026
100fddb
test(web): apply approved provenance timer allowance
cemililik Nov 3, 2026
9135e6b
docs(roadmap): hand off P03-3 to draft PR review
cemililik Nov 3, 2026
4347f81
fix(ci): distinguish native scan refusal classes
cemililik Nov 3, 2026
01ebf0e
docs(decisions): propose SDK cold-prefix proof allowance
cemililik Nov 3, 2026
df2f328
docs(decisions): accept reviewed SDK cold-prefix settings
cemililik Nov 3, 2026
f4fd348
test(sdk): apply approved cold-prefix proof settings
cemililik Nov 3, 2026
b53ad49
docs(roadmap): hand off SDK proof to PR CI
cemililik Nov 3, 2026
e465818
docs(decisions): propose native inventory phase allowance
cemililik Nov 3, 2026
1d6bc1d
docs(decisions): accept native inventory phase allocations
cemililik Nov 3, 2026
dc1b11d
ci(native): apply approved inventory phase allocations
cemililik Nov 3, 2026
74bd0f9
docs(roadmap): correct native inventory Status boundary
cemililik Nov 3, 2026
ac8f4aa
docs(roadmap): hand off native inventory proof to PR CI
cemililik Nov 3, 2026
4eedbb1
docs(decisions): propose coordinated SDK completion windows
cemililik Nov 3, 2026
4a745e3
docs(decisions): accept delegated SDK completion policy
cemililik Nov 3, 2026
8df5124
fix(web): align SDK proof and frontend execution windows
cemililik Nov 3, 2026
1d40d94
docs(roadmap): record SDK validation and final CI handoff
cemililik Nov 3, 2026
537b97c
fix(ci): recognize standard AWS hosted VM evidence
cemililik Nov 3, 2026
ecfc56d
fix(identity): preserve native profile recovery and edit consent
cemililik Nov 4, 2026
620fdaf
test(identity): pace warm-provider profile recovery within quota
cemililik Nov 4, 2026
b97214e
refactor(education): finalize seed checks and contract references
cemililik Nov 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 8 additions & 10 deletions .claude/skills/add-ef-migration/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,14 +170,11 @@ migrationBuilder.Sql("""
**Session variable names** are canonical: `app.tenant_id` / `app.organization_id` /
`app.scope` / `app.resolving_host`. Always pass the second `true` argument so an unset
context filters the row out instead of raising on a pooled connection. Write the
`app.scope` term into the policy even though **nothing sets it**: the flag derives from
the actor's role and roles arrive in
[Phase 03](../../../docs/roadmap/phase-03-identity-admin.md), which is the earliest
phase that can own the carrier
([Security Standards § Tenant Context](../../../docs/standards/11-security.md#tenant-context)),
so the cross-organization read hatch is unreachable at runtime until then — the correct
default, and the reason the two `AS RESTRICTIVE` guards need a test that sets the
variable by hand.
`app.scope` term into the policy. Only the operation-bound live-authorized read
witness may announce tenant-wide read authority; an actor Role, endpoint field
or successful Organization clause alone cannot. Follow the current
[Security contract](../../../docs/standards/11-security.md#live-authorization-contract)
and qualify the two restrictive write guards through real app-role controls.

**Roles.** Migrations run as `learnstack_migration` (the table owner);
the application connects as `learnstack_app` (`NOBYPASSRLS`, not the owner). Grant the
Expand Down Expand Up @@ -267,8 +264,9 @@ The ordinary API job runtime cannot receive migration credentials or execute thi
backfill. The migration-owned loop sets `app.tenant_id` per tenant on its own
**migration** connection:

> This loop is a migration-time backfill, not a ninth entry in ADR-0040's closed
> eight-setter set. Application code never opens its own connection to set the
> This loop is a migration-time backfill, not another runtime logical setter.
> The current closed census lives in Security 11. Application code never opens
> its own connection to set the
> variable — it goes through `IUnitOfWork.SetTenantContextAsync` on the ambient
> transaction ([ADR-0040](../../../docs/decisions/0040-ambient-unit-of-work.md)).

Expand Down
159 changes: 102 additions & 57 deletions .claude/skills/add-frontend-route/SKILL.md

Large diffs are not rendered by default.

23 changes: 13 additions & 10 deletions .claude/skills/add-integration-test/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,8 @@ 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 populated under its role and table class, with two tenants and a second
> organization under tenant A for tenant-owned data. There
> are five chains and 42 data tables (47 including migration histories). Every
> discovered public table must match an exact class in
> organization under tenant A for tenant-owned data. Every discovered public
> table must match an exact class in
> [SchemaTableClasses](../../../backend/tests/LearnStack.Tests.Integration/Database/SchemaTableClasses.cs).
> Vendor/control SELECTs as `learnstack_app` must raise `42501`; a zero count or
> an excluded table does not prove the required denial. Discover
Expand All @@ -93,8 +92,9 @@ providers and restore case-owned changes before returning.
Its generated CA is trusted only by the fixture's HTTPS clients, with normal
hostname validation and a wrong-root refusal control. Never install a fixture CA
in the host trust store or bypass TLS/cookie rules to get a passing login.
Use real code/S256 authentication, keep credentials/tokens out of assertions and
logs, and never follow the unimplemented BFF callback to claim session coverage.
Use real code/S256 authentication and keep credentials/tokens out of assertions
and logs. Stopping at the provider redirect does not establish BFF session/cookie
publication; the named native HTTPS/session fixtures own that separate proof.
This fixture does not replace application-role isolation proofs. Every consuming
test class has the Docker trait, including classes outside `Database/`.
Real-token API qualification uses the separate nonparallel
Expand Down Expand Up @@ -241,11 +241,14 @@ public async Task Org_X_cannot_read_Org_Y_within_TenantA()
And one more, which the org-scoped template needs and an ordinary session cannot
reach: with `app.scope = 'tenant'` set, the **read** widens across organizations
and neither write does. Without that case both `AS RESTRICTIVE` guards can be
deleted with the suite green — measured, in Packet 6. Set the variable in the test
itself; nothing sets it at runtime, because the flag derives from the actor's role
and roles arrive in
[Phase 03](../../../docs/roadmap/phase-03-identity-admin.md), after Phase 02b's
authenticated principal. See
deleted with the suite green — measured, in Packet 6. Set the variable directly
only for the raw RLS control. Production scope comes from the closed operation-bound
read witness or fixed-seed verification sources in
[Database Standards](../../../docs/standards/05-database.md), never from an actor's
role alone. Exercise each producer's invocation, owner, lifetime and cleanup
controls separately. The
[Phase 03 Status](../../../docs/roadmap/phase-03-identity-admin.md) owns packet
activation. See
`TenancySchemaTests.TheTenantScopeHatchWidensReadsAndNeitherWrite`.

The Packet 7 half of these cases goes through the **request**, and it needs no
Expand Down
20 changes: 9 additions & 11 deletions .claude/skills/add-mediatr-handler/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -289,17 +289,15 @@ See [add-permission](../add-permission/SKILL.md).

### Step 6: Idempotency (if applicable)

If the command triggers external side effects (LiveKit room creation, Stripe
charge, email send), the controller layer adds the `Idempotency-Key` header
requirement, and the handler:

1. Reads the idempotency key from the request context.
2. Checks the per-module `idempotency_keys` table for a prior result; returns it
if found.
3. Otherwise runs the handler, writes the (key → result) row in the same
transaction.

The pattern is detailed in [04-api-design.md § Idempotency](../../../docs/standards/04-api-design.md).
Use the canonical controller/filter and `IIdempotencyStore` ownership from
[API Standards § Idempotency](../../../docs/standards/04-api-design.md#idempotency).
Do not add handler-owned replay or a per-module receipt table. The store claims
before business dispatch and records the outcome after actual business-owner
disposal; this is not atomic exactly-once execution. ADR-0079's protected set adds
its exact precondition fingerprint and fresh original-target receipt-read gate.
Tenantless bootstrap uses ADR-0078's natural-key convergence and rejects a
tenant-keyed Idempotency-Key. Check current implementation/qualification before
using a newly Accepted adapter or protected consumer.

### Step 7: Endpoint shell

Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/add-permission/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,8 @@ denied coverage; verify its current catalogue status and nonempty subjects.
- Check `Permission_Keys_Match_Convention`,
`Permission_Scope_Matches_Resource_Scope` and
`Permission_Registry_Has_DeniedTest` against their current catalogue status.
Their P03-2 controls are Registered at acceptance; run the actual implemented
owners before claiming green, and never promote an absent proof.
Run their actual current proof owners before claiming green; a later Accepted
extension remains pending until its nonempty subjects are implemented and run.

## Common pitfalls

Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/code-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ Walk every change against the project's
| **Tenant + organization isolation** | New tenant-owned entity has `[TenantOwned]` + EF filter + RLS policy + canonical `app.tenant_id` session var. `[OrganizationScoped]` covered the same way. Any `IgnoreQueryFilters` outside platform-admin paths is a zero-tolerance blocker per [17-code-review.md § Zero Tolerance](../../../docs/standards/17-code-review.md). |
| **4-step auth order** | Every write use case checks in order: (1) Authn → (2) Tenant membership → (3) Role / permission → (4) Resource scope. Failure at each step returns the right Problem Details code (`unauthorized` / `tenant_mismatch` / `forbidden` / `resource_scope_violation`). Source: [11-security.md § Authorization](../../../docs/standards/11-security.md), [19-permissions.md § Enforcement Points](../../../docs/standards/19-permissions.md). |
| **Authn / authz** | Every new endpoint has `[Authorize(Policy=…)]` or `[AllowAnonymous]` with a comment. Policy keys exist in the permission registry. Resource-scope handlers (`instructor` edits own course only) present where needed. |
| **Tenant id from the resolved context only** | Resolved per [ADR-0036](../../../docs/decisions/0036-tenant-resolution-trusted-inputs.md): from the host lookup of the effective host, or on a platform host from validated claims confirmed by live membership; off HTTP, from the validated authoritative job row or the integration-event envelope. Never from a request body, query string, cookie or tenant header — `X-Tenant-Id` and `X-Organization-Id` are assertions that can only reject, on every hop. Check command and DTO surfaces. |
| **Tenant id from the resolved context only** | Resolved per [ADR-0036](../../../docs/decisions/0036-tenant-resolution-trusted-inputs.md): from the host lookup of the effective host, or on a platform host from validated claims confirmed by live membership; off HTTP, from the validated authoritative job row or the integration-event envelope. ADR-0078 adds only the separately credentialed native tuple with live API Membership/lifecycle and real-host checks; follow [Security 11](../../../docs/standards/11-security.md#native-scope-and-global-self-admission) and verify runtime qualification. Browser body/query/cookie fields never select it; `X-Tenant-Id` and `X-Organization-Id` remain refusal-only assertions on every hop. Check command and DTO surfaces. |
| **SQL injection** | EF Core LINQ or `FromSqlInterpolated`; never raw string concatenation. Raw SQL has parameters. |
| **XSS** | No `dangerouslySetInnerHTML` outside a sanitisation wrapper; CSP nonces in place; markdown via allowlist. Nothing sets a CSP today: the [standards index](../../../docs/standards/README.md#honest-status-today) row for Security Standards carves § HTTP Headers out to [Phase 11](../../../docs/roadmap/phase-11-production-hardening.md#security), so a missing nonce is not a Blocker until that phase sets one. Accepted P02d-6 G42 requires atomic four-color validation and a fixed style element, with whole-palette fallback; output must be safe without CSP. [The accepted package](../../../docs/roadmap/phase-02d-delivery-log.md#p02d-6-accepted-answers) owns its proof obligations; acceptance alone is not delivery. |
| **CSRF** | ADR-0070's closed BFF POSTs require the exact verified Origin and explicit CSRF proof; OIDC callbacks require their bound state/nonce/PKCE transaction. Server Actions remain unadmitted until their owning phase authorizes them. |
Expand Down
50 changes: 43 additions & 7 deletions .claude/skills/local-dev-setup/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ the backend runs today calls them, so `make dev` starts 7 services and
| Docker Desktop | Yes | Required for every container. |
| .NET 10 SDK | Yes | `dotnet --version` returns `10.0.x`. |
| OpenSSL CLI | Yes for frontend tests | Isolated TLS fixtures generate temporary certificates without installing trust. |
| Node >=22.23.1 + pnpm | Yes | For the frontend; `frontend/package.json` sets the floor and CI pins `22.23.1`. |
| Node 22.23.1 + pnpm 9.12.3 | Yes | The exact qualified tuple is enforced by the frontend installer and producer; see [ADR-0083](../../../docs/decisions/0083-owned-next-response-compression-cleanup.md). |
| Deployment mode | Yes | `Development` (default) / `SaaS` / `Dedicated` / `SelfHostedOnline` / `SelfHostedAirGapped` (per [Standards 12 § Deployment Modes](../../../docs/standards/12-infrastructure.md)). |
| Selected private `.env` (gitignored) | Yes before stack startup | `.env.example` is the template; preserve existing secrets and private file permissions. |

Expand All @@ -62,16 +62,15 @@ the backend runs today calls them, so `make dev` starts 7 services and

```bash
dotnet --version # 10.0.x
node --version # >=22.23.1
pnpm --version
node --version # exactly 22.23.1
pnpm --version # exactly 9.12.3
docker info >/dev/null && echo "docker OK"
```

If any of these is missing, install:

- .NET 10 SDK: <https://dotnet.microsoft.com/download>
- Node: use Volta or fnm; `frontend/package.json` requires `>=22.23.1` and CI
pins `22.23.1`.
- Node: use Volta or fnm; `frontend/package.json` requires exactly `22.23.1`.
- pnpm: `corepack enable`; `frontend/package.json` pins `pnpm@9.12.3`.
- Docker Desktop: <https://www.docker.com/products/docker-desktop>.

Expand All @@ -85,9 +84,13 @@ make .env # creates a missing local-only file with private permi
# Before make dev, prepare KEYCLOAK_WEB_CLIENT_SECRET in that private file.

(cd backend && dotnet restore LearnStack.slnx --locked-mode)
(cd frontend && pnpm install --frozen-lockfile)
node frontend/scripts/install-frontend.mjs
```

Use the guarded installer for frontend restoration; raw `pnpm install` refuses
before dependency mutation. Follow the [framework maintenance guide](../../../frontend/framework/next-response-cleanup/README.md)
for an intentional lockfile update or correction regeneration.

Never overwrite an existing private source or regenerate its BFF secret on a
routine rerun. For a legacy source, first verify it is your regular, nonsymlink,
single-link file, then explicitly set `chmod 600 .env` and add a missing key.
Expand Down Expand Up @@ -121,6 +124,39 @@ must match the root private source. README Quickstart owns the
[closed local demo database grammar](../../../README.md#3-prepare-local-https-and-start-the-applications)
and its supported field aliases; it does not promise general Npgsql parsing.

**Native entry configuration.**
[ADR-0078's exact callback/origin contract](../../../docs/decisions/0078-native-session-scope-and-self-entry.md#selection-refresh-and-host-transition)
adds management hosts to the existing two public hosts. Explicit local hosts
aliases and trusted TLS leaves must cover `demo-english.learnstack.local`,
`demo-yoga.learnstack.local`, `manage.demo-english.learnstack.local` and
`manage.demo-yoga.learnstack.local`; no script installs system aliases or CA
trust. Provider callback/post-logout registrations and native origin admission
must match those exact HTTPS origins, without wildcards. Follow the
[realm guide](../../../infra/keycloak/README.md#tenant-client-contract) for the
fixed native web scope and bounded warm reconciliation.

With `LEARNSTACK_BFF_ENABLED=true`, the native loader requires
`LEARNSTACK_BFF_ISSUER`, `KEYCLOAK_WEB_CLIENT_SECRET`, `Identity__AuthorityId` and
`Identity__NativeSession__CurrentSecret`. Defined values in the private root
`.env`, optional web `.env.local` and process environment must agree. The native
source secret is a separate random 32-byte canonical base64url value, distinct
from `LEARNSTACK_PUBLIC_HOP_SECRET`; the AuthorityId must match the installed API
authority. Preserve existing values. These are private runtime inputs, never
public configuration, build inputs or browser code.

`make public-api` selects the exact native API keys from those same sources:
`Identity__NativeSession__CurrentSecret`, `Identity__NativeSession__PreviousSecret`,
`Identity__NativeSession__PreviousRetiresAt`, `Identity__NativeSession__HttpsPort`
and `Identity__SelfBootstrap__Enabled`. Conflicting or blank supplied values
refuse before launch; the API validates their formats and relationships.
The launcher supplies HTTPS port 3000 when absent, but generates no native secret
and does not enable self-bootstrap. The issuer/AuthorityId pair must also be
complete in each source that supplies either key. Use
[Security's qualified rotation contract](../../../docs/standards/11-security.md#native-scope-and-global-self-admission)
for current/previous secret handling. The
[phase Status block](../../../docs/roadmap/phase-03-identity-admin.md) owns native
activation and qualification; configuration alone proves neither.

**Ordinary API startup.** `dotnet run` does not load `.env`. For an API-only
session, supply `ConnectionStrings:Default` (`learnstack_app`) and
`ConnectionStrings:OutboxDispatcher` (`learnstack_outbox_admin`) through environment
Expand Down Expand Up @@ -248,7 +284,7 @@ P02d-7 also supplies isolated CI mode over the same production lifecycle. In a
fresh checkout without root `.env`, web `.env.local` or `artifacts/public-demo`:

```bash
(cd frontend && pnpm install --frozen-lockfile)
node frontend/scripts/install-frontend.mjs
(cd frontend && pnpm exec playwright install --with-deps chromium)
make demo DEMO_MODE=ci
```
Expand Down
Loading
Loading