Skip to content

feat(package-quality): Wave 2a observability host package quality#10

Merged
rickylabs merged 19 commits into
feat/package-qualityfrom
feat/package-quality-wave2-adapters-2a
Jun 7, 2026
Merged

feat(package-quality): Wave 2a observability host package quality#10
rickylabs merged 19 commits into
feat/package-qualityfrom
feat/package-quality-wave2-adapters-2a

Conversation

@rickylabs

@rickylabs rickylabs commented Jun 6, 2026

Copy link
Copy Markdown
Owner

Status

Sub-wave 2a (observability/host) is complete and has passed its IMPL-EVAL (final evaluator) pass with verdict PASS. Scope covers packages/logger, packages/telemetry, and packages/aspire.

Slices

  • Logger slices 1-3 complete: /docs, package task hygiene, runnable docs doctests, and README ≥150 lines.
  • Telemetry slices 4-6 complete: the full-export doc-lint escalation (168 errors) was resolved within the locked slice shape by introducing local documented public contracts and replacing OpenTelemetry public-type leakage; full 8-entrypoint sweep is now clean (168→0).
  • Aspire slices 7-9 complete: schema doc-lint cleanup, ./helpers export removal (no shim), and publish dry-run verification.
  • Slice 10 consumer gate confirmed: aspire ./helpers removal has zero consumers across packages/ and plugins/.

Evidence

Independently re-run with deno 2.8.2 during IMPL-EVAL:

  • doc-lint clean on all export entrypoints — logger (3), telemetry (8), aspire (8 files).
  • deno publish --dry-run --allow-dirty ended Success Dry run complete with 0 slow types for all three packages.
  • deno check clean on all entrypoints; tests pass (logger 11, telemetry 12, aspire 18/49 steps).
  • deno lint and deno fmt --check clean for all three packages.
  • READMEs 203/233/369 lines (≥150); /docs present for each package.

IMPL-EVAL Corrections

Small corrections surfaced by the evaluator pass were fixed in place:

  • Aspire: pinned @std/assert import specifier in two runtime tests to satisfy deno lint (no-unversioned-import).
  • Closed the aspire-helpers-subpath-shim arch-debt entry with evidence now that ./helpers is removed.
  • Refreshed the run artifacts (worklog.md, commits.md, drift.md) to record slices 4-9 and the resolved telemetry escalation.
  • Telemetry's two verbatim-module-syntax lint errors were resolved upstream in df5be37.

The verdict is recorded in .llm/tmp/run/feat-package-quality-wave2-adapters--adapters/evaluate.md. This verdict scopes to 2a only — sub-waves 2b (data) and 2c (messaging) are separate branches/PRs with their own Plan-Gate and IMPL-EVAL passes.

rickylabs and others added 9 commits June 6, 2026 22:20
Reviewer-seeded Research+Plan staging for the Wave 2 Integration adapters wave (logger, telemetry, aspire, kv, database, prisma-adapter-mysql, queue, cron). Structural re-baseline against feat/package-quality @ 4c57867; dynamic gates marked MEASURE-FIRST; Wave 1 review lessons folded in.
- Re-baseline all 8 A2 units with real deno publish --dry-run and
  deno doc --lint counts. Log deltas in drift.md.
- Resolve OQ-1..OQ-7: split Wave 2 into 2a/2b/2c sub-waves;
  interfaces/->ports/ renames; drop aspire ./helpers; add
  ./testing entrypoints; remove skipLibCheck; publish hygiene.
- plan.md: locked decisions, full A2 gate set, risk register,
  debt implications, 10+23+17 ordered commit slices.
- worklog.md: per-unit port shape, adapters, composition roots,
  permissions, consumer-import impact, contributor path.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@rickylabs

Copy link
Copy Markdown
Owner Author

Commit Summary: 29bf0bfdocs(logger): add package docs and doctests

Scope

  • packages/logger/deno.json
  • packages/logger/docs/**
  • packages/logger/tests/_fixtures/docs-examples_test.ts

Changes

  • Added the logger /docs tree with overview, architecture, concepts, getting-started, recipes, and reference pages.
  • Added package task hygiene: lint, fmt, and publish:dry-run.
  • Included docs/**/*.md in the logger publish allowlist.
  • Added runnable docs-example tests for root logging, Hono middleware, role-specific categories, test reset flow, context propagation, and error-boundary logging.

Validation

  • deno fmt --check deno.json README.md docs tests/_fixtures/docs-examples_test.ts passed.
  • deno lint passed.
  • deno test --allow-env ./tests/ passed: 11 tests, 0 failures.
  • deno doc --lint ./mod.ts ./middleware.ts ./orpc.ts passed: checked 3 files.
  • deno publish --dry-run --allow-dirty passed: 0 slow types, Success Dry run complete.

Harness Mapping

  • Covers Sub-wave 2a slices 1-3 for logger: F-7, F-6/static, F-10.

@rickylabs

Copy link
Copy Markdown
Owner Author

Commit Summary: 9fd385cdocs(harness): record 2a logger evidence and telemetry drift

Scope

  • .llm/tmp/run/feat-package-quality-wave2-adapters--adapters/commits.md
  • .llm/tmp/run/feat-package-quality-wave2-adapters--adapters/drift.md
  • .llm/tmp/run/feat-package-quality-wave2-adapters--adapters/worklog.md

Changes

  • Recorded the logger implementation commit and slice evidence in the harness artifacts.
  • Added worklog rows for logger slices 1-3 with validation evidence.
  • Logged significant telemetry drift: root-only deno doc --lint ./mod.ts reports the planned 2 errors, but the required full export sweep reports 168 doc-lint errors.

Validation

  • Evidence commit only; validation is the logger gate evidence recorded in worklog.md.
  • Telemetry re-baseline commands were run before the drift entry and are recorded in drift.md.

Harness Mapping

  • Documents completion of logger slices 1-3.
  • Escalates telemetry slice 4 before widening the locked plan scope.

@rickylabs

Copy link
Copy Markdown
Owner Author

Commit Summary: 966a746fix(telemetry): publish clean exported contracts

Scope

  • packages/telemetry/**
  • Harness slices 4-6: telemetry doc-lint repair, docs/export parity validation, publish dry-run validation.

Changes

  • Added documented local public telemetry contracts for spans, tracers, contexts, attributes, span options, links, status codes, and trace state.
  • Replaced public-facing OpenTelemetry type leakage with local exported contracts while keeping narrow internal OpenTelemetry boundary casts for runtime API calls.
  • Added missing JSDoc on exported telemetry config, context propagation, attribute, instrumentation, and oRPC helper surfaces.
  • Re-exported supporting public contract types from telemetry subpath facades where exported APIs reference them.

Validation

  • packages/telemetry: deno check ./mod.ts ./config.ts ./tracer.ts ./context.ts ./attributes.ts ./instrumentation.ts ./src/runtime/mod.ts ./orpc.ts passed.
  • packages/telemetry: deno doc --lint ./mod.ts ./config.ts ./tracer.ts ./context.ts ./attributes.ts ./instrumentation.ts ./src/runtime/mod.ts ./orpc.ts passed (Checked 8 files).
  • packages/telemetry: deno publish --dry-run --allow-dirty passed with Success Dry run complete and no slow-type failures.

Harness Mapping

  • Re-baseline drift: telemetry full export doc-lint was 168 before fixes and 228 after the local contract scaffold exposed all exported internals; now 0.
  • Slices advanced: 4, 5, 6.
  • F gates addressed: F-6 static/publishability, F-7 doc-lint/docs surface, JSR slow-types clean.

@rickylabs

Copy link
Copy Markdown
Owner Author

Commit Summary: 37665e2fix(aspire): publish clean schema surface

Scope

  • packages/aspire/**
  • Sub-wave 2a slices 7-9: Aspire doc-lint cleanup, ./helpers export removal, publish dry-run verification.

Changes

  • Removed @netscript/aspire/helpers from deno.json with no compatibility shim.
  • Replaced exported Zod-inferred public schema types with explicit documented contracts and local schema facades to eliminate public slow/doc-lint type surfaces.
  • Added missing public docs/re-export annotations for Aspire application, adapter, runtime, testing, domain, and port surfaces.
  • Updated README import guidance from helpers to application.
  • Added a package-local appsettings.json fixture so Aspire tests do not depend on a missing root dotnet/AppHost tree.

Validation

  • deno check --unstable-kv ./mod.ts ./config.ts ./schema.ts ./types.ts ./constants.ts ./src/application/mod.ts ./src/adapters/mod.ts ./src/testing/mod.ts — pass.
  • deno doc --lint ./mod.ts ./config.ts ./schema.ts ./types.ts ./constants.ts ./src/application/mod.ts ./src/adapters/mod.ts ./src/testing/mod.ts — pass (Checked 8 files).
  • deno publish --dry-run --allow-dirty — pass (Success Dry run complete).
  • deno test --allow-all tests/ — pass (18 passed (49 steps) | 0 failed).
  • @netscript/aspire/helpers grep across packages/plugins — no matches; "./helpers" absent from packages/aspire/deno.json.

Harness Mapping

  • F-5/F-11: package export surface updated for alpha no-backcompat helper removal.
  • F-6/F-7: publish dry-run and doc-lint clean on all Aspire exports.
  • F-10: runnable docs/test coverage preserved with package-local fixture.
  • Slice 10 consumer gate still pending in the final 2a verification pass.

@rickylabs

Copy link
Copy Markdown
Owner Author

Commit Summary: 5394902docs(logger): meet package readme threshold

Scope

  • packages/logger/README.md
  • Final Sub-wave 2a DoD correction for logger package documentation length.

Changes

  • Added one concise logger README note about createConsoleLogger() usage for lightweight tests and CLIs.
  • Brought logger README from 149 lines to the required 150-line threshold.

Validation

  • deno fmt --check README.md — pass.
  • deno doc --lint ./mod.ts ./middleware.ts ./orpc.ts — pass (Checked 3 files).
  • deno publish --dry-run --allow-dirty — pass (Success Dry run complete).
  • README line count — pass (150).

Harness Mapping

  • Supports Sub-wave 2a DoD: each package README >= 150 lines and /docs present.
  • No API or behavior changes.

@rickylabs

Copy link
Copy Markdown
Owner Author

Commit Summary: 4bacb67chore(tools): add scoped deno lint and fmt runners

Scope

  • AGENTS.md
  • .llm/tools/run-deno-fmt.ts
  • .llm/tools/run-deno-lint.ts
  • .llm/tools/README.md

Changes

  • Added a scoped deno fmt runner with non-mutating --check default, explicit --root/--file selection, extension filters, include/exclude regexes, batching, and JSON findings.
  • Added a scoped deno lint runner with the same root/file/extension/filter model and grouped JSON lint summaries.
  • Updated AGENTS.md to avoid using mutating root deno task fmt as a validation gate unless explicitly requested.
  • Documented both helpers in .llm/tools/README.md.

Validation

  • deno check .llm/tools/run-deno-fmt.ts .llm/tools/run-deno-lint.ts — pass.
  • run-deno-fmt.ts --file AGENTS.md --file .llm/tools/run-deno-fmt.ts --file .llm/tools/run-deno-lint.ts --file .llm/tools/README.md --pretty — pass (filesSelected: 4, findings: 0).
  • run-deno-lint.ts --file .llm/tools/run-deno-fmt.ts --file .llm/tools/run-deno-lint.ts --pretty — pass (uniqueOccurrences: 0).

Harness Mapping

  • Fixes the validation-process issue discovered during final 2a gates: broad root fmt validation can mutate or scan unrelated files.
  • Gives future implementation/evaluator sessions scoped lint/fmt tools analogous to the existing Deno check parser.

@rickylabs

Copy link
Copy Markdown
Owner Author

@copilot

Use harness, run evaluator pass of this implementation.

If surface of corrections is not too consequent proceed to fix them first then give final verdict.

@rickylabs

Copy link
Copy Markdown
Owner Author

Commit df5be37 — fix(telemetry): use type-only imports for lint

Scope

  • packages/telemetry/src/instrumentation/sse.ts
  • packages/telemetry/src/orpc/error-plugin.ts

Changes

  • Converted a telemetry context import to import type.
  • Split ValidationError into a type-only oRPC import while keeping ORPCError as a runtime import.

Gate Evidence

  • Scoped changed-file lint: PASS (filesSelected: 56, totalOccurrences: 0).
  • Telemetry doc lint: PASS (Checked 8 files).
  • Telemetry JSR dry-run: PASS (Success Dry run complete).

Notes

  • This closes the last scoped lint findings introduced by the 2a touched telemetry surface.

Copilot AI commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

@copilot

Use harness, run evaluator pass of this implementation.
...

Ran the IMPL-EVAL (final evaluator pass) for Sub-wave 2a (logger · telemetry · aspire). Installed deno 2.8.2 and independently re-ran every static + fitness gate.

Verdict: PASS — written to .llm/tmp/run/feat-package-quality-wave2-adapters--adapters/evaluate.md.

Gates re-verified independently:

  • doc-lint clean on all export entrypoints (logger 3, telemetry 8, aspire 8 files)
  • publish dry-run Success, 0 slow types (all three)
  • check + tests pass (logger 11, telemetry 12, aspire 18/49 steps)
  • READMEs 203/233/369 (≥150); /docs present
  • telemetry full-export doc-lint escalation resolved within the locked slice shape (168→0), no rescope

Small corrections were within reach, so I fixed them before the verdict (per your instruction):

  • aspire: pinned @std/assert import specifier in two runtime tests to clear deno lint (32d8894)
  • closed the aspire-helpers-subpath-shim arch-debt entry with evidence (./helpers removed, zero consumers)
  • refreshed the lagging run artifacts (worklog.md/commits.md/drift.md) to record slices 4–9 and the resolved escalation

(telemetry's two verbatim-module-syntax lint errors were already fixed upstream in df5be37.)

Note: this verdict covers 2a only — 2b (data) and 2c (messaging) are separate branches/PRs with their own Plan-Gate and IMPL-EVAL passes.

@rickylabs

Copy link
Copy Markdown
Owner Author

Commit 32d8894 — fix(aspire): pin @std/assert in tests for lint gate

Scope

  • packages/aspire/tests/runtime/aspire-ns-plugin-contribution_test.ts
  • packages/aspire/tests/runtime/contribution-registry_test.ts

Changes

  • Pinned runtime test imports from jsr:@std/assert to the workspace-consistent versioned specifier.

Gate Evidence

  • Aspire package lint gate is clean in the evaluator re-run.
  • Aspire test suite remains green in the evaluator re-run.

Notes

  • This resolves the residual no-unversioned-import lint findings for the 2a Aspire surface.

@rickylabs

Copy link
Copy Markdown
Owner Author

Commit 665f49e — docs(harness): 2a IMPL-EVAL PASS verdict + refresh run artifacts

Scope

  • .llm/tmp/run/feat-package-quality-wave2-adapters--adapters/{evaluate.md,worklog.md,commits.md,drift.md}
  • .llm/harness/debt/arch-debt.md

Changes

  • Recorded the separate-session IMPL-EVAL verdict for Sub-wave 2a.
  • Refreshed run artifacts with final slice evidence and commit tracking.
  • Closed the Aspire ./helpers debt entry with slice evidence.

Gate Evidence

  • IMPL-EVAL verdict: PASS.
  • Evaluator independently reran doc-lint, publish dry-run, package lint/fmt, typecheck, tests, A2 fitness gates, and consumer validation for logger, telemetry, and Aspire.

Notes

  • Scope remains Sub-wave 2a only. 2b and 2c are still separate follow-up branches/runs.

@rickylabs
rickylabs marked this pull request as ready for review June 7, 2026 01:08
@augmentcode

augmentcode Bot commented Jun 7, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR completes Wave 2a “package quality” work for the observability/host packages (logger, telemetry, aspire), plus updates harness evidence and adds scoped tooling for targeted validation.

Changes:

  • Added a full packages/logger/docs documentation tree and runnable docs-example tests.
  • Extended @netscript/logger package hygiene with lint, fmt, and publish:dry-run tasks and included docs in the publish allowlist.
  • Refactored @netscript/telemetry to expose local documented public contracts and reduce upstream OpenTelemetry type leakage, with doc-lint clean across all export entrypoints.
  • Refined @netscript/aspire public schema/config surface, added a portable test fixture for appsettings.json, and removed the ./helpers export in favor of ./application.
  • Added scoped Deno lint/fmt runners under .llm/tools/ and documented their preferred usage in AGENTS.md / .llm/tools/README.md.
  • Updated harness run artifacts (plan/eval/drift/worklog) and closed the Aspire helpers shim debt entry with evidence.

Technical Notes: Telemetry/aspire updates focus on doc-lint/publish-readiness without widening runtime behavior, and the new scoped tools emit JSON summaries to support harnessed validation.

🤖 Was this summary useful? React with 👍 or 👎

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 5 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

Comment thread .llm/tools/run-deno-fmt.ts Outdated
}

async function collectRoot(root: string, options: Options, output: Set<string>): Promise<void> {
const absolute = await Deno.realPath(root).catch(() => root);

@augmentcode augmentcode Bot Jun 7, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At .llm/tools/run-deno-fmt.ts:194, --cwd is only applied to the deno fmt subprocess, but file discovery (Deno.realPath/Deno.stat/Deno.readDir) still resolves paths relative to the process CWD. This makes --cwd potentially select the wrong files (or fail to find them) when the caller expects roots/files to be interpreted from the provided working directory.

Severity: medium

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Comment thread .llm/tools/run-deno-lint.ts Outdated
}

async function collectRoot(root: string, options: Options, output: Set<string>): Promise<void> {
const absolute = await Deno.realPath(root).catch(() => root);

@augmentcode augmentcode Bot Jun 7, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At .llm/tools/run-deno-lint.ts:214, --cwd is passed to the deno lint command but the file selection logic (Deno.realPath/Deno.stat/Deno.readDir) still resolves relative to the process CWD. If --cwd is used, this can lint an unintended file set or error out because roots/files are interpreted from a different directory than the lint subprocess.

Severity: medium

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

"triggers-api",
"streams"
],
"WatchDirs": ["//YOGA_BOOK_9I/netscript-incoming"],

@augmentcode augmentcode Bot Jun 7, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At packages/aspire/tests/_fixtures/appsettings.json:197, the fixture includes a machine-specific WatchDirs value ("//YOGA_BOOK_9I/netscript-incoming"). Even if tests only parse this file, committing a host-specific path can leak local environment details and makes the fixture less portable for other contributors/CI.

Severity: medium

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Comment thread packages/telemetry/src/core/types.ts Outdated
| string
| number
| boolean
| Array<string | null | undefined>

@augmentcode augmentcode Bot Jun 7, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At packages/telemetry/src/core/types.ts:12-14, AttributeValue allows arrays containing null/undefined, but OpenTelemetry attribute values are typically limited to primitive arrays (string/number/boolean). This public contract may encourage callers to send invalid attribute payloads that upstream OTEL drops or refuses to record, leading to silent telemetry loss.

Severity: medium

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

*/
export function contextWithSpan(span: Span, parentContext?: Context): Context {
return trace.setSpan(parentContext ?? context.active(), span);
return trace.setSpan(parentContext ?? context.active(), span as OtelSpan);

@augmentcode augmentcode Bot Jun 7, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At packages/telemetry/src/context/helpers.ts:22, contextWithSpan casts the exported Span interface to an @opentelemetry/api span (span as OtelSpan) before calling trace.setSpan. Since Span is a public structural type, a consumer could pass a non-OTEL implementation that type-checks but yields an invalid OTEL context at runtime.

Severity: low

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

@rickylabs

Copy link
Copy Markdown
Owner Author

@copilot fix all issues that are legitimate raised by augment then reply to the comment to summarize your fixes

Review completed. 5 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 3 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

Comment thread packages/aspire/config.ts
Tools: z.record(z.string(), ToolEntryZod).default({}),
}).meta({ title: 'NetScriptConfig', description: 'Root NetScript application configuration' });
/** Root NetScript configuration schema. */
export const NetScriptConfigSchema: AspireSchema<NetScriptConfig> = NetScriptConfigZod;

@augmentcode augmentcode Bot Jun 7, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At packages/aspire/config.ts:487, exporting NetScriptConfigSchema (and the other *Schema constants) as the narrowed AspireSchema<...> type removes Zod object APIs like .extend() from the public type surface, so the README’s schema-composition example won’t type-check for consumers. Consider whether the published contract should preserve Zod’s schema-composition methods (or the docs should be updated to reflect the narrowed contract).

Severity: medium

Other Locations
  • packages/aspire/config.ts:511
  • packages/aspire/README.md:169

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Comment thread packages/aspire/types.ts
ToolEntry as ToolEntryConfig,
} from './config.ts';

// --- Base Types (z.infer<> derived) ---

@augmentcode augmentcode Bot Jun 7, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At packages/aspire/types.ts:38, the section header and module docs still describe these as z.infer<>-derived types, but the file now aliases exported interfaces from config.ts instead. This mismatch can confuse consumers and makes it unclear whether the package intends schema-derived typing or explicit public contracts.

Severity: low

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Comment thread .llm/tools/run-deno-fmt.ts Outdated
}

function relativePath(cwd: string, path: string): string {
return normalizePath(path.startsWith(cwd) ? path.slice(cwd.length).replace(/^[/\\]/, '') : path);

@augmentcode augmentcode Bot Jun 7, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At .llm/tools/run-deno-fmt.ts:175, relativePath() uses path.startsWith(cwd) without a path-separator boundary check, so a path like ${cwd}X/... would be incorrectly treated as inside cwd and sliced into an invalid relative path. That can lead to selecting/linting the wrong files in edge cases where directory names share prefixes.

Severity: low

Other Locations
  • .llm/tools/run-deno-lint.ts:195

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Copilot AI commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

@copilot fix all issues that are legitimate raised by augment then reply to the comment to summarize your fixes

Review completed. 5 suggestions posted.
...

Addressed the legitimate Augment findings in 1e923e2, with follow-up hardening in 4d673ac and 08a685f:

  • --cwd now applies consistently to scoped fmt/lint file discovery and subprocess execution.
  • The Aspire fixture no longer contains a machine-specific WatchDirs path.
  • Telemetry AttributeValue arrays are restricted to primitive arrays.
  • contextWithSpan validates the span shape before inserting it into OpenTelemetry context.

Validation passed for targeted checks/tests, telemetry doc-lint + publish dry-run, Aspire lint/tests + publish dry-run, and scoped runner --cwd smoke checks.

@rickylabs
rickylabs merged commit 698d890 into feat/package-quality Jun 7, 2026
@rickylabs
rickylabs deleted the feat/package-quality-wave2-adapters-2a branch June 22, 2026 21:34
rickylabs added a commit that referenced this pull request Jul 11, 2026
 #8 #9 #10 #15)

- reference/ai: explicit note that AI provider keys have no typed config
  surface; raw Deno.env.get is the supported path (#8).
- reference/queue + reference/kv: See-it-live link blocks to the queue-kv-cron
  how-to and data-persistence concept page (#9).
- reference/contracts + reference/sdk: showcase sentence per lede — contracts
  obviate manual req.json() validation; defineServices() wires the whole typed
  stack in one call (#10).
- durable-workflows/streams: one sentence reframing no in-process subscribe()
  as an intentional single HTTP/SSE surface (#15).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VifzAytcxBk5odEMaCXihM
rickylabs added a commit that referenced this pull request Jul 11, 2026
…-tos, auth example (#686)

* docs: clarify PORT/typed-config relationship across 8 pages (#660 #7)

Aspire injects PORT at runtime; netscript.config.ts services.<name>.port
(apps.<name>.port for Fresh apps) is the typed source of truth the scaffold
wires as the fallback default. One shared sentence at each first parseInt
occurrence so the raw-env read no longer reads as the canonical pattern.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VifzAytcxBk5odEMaCXihM

* docs: reference showcase ledes, see-it-live links, streams framing (#660 #8 #9 #10 #15)

- reference/ai: explicit note that AI provider keys have no typed config
  surface; raw Deno.env.get is the supported path (#8).
- reference/queue + reference/kv: See-it-live link blocks to the queue-kv-cron
  how-to and data-persistence concept page (#9).
- reference/contracts + reference/sdk: showcase sentence per lede — contracts
  obviate manual req.json() validation; defineServices() wires the whole typed
  stack in one call (#10).
- durable-workflows/streams: one sentence reframing no in-process subscribe()
  as an intentional single HTTP/SSE surface (#15).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VifzAytcxBk5odEMaCXihM

* docs: add runnable end-to-end blocks to three decision how-tos (#660 #11)

discover-services, choose-a-queue-provider, and add-a-task-runtime-adapter
each gain one copy-pasteable end-to-end block (resulting file + full command
sequence) at deploy-local-aspire density, demonstrating the pluggability the
pages previously only asserted. All commands/APIs grounded in package source.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VifzAytcxBk5odEMaCXihM

* docs: add complete route-protection example to better-auth-plugins (#660 #12)

A real Fresh routes/*.tsx handler gated on an active session and an admin role,
at sibling auth.md's depth: resolves the session via backend.sessions.getSession,
maps to a Principal with principalMapper, and fails closed on both checks.
Grounded in packages/auth-better-auth + @netscript/service/auth exports.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VifzAytcxBk5odEMaCXihM

* chore(run): docs-660b sweep worklog (#660)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VifzAytcxBk5odEMaCXihM

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants