Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
d1a9931
chore(ops): refresh checkpoint and batch policy
BeforeLights Aug 2, 2026
4eff6f5
feat(infra): add safe local service lifecycle
BeforeLights Aug 2, 2026
8ba1d4e
docs(infra): record local foundation evidence
BeforeLights Aug 2, 2026
b0a53c1
fix(infra): reject duplicate local host ports
BeforeLights Aug 2, 2026
9ce6b6b
test(infra): cover local preflight argument failures
BeforeLights Aug 2, 2026
9f2d047
docs(infra): document safe local lifecycle
BeforeLights Aug 2, 2026
b60d942
test(infra): enforce hosted safety boundaries
BeforeLights Aug 2, 2026
caa090a
test(infra): verify production recovery defaults
BeforeLights Aug 2, 2026
7d6d1e3
feat(infra): add daemon-free compose validation
BeforeLights Aug 2, 2026
77deac3
docs(infra): record compose validation evidence
BeforeLights Aug 2, 2026
5de31b0
ci: include infrastructure validation in repo checks
BeforeLights Aug 2, 2026
917e313
docs(operations): update foundation verification gates
BeforeLights Aug 2, 2026
69c4459
fix(telemetry): ignore accessor-backed diagnostics
BeforeLights Aug 2, 2026
b51195c
docs(telemetry): describe hostile field handling
BeforeLights Aug 2, 2026
da3d732
ci: route infrastructure changes through shared gates
BeforeLights Aug 2, 2026
7fc973b
fix(ci): correct infrastructure scope assertion
BeforeLights Aug 2, 2026
fcabfb3
docs(operations): add foundation batch handoff
BeforeLights Aug 2, 2026
e424f1a
docs(orchestration): record foundation batch checkpoint
BeforeLights Aug 2, 2026
76c1882
test(infra): verify local volume and bucket safety
BeforeLights Aug 2, 2026
185fa1d
test(infra): reject destructive local bootstrap SQL
BeforeLights Aug 2, 2026
7bd479b
test(infra): guard lifecycle against destructive Docker cleanup
BeforeLights Aug 2, 2026
8e5071f
test(infra): pin GitHub OIDC deployment subject
BeforeLights Aug 2, 2026
5fa01f6
test(infra): keep hosted state outside source
BeforeLights Aug 2, 2026
49f82db
feat(infra): configure local disk headroom
BeforeLights Aug 2, 2026
03b79e0
feat(infra): enable init supervision for local services
BeforeLights Aug 2, 2026
d5c0438
feat(infra): isolate local service network
BeforeLights Aug 2, 2026
8f0b50d
docs(operations): reconcile local infrastructure limits
BeforeLights Aug 2, 2026
5300d95
docs(plan): specify local infrastructure lifecycle
BeforeLights Aug 2, 2026
f941357
docs(infra): document non-applying AWS validation
BeforeLights Aug 2, 2026
bdaf5f5
docs(operations): define telemetry safety boundary
BeforeLights Aug 2, 2026
a548584
feat(infra): bound hosted web object retention
BeforeLights Aug 2, 2026
340110d
feat(infra): harden hosted task containers
BeforeLights Aug 2, 2026
d9f1ad1
feat(infra): enable production database insights
BeforeLights Aug 2, 2026
bb8a55b
docs(infra): document production database insights
BeforeLights Aug 2, 2026
6d3368c
ci: disable checkout credential persistence
BeforeLights Aug 2, 2026
7811dbc
fix(telemetry): fail closed on hostile Python mappings
BeforeLights Aug 2, 2026
ced1568
fix(infra): make object lifecycle filter explicit
BeforeLights Aug 2, 2026
ad12965
docs(infra): clarify alpha plan-only workflow
BeforeLights Aug 2, 2026
52fc370
feat(infra): expose daemon-free local preflight
BeforeLights Aug 2, 2026
a0e4d75
docs(infra): record daemon-free preflight evidence
BeforeLights Aug 2, 2026
b989fa5
test(infra): pin local telemetry signal pipelines
BeforeLights Aug 2, 2026
b6062dc
fix(infra): match indented collector pipeline config
BeforeLights Aug 2, 2026
8cd55cc
fix(infra): correct collector safety assertions
BeforeLights Aug 2, 2026
5755d79
fix(infra): require immutable production task images
BeforeLights Aug 2, 2026
d951d4e
docs(infra): document digest-pinned production images
BeforeLights Aug 2, 2026
93a6df6
fix(infra): allow wrapped image guidance text
BeforeLights Aug 2, 2026
a78e135
feat(infra): parameterize worker task capacity
BeforeLights Aug 2, 2026
199ce77
fix(infra): remove unused ECS task secret permissions
BeforeLights Aug 2, 2026
f291fd5
ci: bound every runner job with a timeout
BeforeLights Aug 2, 2026
385dae7
fix(ci): bound release provenance runtime
BeforeLights Aug 2, 2026
d3cf73c
ci: fail when release artifacts are missing
BeforeLights Aug 2, 2026
0cacf2f
feat(infra): add bounded local log diagnostics
BeforeLights Aug 2, 2026
e69e5cd
fix(infra): validate local compose project names
BeforeLights Aug 2, 2026
560f5d7
fix(infra): honor safe project override from environment
BeforeLights Aug 2, 2026
6a0efe7
ci: require every provenance artifact
BeforeLights Aug 2, 2026
291d3d3
fix(ci): validate provenance output arguments
BeforeLights Aug 2, 2026
38a4670
ci: validate SBOM output arguments
BeforeLights Aug 2, 2026
7bef4fd
test(infra): reject invalid disk threshold environment
BeforeLights Aug 2, 2026
74737c5
fix(infra): bound local container log storage
BeforeLights Aug 2, 2026
511e70c
docs(infra): explain local log retention
BeforeLights Aug 2, 2026
039de6b
docs(ci): record supply chain gate evidence
BeforeLights Aug 2, 2026
f293d1a
docs(orchestration): refresh foundation batch checkpoint
BeforeLights Aug 2, 2026
b1bb092
docs(operations): record foundation batch commit window
BeforeLights Aug 2, 2026
20ff047
feat(infra): verify Redis persistence after restart
BeforeLights Aug 2, 2026
a19917e
fix(infra): distinguish restart and persistence checks
BeforeLights Aug 2, 2026
46145ee
fix(telemetry): fail closed on hostile trace headers
BeforeLights Aug 2, 2026
30421f5
docs(telemetry): document hostile header handling
BeforeLights Aug 2, 2026
0072076
ci: require explicit read-only repository permissions
BeforeLights Aug 2, 2026
6e5b930
ci: require the protected release environment
BeforeLights Aug 2, 2026
f0251d4
fix(infra): protect hosted web bucket deletion
BeforeLights Aug 2, 2026
33a6398
docs(orchestration): finalize foundation batch checkpoint
BeforeLights Aug 2, 2026
d9598a2
fix(repo): satisfy formatting and lint gates
BeforeLights Aug 2, 2026
214e45b
docs(operations): record foundation verification boundary
BeforeLights Aug 2, 2026
0f47f81
Merge pull request #19 from DatabreezeService/feat/fnd003-local-infra…
BeforeLights Aug 2, 2026
2b79e49
test(cli): verify generated artifact contents
BeforeLights Aug 2, 2026
f263be7
fix(local): bind published services to loopback
BeforeLights Aug 2, 2026
901d76f
fix(local): bound Docker probes and cleanup sentinels
BeforeLights Aug 2, 2026
0d5635b
fix(telemetry): normalize hostile reflection failures
BeforeLights Aug 2, 2026
2ebadd5
fix(infra): enforce AWS policy and Fargate constraints
BeforeLights Aug 2, 2026
2286770
docs(infra): mark persistence evidence environment-gated
BeforeLights Aug 2, 2026
2a1df9e
test(local): exercise preflight and service topology
BeforeLights Aug 2, 2026
806a81f
fix(ci): parse workflow policy as YAML
BeforeLights Aug 2, 2026
24d117d
style(cli): format infrastructure assertions
BeforeLights Aug 2, 2026
432fe76
docs(ci): record external release protection gate
BeforeLights Aug 2, 2026
68218b2
docs(infra): list complete local command surface
BeforeLights Aug 2, 2026
48a596a
style(local): format service lifecycle code
BeforeLights Aug 2, 2026
7a242f5
Merge pull request #21 from DatabreezeService/fix/promotion-20-review
BeforeLights Aug 2, 2026
8118456
test(telemetry): assert normalized hostile errors
BeforeLights Aug 2, 2026
a19238d
fix(infra): scan Terraform blocks safely
BeforeLights Aug 2, 2026
01dc664
fix(ci): require commands in run steps
BeforeLights Aug 2, 2026
0172494
Merge pull request #22 from DatabreezeService/fix/promotion-20-review
BeforeLights Aug 2, 2026
bfb1214
test(infra): cover Terraform slash comments
BeforeLights Aug 2, 2026
783a471
Merge pull request #23 from DatabreezeService/fix/promotion-20-review
BeforeLights Aug 2, 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
9 changes: 9 additions & 0 deletions .github/workflows/quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ jobs:
scope:
name: Detect affected runtimes
runs-on: ubuntu-24.04
timeout-minutes: 10
outputs:
shared: ${{ steps.scope.outputs.shared }}
web: ${{ steps.scope.outputs.web }}
Expand All @@ -27,6 +28,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
fetch-depth: 0
persist-credentials: false
- name: Detect change scope
id: scope
shell: bash
Expand All @@ -53,6 +55,8 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
persist-credentials: false
- name: Set up Python 3.13
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
with:
Expand Down Expand Up @@ -86,9 +90,12 @@ jobs:
needs: scope
if: needs.scope.outputs.engine == 'true'
runs-on: ubuntu-24.04
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
persist-credentials: false
- name: Set up Python 3.13
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
with:
Expand Down Expand Up @@ -117,6 +124,8 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
persist-credentials: false
- name: Set up Java 21
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961
with:
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,12 @@ jobs:
name: Build and record release provenance
runs-on: ubuntu-24.04
environment: release
timeout-minutes: 30
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/security.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
Expand Down
3 changes: 2 additions & 1 deletion docs/development/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ Android companion, API, and Python engine.
OpenTofu when infrastructure validation is needed. The repository pins the
package manager and checks runtime versions.
2. Run `corepack pnpm repo:bootstrap`.
3. Run `corepack pnpm repo:check` and `corepack pnpm repo:build`. A clean
3. Run `corepack pnpm repo:check` and `corepack pnpm repo:build`. The check
includes non-applying local/AWS infrastructure validation. A clean
checkout is the baseline; do not hide a failure with an untracked local
configuration file.
4. Copy `infrastructure/local/.env.example` to a local-only `.env` if needed,
Expand Down
10 changes: 6 additions & 4 deletions docs/operations/engineering-foundation-verification.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ environment limits that remain explicit.

| Area | Command | Result |
|---|---|---|
| JavaScript workspace | `corepack pnpm repo:check` | Pass; formatting, lint, typecheck, requirements, contracts, repository tests, and 19 Turborepo test tasks passed. |
| JavaScript workspace | `corepack pnpm repo:check` | Pass; formatting, lint, typecheck, requirements, contracts, infrastructure policy, repository tests, and 19 Turborepo test tasks passed. |
| JavaScript builds | `corepack pnpm repo:build` | Pass; API, Web, Desktop, shared packages, and engine package build completed. |
| Contracts | `corepack pnpm --filter @databreeze/contracts contract:check` | Pass; generated models, compatibility baseline, and 28-case TypeScript/Python/Kotlin parity passed. |
| Engine | `uv sync --locked --offline`; engine test/lint/typecheck/build through the root gates | Pass; locked Python 3.13 environment and package build verified. |
| Android | `apps/android/gradlew :app:testDebugUnitTest --no-daemon` | Pass; 27 Gradle tasks completed. |
| Brand | `corepack pnpm brand:check` and design-token build checks | Pass; canonical legacy asset checksums and derivatives remain unchanged. |
| AWS static validation | `corepack pnpm infra:check` | Pass; static checks passed and no infrastructure was applied. |
| AWS/static infrastructure | `corepack pnpm infra:check`; `node tools/repo-cli/src/local-services.mjs config` | Pass; static AWS checks and daemon-free local Compose validation passed; no infrastructure or containers were applied. |

The contract drift check ignores only `uv`/Hatch editable-install products
under `generated/python/build` and `generated/python/*.egg-info`; a regression
Expand All @@ -31,8 +31,10 @@ products are never committed.
executed locally. CI must run them with the pinned OpenTofu release before
an infrastructure change is approved.
- Docker was not required for the repository gates and live local dependency
startup was not claimed. Run `corepack pnpm local:smoke` on a machine with a
healthy Docker daemon before dogfood acceptance.
startup was not claimed. Run `corepack pnpm local:services check` and then
`corepack pnpm local:services restart-check` on a machine with a healthy
Docker daemon before dogfood acceptance. See
`foundation-local-infrastructure-2026-08-02.md` for the FND-003 boundary.
- Android instrumentation/emulator and signed release packaging are separate
production-readiness gates; the shell unit test is the evidence recorded here.

Expand Down
78 changes: 78 additions & 0 deletions docs/operations/foundation-batch-handoff-2026-08-02.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Foundation batch handoff

Observed at (UTC): 2026-08-02
Canonical repository: `databreeze-platform`
Branch: `feat/fnd003-local-infra-batch`
Base: `origin/dev` at `92b3e9a4d581f3a6947b7a2bf58c8334f4ae0c18`
Promotion base: `origin/main` at `a2fcba34037c1ffd77816be16be75453abfb16fa`

## Active delivery boundary

- FND-003 local infrastructure is `in-progress`. Static Compose, bootstrap,
lifecycle, port, Docker-diagnostic, disk-preflight, and daemon-free config
checks are committed.
- Live Docker health, port-collision simulation, disk-pressure threshold, and
restart-persistence evidence remain environment-gated because the Docker
daemon is unavailable on the current machine.
- The batch also hardens AWS static checks, content-safe telemetry handling,
infrastructure path-aware CI, and the updated 30–70 commit policy. These
changes are not marked as verified foundation tasks until their own gates are
recorded.

## Verification already run

- Local infrastructure, AWS infrastructure, CI policy, change-scope, telemetry,
orchestration, and diff checks pass in their scoped commands.
- `node tools/repo-cli/src/local-services.mjs config` passes without a Docker
daemon; `check` fails closed with a clear daemon-unavailable reason.
- Android lifecycle review fixes were promoted through PRs #17 and #18; the
existing PR #14 promotion was merged to `main` after hosted checks and its
single CodeRabbit review/incremental dispositions.

## Git batching rule

This is a normal feature batch. Keep atomic commits and do not open the feature
PR until the branch reaches at least 30 commits, targeting approximately 70 and
never reaching 100. The only small-PR exceptions are focused promotion-review
fixes required to close an already-open `dev`→`main` gate.

At this checkpoint the branch is 72 commits ahead of `origin/dev`. The current
boundary is still coherent: FND-003 local lifecycle hardening is accompanied by
portable AWS safety, telemetry, CI/supply-chain, and evidence updates. Continue
with scoped foundation work until the final handoff boundary; do not manufacture
empty commits or open a small feature PR merely to reset the count.

## Final scoped verification before the feature PR

Passed from this worktree:

- `corepack pnpm format:check`
- `corepack pnpm lint`
- `corepack pnpm typecheck`
- `corepack pnpm contracts:check`
- `corepack pnpm orchestration:check`
- `corepack pnpm requirements:check`
- `corepack pnpm test` (67 repository CLI tests plus all workspace suites)
- `corepack pnpm repo:build` (API, Web, Desktop, shared packages, and engine)
- `uv run --locked pytest`, Ruff, format, and mypy (91 engine tests)
- `apps/android/gradlew.bat :app:testDebugUnitTest --offline --no-daemon`

Environment-gated and intentionally not claimed as verified:

- OpenTofu format/init/validate because OpenTofu is not installed locally.
- Live Docker startup, health, port-collision, disk-pressure, Redis
persistence, and restart checks because the Docker daemon is unavailable.
- Android instrumentation/emulator and signed release packaging.

## Safest next command

```powershell
git status --short --branch
git fetch origin dev main
node tools/repo-cli/src/check-execution-orchestration.mjs
node --test tools/repo-cli/test/**/*.test.mjs
```

After the normal batch reaches its commit boundary, push this branch, open one
PR to `dev` without CodeRabbit, merge after hosted checks, then create the
separate `dev`→`main` promotion PR and invoke CodeRabbit exactly once there.
51 changes: 51 additions & 0 deletions docs/operations/foundation-ci-supply-chain-2026-08-02.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# FND-006 CI and supply-chain evidence

Observed at (UTC): 2026-08-02
Branch: `feat/fnd003-local-infra-batch`
Task: `FND-006 — Close CI and supply-chain gaps`

## Implemented boundaries

- Path-aware scope detection treats infrastructure, tooling, contracts, plans,
and workflows as shared quality-gate inputs.
- Every required workflow uses SHA-pinned actions, least-privilege top-level
permissions, discarded checkout credentials, bounded runner timeouts, and
no `pull_request_target` or long-lived AWS credentials.
- Artifact uploads fail when an expected output is missing.
- SBOM and provenance generators reject malformed output arguments; provenance
fails closed when a declared artifact is missing and records sorted SHA-256
subjects.
- Container image, secret-pattern, license, SBOM, and provenance checks remain
non-deploying repository operations.

## Verification

Passed:

- `node --test tools/repo-cli/test/ci-policy.test.mjs`
- `node --test tools/repo-cli/test/provenance.test.mjs`
- `node --test tools/repo-cli/test/sbom.test.mjs`
- `node tools/repo-cli/src/check-ci-policy.mjs`
- `node tools/repo-cli/src/check-container-policy.mjs`
- `node tools/repo-cli/src/check-secret-patterns.mjs`
- `node tools/repo-cli/src/check-license-policy.mjs`
- `node tools/repo-cli/src/generate-sbom.mjs --output <temporary-file>`
- `node tools/repo-cli/src/generate-provenance.mjs --output <temporary-file> --artifact <temporary-sbom>`
- `git diff --check`

Hosted CI remains authoritative for the complete dependency, SAST, container,
OpenTofu, build, and release-environment gates. The generators never write
runtime evidence inside the repository during these checks.

The `release` environment's required reviewers and branch restrictions are
GitHub repository settings rather than workflow YAML. Before promoting to
`main`, an administrator must verify those settings and record the check in
the release evidence; the repository policy checker deliberately verifies the
workflow's environment reference but cannot infer external protection rules.

## Rollback

Revert the focused CI or generator commit that introduced the behavior, rerun
the scoped tests and `pnpm ci:policy`, then record the resulting gap before
merging. No cloud resource, credential, or customer data is changed by these
checks.
56 changes: 56 additions & 0 deletions docs/operations/foundation-local-infrastructure-2026-08-02.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# FND-003 local infrastructure evidence

Observed at (UTC): 2026-08-02
Branch: `feat/fnd003-local-infra-batch`
Task: `FND-003 — Close local infrastructure gaps`

## Implemented boundaries

- PostgreSQL 17.5, Redis 7.4.5, MinIO, Mailpit, and the OpenTelemetry collector
remain pinned in `infrastructure/local/compose.yml`.
- PostgreSQL initialization creates every module-owned schema and contains no
credentials, roles, or secret literals.
- `tools/repo-cli/src/local-services.mjs` provides daemon-free `config` and
`preflight` commands plus `check`, `start`, `stop`, `reset`,
`restart-check`, `status`, bounded read-only `logs`, and legacy `smoke`
commands.
- Lifecycle commands preserve named volumes. `reset` uses Compose
`down --remove-orphans` without `--volumes`; data deletion is never implicit.
- Preflight reports missing Docker CLI/daemon, host port collisions, and
insufficient free disk space before starting containers.
- `restart-check` restarts the running stack and waits for every service health
check, providing the entry point for persistence evidence.
- `persistence-check` writes a five-minute Redis sentinel, restarts only Redis,
verifies the sentinel, and deletes it; it never flushes a database or volume.
- The documented lifecycle command set includes `config`, `preflight`, `check`,
`start`, `stop`, `reset`, `restart-check`, `persistence-check`, `status`,
`logs`, and the legacy `smoke` entry point.

## Verification

Passed:

- `node --test tools/repo-cli/test/local-infrastructure.test.mjs`
- `node tools/repo-cli/src/local-services.mjs --help`
- `node tools/repo-cli/src/local-services-smoke.mjs --help`
- `node tools/repo-cli/src/local-services.mjs config`
- `node tools/repo-cli/src/local-services.mjs preflight --min-free-gib=0`
- `git diff --check`
Comment thread
coderabbitai[bot] marked this conversation as resolved.

Environment-gated:

- `node tools/repo-cli/src/local-services.mjs check` fails closed with
`Docker daemon is unavailable` because no Docker daemon is running here.
- The daemon-free `preflight` command completes Compose, port, and disk checks
without starting containers; the evidence run used a zero-GiB threshold so
it remains independent of the workstation's available disk headroom.
- Live `compose up`, health polling, port-collision simulation, disk-pressure
threshold validation, and restart-persistence checks (including
`persistence-check`) must run on a machine with Docker Desktop/Compose v2
before FND-003 can become `verified`.

## Rollback

Revert the lifecycle commit and retain the prior static Compose checks. No
containers, named volumes, host files, or credentials are modified by the
repository changes.
4 changes: 2 additions & 2 deletions docs/operations/foundation-reconciliation-2026-08-02.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ This record was created from the current merged `dev` checkpoint, not from an ea
| Task 15 | reconciled | Electron main/preload/renderer shell, context isolation, CSP/navigation policy, and IPC boundary tests pass. |
| Task 16 | reconciled | Python `uv` project, typed action registry, framed entry points, deterministic processor, and engine checks/build pass. |
| Task 17 | reconciled | Kotlin/Compose shell, generated resources, Room/WorkManager/Keystore ports, network security, backup policy, and debug unit tests pass. |
| Task 18 | reconciled | PostgreSQL/Redis/MinIO/Mailpit/OpenTelemetry Compose definitions, health checks, and static readiness checks pass; live Docker startup is separately environment-gated. |
| Task 18 | reconciled-with-limit | PostgreSQL/Redis/MinIO/Mailpit/OpenTelemetry Compose definitions, health checks, explicit network/volume isolation, safe lifecycle commands, port/disk/Docker preflight, and daemon-free config checks pass; live Docker startup/restart persistence is separately environment-gated in FND-003. |
| Task 19 | reconciled-with-limit | AWS OpenTofu modules, alpha composition, encryption/private-network/OIDC source checks, and non-applying infrastructure check pass; OpenTofu itself is not installed locally, so format/validate remain hosted-check obligations. |
| Task 20 | reconciled | Content-safe telemetry package, correlation propagation, redaction allowlists, and hostile-attribute tests are present and covered by repository checks. |
| Task 21 | reconciled | Path-aware quality/security/release workflows, pinned actions, least-privilege permissions, SBOM/provenance, and scan definitions are present and hosted checks pass. |
Expand All @@ -59,7 +59,7 @@ The repository checks include generated-contract drift, brand checksum/derivativ
## Known environment limits

- OpenTofu is not installed on this workstation. No AWS infrastructure was applied; hosted CI must run the pinned OpenTofu format/validate checks before an infrastructure PR is accepted.
- Docker is installed but live local dependency startup was not required for this reconciliation. Run `corepack pnpm local:smoke` on a healthy Docker daemon before dogfood acceptance.
- Docker is installed but its daemon is unavailable for this reconciliation. Run `corepack pnpm local:services check`, `start`, and `restart-check` on a healthy Docker daemon before dogfood acceptance.
- Android instrumentation/emulator testing and signed release packaging remain Plan 400 gates; the debug unit suite passed with the local SDK path supplied through `ANDROID_HOME`/`ANDROID_SDK_ROOT`.
- No customer data or credentials were used. Ignored dependency caches, virtual environments, build output, and Gradle state remain untracked.

Expand Down
33 changes: 33 additions & 0 deletions docs/operations/telemetry-safety.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Content-safe telemetry boundary

DataBreeze telemetry is operational metadata, not a source-data transport.
Every runtime emits the versioned `@databreeze/telemetry/v1` shape and the
Python/Kotlin mirrors are checked against its allowlist.

## Allowed data

- correlation, trace, workspace, job, artifact, dataset, and device IDs
- bounded route/operation/outcome/reason/provider tokens
- status, duration, queue, retry, item, byte, and redaction counters
- an explicit sampling boolean

## Prohibited data

Paths, filenames, source values, formulas, document text, previews, evidence
snippets, questions/prompts, transcripts, contact data, secrets, tokens,
provider causes, and raw exception messages never enter ordinary telemetry.
Unknown attributes are dropped. Strict assertion helpers reject unsafe records
at adapter boundaries. JavaScript sanitization reads only own data properties,
so accessor-backed diagnostics cannot execute arbitrary getters during logging.

## Failure behavior

Malformed correlation or trace headers fail closed. Ambiguous duplicate headers
are rejected, including accessor-backed or non-string header values; hostile
header mappings fail with a generic unreadable-header reason. Invalid or
oversized values are omitted by the permissive sanitizer and rejected by strict mode. Providers and exporters remain
replaceable; a collector outage cannot become domain authority or block durable
jobs and audit writes.

See `packages/telemetry/README.md` and the TypeScript/Python/Android parity
tests before adding an attribute or event.
2 changes: 1 addition & 1 deletion docs/plans/000-platform-program.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ docs/plans/requirement-traceability.json records all 611 IDs with requested trac
- `main` contains stable releases. `dev` is the integration branch.
- New capabilities use `feat/<name>`; corrections use `fix/<name>`; operational and documentation work use conventional prefixes when more accurate.
- Commit one coherent tested unit at a time. Do not combine unrelated applications or domains merely to reduce commit count.
- Feature/fix pull requests target `dev`, preferably contain 30–50 commits, and must not exceed 60 commits. Run local and hosted checks, but do not invoke CodeRabbit on these integration pull requests.
- Feature/fix pull requests target `dev`, normally contain 30–70 commits, and must remain under 100 commits. Run local and hosted checks, but do not invoke CodeRabbit on these integration pull requests. Focused review-gate fixes are the only intentional small-PR exception.
- Merge a green integration pull request while preserving its atomic rollback commits, then immediately open a separate `dev` → `main` promotion pull request for that completed batch.
- Invoke CodeRabbit exactly once on the otherwise-ready promotion pull request and request a full review. Do not invoke it if the promotion exceeds 280 changed files; split or revert the batch first.
- Reproduce every CodeRabbit claim against the reviewed commit. Fix valid findings in focused commits, document rejected findings with evidence, rerun all affected gates, and never request a second CodeRabbit review on that pull request.
Expand Down
Loading
Loading