Skip to content

Framework and Northstar audit - 2026-09-23

Conclusion: conceptually well aligned, operationally blocked. The framework follows the vocabulary and responsibility boundaries of Developing-in-Agentic-AI-Systems-Learning-Paths.md. The reference has substantial implementation and application evidence, but green existing tests do not establish evidence integrity, cross-host operation, or hosted acceptance. The guide was not changed to excuse defects.

Item Result
Framework starting revision 9c8be3c (documentation-site baseline); audit changes are additional
Guide canonical-text SHA-256 c247b45ed53bb7b901954611c3bc03a37294d9adfb02a6542d71522f694f62be
Northstar revision/branch b65c2de5c8224342c72c37eeed7ef9f965ad8a2c, main; known defective, not an accepted release
Scope inspected Framework documents and executable scripts; all 35 Northstar runtime .mjs scripts, relevant policies/workflows/hooks/agents/application/tests; declaration files covered by typecheck, not all manually reviewed
npm run validate Passed: instruction sync, offline governance 77 checks, lint, typecheck, build, 220 unit tests
npm run validate:all Exit 0, not clean validation: 220 unit + 8 PostgreSQL acceptance tests passed; Poutine printed 5 errors despite overall zero exit
Dependency audit 2 moderate Vitest/@vitest/mocker findings, GHSA-82fw-gwwq-j7x9; configured high threshold did not fail
Other scanners Supplemental secret scan passed, 146 files; gh-aw v0.81.6 compiled with 0 errors/warnings; zizmor 1.30.0 reported 0 findings and 81 suppressed, offline
npm run demo:system Emitted ready_for_review, 6/6 criteria; fixture-based local output, not approval or an independent proof of the flawed evidence validator
PostgreSQL boundary Existing 8 acceptance tests use two services/Fastify inject in one Node process against real PostgreSQL
Additional process proof Separate local server PIDs 52104 and 51688, HTTP requests sharing PostgreSQL: 12 concurrent same-key calls, one 201 and eleven 200 replays, one order ID; changed payload 409; no-key calls distinct; replay survived replacement PID 57612
Snapshot 117 canonical-text files match exact b65c2de revision; inspection only

The additional process proof was an audit harness outside Northstar, not a new committed acceptance test, hosted evidence, or implementation change. An initial six-second cold-start deadline failed; the thirty-second deadline completed with readiness checks and explicit child-process cleanup.

Guide locations refer to the unchanged snapshot. Defects are not legalized by listing them as extensions. Detailed conformance is in GUIDE-CONFORMANCE.md.

Finding Guide basis / extension Evidence and consequence
Live task bootstrap and freshness Task contracts and durable source of truth, 553-624, 3088-3439; EXT-001, EXT-018 Real cloud plan lacked cache; second local plan saw another task’s cache. Both agents correctly refused. Resolver failure paths can retain stale authority.
Host isolation and edit paths Least privilege/hooks, 1145-1183, 1748-1836; EXT-003, EXT-004 Observed cloud branch is rejected by local-only naming policy; authorized absolute in-repo path is rejected. Complete host payload support is unproved.
Risk and workflow-choice mismatch Risk-based autonomy / plan-first versus plan + execution, 635-867, 3835-3967; EXT-002, EXT-003 docs/example.md classified medium because catch-all ** rule wins by maximum. Authorizer still requires approved plan/branch for all edits. Lower-risk claims overstate implementation.
Missing artifact can pass readiness System signals, outputs/artifacts, 1016-1094, 2708-2816; EXT-006 Synthetic passing envelopes referencing nonexistent files produced ready_for_review through null === null digests. Probes were in-memory test inputs, not authority.
Stop and recovery Bounded retries/escalation, 2834-2881, 4432-4447; EXT-006, EXT-010 Stop ignores evidence-command failure and can read old report; JSON load is treated as plan validity. Repair-budget helper exists but is not integrated into the Stop loop.
Audit accuracy and diagnostics Post-action/error observability, 1145-1183; EXT-005 Failure event without explicit error fields logged success; malformed JSON diagnostic echoed a synthetic private marker.
Scanner result integrity Security/system evidence, 1127-1145, 4038-4048; EXT-011, EXT-015 SARIF {} passed as zero findings; unreadable secret-scan inputs skipped; Poutine errors failed to propagate; zizmor uses latest and covers only generated workflow.
Hosted governance unavailable Rulesets or branch protection, continuous governance, 3998-4307, 4412-4457; EXT-009 Real governance artifact says unavailable because GH_TOKEN missing; online evaluator requires both alternative mechanisms; optional feature files are mandatory in offline audit.
Incomplete identity/pagination handling Durable attributable evidence, 2708-2816; EXT-006, EXT-007 Evidence-comment discovery is first-page/marker-based without author validation; review/PR lookups also need pagination review. No observed impersonation is claimed.

Other evidence-quality concerns: base SHA/run attempt are recorded but not fully compared during fan-in; HEAD alone does not attest a dirty working tree; JUnit regex parsing and test-name-to-criterion mapping require stricter negative cases. Acceptance teardown obscures initial database setup failure when the harness was never created. These are repair requirements, not reported fixes.

The earlier terminology, workflow-syntax, and artifact-handoff repairs merged: webmaxru/northstar-orders-api-demo#7, webmaxru/northstar-orders-api-demo#10, webmaxru/northstar-orders-api-demo#12. The old assertion that GitHub cannot parse the workflow is no longer current.

Hosted evidence Observation
Governed Change run 33997954356, head a9f6e86ff64a77389d562eaed6a706dd1c638009 Jobs started; quality, acceptance, CodeQL, dependency, scope and other jobs passed; repository-controls, human-review, plan-approval and evidence failed
Governance Review run 35610027135, b65c2de Downloaded artifact governance-review ID 10643307594: online.available=false, ready=false, zero online checks; missing GH_TOKEN
Daily Repository Status run 35799033646 Agent job failed; configured model invalid/unavailable for engine/account
Cloud WI-1842 rehearsal Completed session, blocked task: no live contract cache, no plan/implementation/acceptance

Protected environments, App identity/permissions, rules, secret scanning, push protection, and trusted acceptance remain unverified. A successful workflow job or merged PR is not proof of those settings.

All names below are Northstar scripts/*.mjs. Each runtime file was read; grouping does not mean each behavior was exercised in every host.

Scripts Assessment / needed work
task-contract, fetch-task-contract, resolve-task, session-start, resolve-pr-task, resolve-workflow-pr Explicit contracts/digests and fixture separation are sound; clear stale caches, test actual host bootstrap and paginated PR/task resolution
plan-contract, plan-approval, fetch-approved-plan, check-plan, plan-stop, publish-plan Useful schema/digest/approval separation; preserve read-only planner; prove transcript/Stop compatibility and paginated latest-head approval handling
risk-policy, authorize-tool, check-scope Good layered intent; correct catch-all precedence, path/payload normalization, cloud isolation and risk-specific execution semantics
audit-hook, agent-stop, repair-budget Minimized records and bounded helper are useful; fix failure classification, payload echo, stale report reuse and actual retry integration
evidence-record, build-execution-report, import-evidence-artifacts, import-workflow-results Strong provenance schema; reject missing/null artifacts, mismatched base/attempt and dirty-source claims; strengthen parser cases
check-human-review, check-merge, check-validation-authority, maintenance-manifest, verify-maintenance-runs Preserve independent latest-head review and trusted maintenance boundary; full hosted proof remains missing
publish-evidence, publish-acceptance-status Keep trusted publication; paginate and verify comment author as well as marker
governance-audit, check-sarif, secret-scan, run-zizmor Fix live auth/alternative controls, SARIF validation, unreadable inputs, scanner pinning/coverage and failure propagation
sync-agent-instructions, system-demo Single-source instructions and explicit fixture mode are useful; demo is not live authority and does not itself run the separately documented hostile-hook call

Framework fixes in this change: tools/verify-architecture.ps1 recognizes the existing ordinary docs.yml publisher without allowing other workflows, ignores generated/dependency Markdown using Git enumeration, and retains blocked-release enforcement. Seven regression tests cover those boundaries. docs-site/scripts/sync-docs.mjs now preserves nested document routes, resolves links by path, rejects collisions/overlapping roots before deletion, and reports watcher errors without poisoning later sync attempts. Four regression tests cover generation; an Astro production build also ran. tools/verify-reference.ps1 retains exact source verification.

Only target-specific settings are customizable. Schema semantics, trust checks, evidence requirements and approval boundaries are not convenience switches.

Surface Mark/customize Do not silently change
Framework verifiers Adjacent CUSTOMIZE comments identify checkout location Locked identity/hash or blocked conformance
Documentation generator/config Adjacent CUSTOMIZE comments identify authored/generated roots, Pages origin/base, branding/repository link Source-authority boundary or collision checks
Northstar governance policy Paths, commands, owners, checks, retention, risk patterns, App/environment IDs Fail-closed behavior, approval identity, guide alternatives
Hooks/agents/prompts Runtime invocation, host payload adaptation, context paths and selected tool names Role capability boundaries and task/plan binding
Workflows/scanners Supported pinned versions, model/budget, runner, triggers, database port, artifact retention Least privilege, safe-output limits, scanner failure or independent acceptance
Application demo Fictional SKU/key, local port/database endpoint, selected acceptance criteria Durable idempotency invariant or privacy claims

Northstar adjacent comments remain pending the approved repair. JSON cannot contain JavaScript comments: use schema-supported $comment only where accepted, otherwise an adjacent documented field map. Do not hand-edit the snapshot to add comments absent from its exact reference source.

Created webmaxru/northstar-orders-api-demo#14, AES-SURFACE-EVIDENCE, with scope, constraints, eleven proving criteria and explicit approval stop. Runtime/control-plane repairs are high-risk validation-authority changes. The audit request and unattended continuation are not an independent approval of a digest-bound plan-only commit.

No Northstar implementation was changed. Required next evidence is a reviewed machine plan, focused negative tests for these defects, clean full validation, committed process-boundary coverage, host canaries, protected maintenance, and real trusted hosted acceptance. Until then both locks remain blocked. This audit is not an exhaustive security certification.