ultra-builder-pro-cli 5.0.1 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +103 -3
- package/README.md +67 -478
- package/README.zh-CN.md +49 -422
- package/adapters/_shared/frontmatter.cjs +1 -18
- package/adapters/_shared/plugin-core.cjs +17 -83
- package/adapters/_shared/runtime-assets.cjs +6 -120
- package/adapters/claude.js +8 -24
- package/adapters/codex.js +13 -32
- package/bin/install.js +35 -57
- package/docs/PLUGIN-ISOLATION-CONTRACT.md +13 -101
- package/docs/examples/drive/claude-reviewer.sh +53 -0
- package/docs/examples/drive/claude-writer.sh +43 -0
- package/engine/FORMATS.md +1051 -0
- package/engine/checks.cjs +139 -0
- package/engine/cli.cjs +148 -0
- package/engine/completion.cjs +48 -0
- package/engine/context.cjs +94 -0
- package/engine/drive.cjs +220 -0
- package/engine/expect-worker.cjs +5 -0
- package/engine/expect.cjs +33 -0
- package/engine/formats.cjs +189 -0
- package/engine/git-state.cjs +112 -0
- package/engine/ledger.cjs +205 -0
- package/engine/loading.cjs +28 -0
- package/engine/merge.cjs +273 -0
- package/engine/milestone.cjs +89 -0
- package/engine/plan.cjs +232 -0
- package/engine/project.cjs +5 -0
- package/engine/signals.cjs +3 -0
- package/engine/states.cjs +175 -0
- package/hooks/session-start.cjs +54 -0
- package/package.json +17 -52
- package/skills/ultra/SKILL.md +395 -0
- package/.ultra-template/changes/abandoned/.gitkeep +0 -0
- package/.ultra-template/changes/active/.gitkeep +0 -1
- package/.ultra-template/changes/archive/.gitkeep +0 -1
- package/.ultra-template/contexts/TEMPLATE.md +0 -135
- package/.ultra-template/decisions/.gitkeep +0 -1
- package/.ultra-template/evidence/.gitkeep +0 -1
- package/.ultra-template/north-star.md +0 -52
- package/.ultra-template/project-brief.md +0 -28
- package/.ultra-template/research/.gitkeep +0 -1
- package/.ultra-template/specs/architecture.md +0 -81
- package/.ultra-template/specs/discovery.md +0 -74
- package/.ultra-template/specs/product.md +0 -80
- package/.ultra-template/specs/research-distillate.md +0 -57
- package/.ultra-template/tasks.json +0 -4
- package/.ultra-template/test-report.json +0 -44
- package/adapters/_shared/host-profile.cjs +0 -5
- package/adapters/grok.js +0 -242
- package/adapters/kimi.js +0 -232
- package/adapters/opencode.js +0 -408
- package/adapters/zcode.js +0 -375
- package/bin/delegate-worker.cjs +0 -5
- package/bin/delegate.cjs +0 -5
- package/docs/ARCHITECTURE.md +0 -274
- package/docs/ARTIFACT-AUTHORITY.md +0 -305
- package/docs/DECISIONS.md +0 -229
- package/docs/PHILOSOPHY.md +0 -261
- package/docs/RUNTIME-COMPAT-MATRIX.md +0 -316
- package/docs/SKILL-AUTHORING.md +0 -113
- package/docs/WORKFLOW-LIFECYCLE.md +0 -350
- package/docs/evals/adversarial-review-2026-08-14.md +0 -84
- package/docs/evals/ultra-5-0-journey-results.md +0 -62
- package/docs/evals/ultra-5-0-live-acp-conformance.md +0 -93
- package/docs/evals/ultra-5-0-route-journeys.md +0 -145
- package/docs/evals/zcode-automation-2026-08-14.md +0 -103
- package/hooks/README.md +0 -52
- package/hooks/_common.py +0 -1779
- package/hooks/adapters/codex.py +0 -295
- package/hooks/adapters/grok.py +0 -134
- package/hooks/adapters/kimi.py +0 -156
- package/hooks/adapters/zcode.py +0 -227
- package/hooks/block_dangerous_commands.py +0 -201
- package/hooks/compact_context.py +0 -224
- package/hooks/mid_workflow_recall.py +0 -47
- package/hooks/post_edit_guard.py +0 -215
- package/hooks/session_context.py +0 -741
- package/skills/ultra-change/SKILL.md +0 -165
- package/skills/ultra-change/references/change-contract.md +0 -199
- package/skills/ultra-change/references/execution-grant.md +0 -109
- package/skills/ultra-change/references/primary-transfer.md +0 -273
- package/skills/ultra-change/scripts/validate_primary_transfer.cjs +0 -1928
- package/skills/ultra-delegate/SKILL.md +0 -195
- package/skills/ultra-delegate/patches/zcode-acp-0.1.0-zcode-0.16.5.patch +0 -184
- package/skills/ultra-delegate/references/delegation-contract.md +0 -138
- package/skills/ultra-delegate/scripts/acp-conformance.cjs +0 -287
- package/skills/ultra-delegate/scripts/acp-driver.cjs +0 -762
- package/skills/ultra-delegate/scripts/agent-execution-driver.cjs +0 -320
- package/skills/ultra-delegate/scripts/cli-driver.cjs +0 -61
- package/skills/ultra-delegate/scripts/delegate-profiles/kimi-read-only.md +0 -15
- package/skills/ultra-delegate/scripts/delegate-profiles/kimi-write.md +0 -17
- package/skills/ultra-delegate/scripts/delegate-worker.cjs +0 -328
- package/skills/ultra-delegate/scripts/delegate.cjs +0 -690
- package/skills/ultra-delegate/scripts/delegate_wait.py +0 -86
- package/skills/ultra-delegate/scripts/host-profile.cjs +0 -267
- package/skills/ultra-deliver/SKILL.md +0 -194
- package/skills/ultra-deliver/references/baseline-reconciliation.md +0 -41
- package/skills/ultra-dev/SKILL.md +0 -265
- package/skills/ultra-dev/references/debugging.md +0 -22
- package/skills/ultra-domain-modeling/SKILL.md +0 -79
- package/skills/ultra-grilling/SKILL.md +0 -121
- package/skills/ultra-grilling/references/reframing.md +0 -76
- package/skills/ultra-init/SKILL.md +0 -143
- package/skills/ultra-init/references/brownfield-adoption.md +0 -32
- package/skills/ultra-init/scripts/init_project.cjs +0 -1031
- package/skills/ultra-plan/SKILL.md +0 -160
- package/skills/ultra-plan/references/task-evidence-v2.md +0 -300
- package/skills/ultra-plan/scripts/validate_task_evidence.cjs +0 -859
- package/skills/ultra-research/SKILL.md +0 -167
- package/skills/ultra-research/references/00-problem-validation.md +0 -36
- package/skills/ultra-research/references/01-opportunity-discovery.md +0 -33
- package/skills/ultra-research/references/02-market-assessment.md +0 -31
- package/skills/ultra-research/references/03-alternatives.md +0 -31
- package/skills/ultra-research/references/04-product-strategy.md +0 -41
- package/skills/ultra-research/references/05-assumptions-validation.md +0 -31
- package/skills/ultra-research/references/10-user-personas.md +0 -30
- package/skills/ultra-research/references/11-user-scenarios.md +0 -28
- package/skills/ultra-research/references/20-user-stories.md +0 -31
- package/skills/ultra-research/references/21-features-scope.md +0 -38
- package/skills/ultra-research/references/22-success-metrics.md +0 -33
- package/skills/ultra-research/references/30-architecture-context.md +0 -30
- package/skills/ultra-research/references/31-solution-strategy.md +0 -28
- package/skills/ultra-research/references/32-building-blocks.md +0 -28
- package/skills/ultra-research/references/40-deployment.md +0 -29
- package/skills/ultra-research/references/41-quality-risks.md +0 -28
- package/skills/ultra-research/references/99-synthesis.md +0 -59
- package/skills/ultra-research/references/north-star-v2.md +0 -168
- package/skills/ultra-research/references/wayfinding.md +0 -50
- package/skills/ultra-research/scripts/validate_north_star.cjs +0 -1174
- package/skills/ultra-review/SKILL.md +0 -275
- package/skills/ultra-review/references/adversarial-evaluation.md +0 -31
- package/skills/ultra-review/references/code.md +0 -17
- package/skills/ultra-review/references/comments.md +0 -12
- package/skills/ultra-review/references/design.md +0 -12
- package/skills/ultra-review/references/errors.md +0 -13
- package/skills/ultra-review/references/review-modes.md +0 -29
- package/skills/ultra-review/references/spec.md +0 -18
- package/skills/ultra-review/references/tests.md +0 -12
- package/skills/ultra-review/references/unified-schema.md +0 -284
- package/skills/ultra-review/references/worker-packet.md +0 -183
- package/skills/ultra-review/scripts/review_wait.py +0 -2943
- package/skills/ultra-status/SKILL.md +0 -209
- package/skills/ultra-status/references/route-contract.md +0 -100
- package/skills/ultra-tdd/SKILL.md +0 -91
- package/skills/ultra-tdd/references/templates/README.md +0 -20
- package/skills/ultra-tdd/references/templates/feature-flag-default-audit.sh +0 -79
- package/skills/ultra-tdd/references/templates/persistence-real.ts +0 -78
- package/skills/ultra-tdd/references/templates/testcontainer-postgres.py +0 -78
- package/skills/ultra-tdd/references/templates/testcontainer-postgres.ts +0 -73
- package/skills/ultra-tdd/references/templates/vertical-slice.ts +0 -66
- package/skills/ultra-tdd/references/test-execution.md +0 -23
- package/skills/ultra-test/SKILL.md +0 -244
- package/skills/ultra-test/references/export-syntax.md +0 -18
- package/skills/ultra-test/scripts/validate_review_transport.cjs +0 -549
- package/skills/ultra-test/scripts/worktree_digest.cjs +0 -576
- package/skills/ultra-think/SKILL.md +0 -56
- package/skills/ultra-think/references/autonomy-boundary.md +0 -48
- package/skills/ultra-think/references/interaction-boundary.md +0 -42
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Testcontainer-Postgres starter (TypeScript / vitest or jest)
|
|
3
|
-
*
|
|
4
|
-
* Why this exists: Real DB in tests catches migration drift, schema bugs, and
|
|
5
|
-
* concurrency issues that mocked Repositories silently miss. Prefer this to
|
|
6
|
-
* `jest.fn()` / `vi.fn()` for any Repository or Service that touches data.
|
|
7
|
-
*
|
|
8
|
-
* Required deps:
|
|
9
|
-
* pnpm add -D @testcontainers/postgresql pg
|
|
10
|
-
*
|
|
11
|
-
* Verify:
|
|
12
|
-
* pnpm vitest run src/repo/__tests__/userRepo.testcontainer.test.ts
|
|
13
|
-
*
|
|
14
|
-
* PHILOSOPHY: enables C2 (Enabling > Defensive) — the cheaper path becomes the
|
|
15
|
-
* right path, so agents stop reaching for mocks under pressure.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
import { PostgreSqlContainer, StartedPostgreSqlContainer } from '@testcontainers/postgresql';
|
|
19
|
-
import { Pool } from 'pg';
|
|
20
|
-
import { afterAll, beforeAll, beforeEach, describe, expect, test } from 'vitest';
|
|
21
|
-
|
|
22
|
-
let container: StartedPostgreSqlContainer;
|
|
23
|
-
let pool: Pool;
|
|
24
|
-
|
|
25
|
-
beforeAll(async () => {
|
|
26
|
-
container = await new PostgreSqlContainer('postgres:16-alpine').start();
|
|
27
|
-
pool = new Pool({ connectionString: container.getConnectionUri() });
|
|
28
|
-
// Replace with your migration runner (drizzle/prisma/knex/raw SQL)
|
|
29
|
-
await pool.query(`
|
|
30
|
-
CREATE TABLE users (
|
|
31
|
-
id SERIAL PRIMARY KEY,
|
|
32
|
-
email TEXT UNIQUE NOT NULL,
|
|
33
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
34
|
-
);
|
|
35
|
-
`);
|
|
36
|
-
}, 60_000); // pulling postgres image can be slow on first run
|
|
37
|
-
|
|
38
|
-
afterAll(async () => {
|
|
39
|
-
await pool.end();
|
|
40
|
-
await container.stop();
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
beforeEach(async () => {
|
|
44
|
-
// Reset between tests so each is independent
|
|
45
|
-
await pool.query('TRUNCATE users RESTART IDENTITY CASCADE');
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
describe('UserRepo (real Postgres)', () => {
|
|
49
|
-
test('insert and fetch round-trips', async () => {
|
|
50
|
-
// Replace with your actual Repository
|
|
51
|
-
const repo = makeUserRepo(pool);
|
|
52
|
-
const created = await repo.create({ email: 'a@example.com' });
|
|
53
|
-
const found = await repo.findById(created.id);
|
|
54
|
-
expect(found).toEqual(created);
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
// Drop your real Repository factory here
|
|
59
|
-
function makeUserRepo(pool: Pool) {
|
|
60
|
-
return {
|
|
61
|
-
async create(input: { email: string }) {
|
|
62
|
-
const { rows } = await pool.query(
|
|
63
|
-
'INSERT INTO users (email) VALUES ($1) RETURNING *',
|
|
64
|
-
[input.email],
|
|
65
|
-
);
|
|
66
|
-
return rows[0];
|
|
67
|
-
},
|
|
68
|
-
async findById(id: number) {
|
|
69
|
-
const { rows } = await pool.query('SELECT * FROM users WHERE id = $1', [id]);
|
|
70
|
-
return rows[0] ?? null;
|
|
71
|
-
},
|
|
72
|
-
};
|
|
73
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Vertical-Slice integration test (TypeScript)
|
|
3
|
-
*
|
|
4
|
-
* Why this exists: proves HTTP entry → use case → domain → DB → response works
|
|
5
|
-
* end-to-end. ONE such test per feature is the difference between "single tasks
|
|
6
|
-
* pass / project doesn't run" (the failure mode v7 was built to fix) and
|
|
7
|
-
* actual deliverable software.
|
|
8
|
-
*
|
|
9
|
-
* Required deps:
|
|
10
|
-
* pnpm add -D supertest @testcontainers/postgresql pg vitest
|
|
11
|
-
*
|
|
12
|
-
* Verify:
|
|
13
|
-
* pnpm vitest run src/__tests__/auth.vertical-slice.test.ts
|
|
14
|
-
*
|
|
15
|
-
* PHILOSOPHY: enables C4 (Incremental Validation) — the `vertical_slice`
|
|
16
|
-
* dimension in progress.json is satisfied by tests like this.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
import { PostgreSqlContainer, StartedPostgreSqlContainer } from '@testcontainers/postgresql';
|
|
20
|
-
import { Pool } from 'pg';
|
|
21
|
-
import request from 'supertest';
|
|
22
|
-
import { afterAll, beforeAll, describe, expect, test } from 'vitest';
|
|
23
|
-
|
|
24
|
-
// Replace with your real app/server factory
|
|
25
|
-
import { buildApp } from '../app';
|
|
26
|
-
|
|
27
|
-
let container: StartedPostgreSqlContainer;
|
|
28
|
-
let pool: Pool;
|
|
29
|
-
let app: ReturnType<typeof buildApp>;
|
|
30
|
-
|
|
31
|
-
beforeAll(async () => {
|
|
32
|
-
container = await new PostgreSqlContainer('postgres:16-alpine').start();
|
|
33
|
-
pool = new Pool({ connectionString: container.getConnectionUri() });
|
|
34
|
-
// Run migrations
|
|
35
|
-
await pool.query(`CREATE TABLE users (id SERIAL PRIMARY KEY, email TEXT UNIQUE)`);
|
|
36
|
-
app = buildApp({ db: pool });
|
|
37
|
-
}, 60_000);
|
|
38
|
-
|
|
39
|
-
afterAll(async () => {
|
|
40
|
-
await pool.end();
|
|
41
|
-
await container.stop();
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
describe('vertical slice: POST /signup', () => {
|
|
45
|
-
test('inserts a row, returns 201, body matches input email', async () => {
|
|
46
|
-
const before = await pool.query('SELECT count(*) FROM users');
|
|
47
|
-
const beforeCount = parseInt(before.rows[0].count, 10);
|
|
48
|
-
|
|
49
|
-
const res = await request(app)
|
|
50
|
-
.post('/signup')
|
|
51
|
-
.send({ email: 'vertical@example.com' })
|
|
52
|
-
.expect(201);
|
|
53
|
-
|
|
54
|
-
// 1. response shape
|
|
55
|
-
expect(res.body.email).toBe('vertical@example.com');
|
|
56
|
-
expect(res.body.id).toBeGreaterThan(0);
|
|
57
|
-
|
|
58
|
-
// 2. real DB write occurred
|
|
59
|
-
const after = await pool.query('SELECT count(*) FROM users');
|
|
60
|
-
expect(parseInt(after.rows[0].count, 10)).toBe(beforeCount + 1);
|
|
61
|
-
|
|
62
|
-
// 3. data is persistable / queryable
|
|
63
|
-
const row = await pool.query('SELECT email FROM users WHERE id = $1', [res.body.id]);
|
|
64
|
-
expect(row.rows[0].email).toBe('vertical@example.com');
|
|
65
|
-
});
|
|
66
|
-
});
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Test execution evidence
|
|
2
|
-
|
|
3
|
-
Resolve the canonical command from package scripts, CI configuration, repository
|
|
4
|
-
guidance, or framework files. When two commands prove different contracts, keep the
|
|
5
|
-
distinction visible instead of choosing the easier one.
|
|
6
|
-
|
|
7
|
-
For every baseline, red, and green run record:
|
|
8
|
-
|
|
9
|
-
- exact command and working directory;
|
|
10
|
-
- start time, duration, and exit code;
|
|
11
|
-
- runner-reported pass, fail, skip, and coverage counts when available;
|
|
12
|
-
- first useful failure with tight source or test location;
|
|
13
|
-
- whether it reproduces and whether it is product, test, environment, or flaky evidence;
|
|
14
|
-
- raw output path under `.ultra/evidence/<task-id>/` and the lowercase SHA-256 of its
|
|
15
|
-
exact bounded stable bytes when the output matters.
|
|
16
|
-
|
|
17
|
-
Do not weaken flags, skip a relevant failure, edit test configuration to obtain green,
|
|
18
|
-
or claim success when the command did not finish with exit zero. A concise evidence
|
|
19
|
-
record may cite the raw log; it must not copy an entire transcript into task context.
|
|
20
|
-
Before citing one, require a repository-contained ordinary regular non-symlink file,
|
|
21
|
-
opened nonblocking and no-follow with an 8 MiB ceiling and unchanged path/descriptor
|
|
22
|
-
identity around the read. Hash that one snapshot; a missing, escaped, special, symlinked,
|
|
23
|
-
oversized, or replaced receipt is a typed evidence gap, not a successful run record.
|
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ultra-test
|
|
3
|
-
description: Audit whole-system integrity after tasks for the active Change are complete by finding anti-patterns, coverage gaps, broken wiring, E2E failures, performance risk, and security risk. Use when preparing delivery or when locally green tasks may not form a working product.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# NOT for running unit tests (that's `ultra-dev`). This audits whole-system integrity before delivery.
|
|
7
|
-
|
|
8
|
-
This is the one end-of-change sensor allowed by PHILOSOPHY C4: an export cannot be
|
|
9
|
-
called orphaned while a later task may still wire it. It is a terminal sensor, never a gate;
|
|
10
|
-
the owner decides what to fix or accept.
|
|
11
|
-
|
|
12
|
-
## Route modes
|
|
13
|
-
|
|
14
|
-
| Mode | Entry | Observable exit | Next |
|
|
15
|
-
|---|---|---|---|
|
|
16
|
-
| `audit` | Explicit invocation or a valid Execution Grant after every matching task has current completion evidence | One current whole-Change report and aggregate review preserve all six audit areas, findings, omissions, identities, and dispositions | Recommend `ultra-deliver/reconcile` when current, or the owner-selected responsible route |
|
|
17
|
-
| `reaudit` | Explicit invocation or a valid Execution Grant after an owner-dispositioned repair invalidates the prior report | A fresh report binds the repaired Change snapshot without hiding earlier findings | Recommend `ultra-deliver/reconcile` when current, or another bounded owner disposition |
|
|
18
|
-
|
|
19
|
-
Follow `../ultra-status/references/route-contract.md`. Show a Route Card at audit entry,
|
|
20
|
-
before asking for finding disposition, and at the report exit. Audit counts and review
|
|
21
|
-
events populate `Position` or `Reality`; they never choose repair, convergence, or risk
|
|
22
|
-
acceptance. Test does not call its own repair route.
|
|
23
|
-
|
|
24
|
-
## Before you start
|
|
25
|
-
|
|
26
|
-
1. If model-selected, verify the live execution grant in `../ultra-change/references/execution-grant.md` — a current session-local activation or a stably verified durable work-package grant; without either, stop.
|
|
27
|
-
2. Read `../ultra-change/references/change-contract.md` and apply its **Active Change
|
|
28
|
-
authority resolution** before reading any active `intent.md` or resolving a current
|
|
29
|
-
`change_id`. This workflow requires its one valid active authority; any zero result
|
|
30
|
-
or typed diagnostic stops before audit input is read until the stated repair or retry
|
|
31
|
-
succeeds. Read `.ultra/tasks.json` and only tasks whose `change_id` matches the active
|
|
32
|
-
Change. Every matching task must be `completed` in that sole task-status authority.
|
|
33
|
-
Read each task's `context_file` Acceptance, Completion, Task Review and closing
|
|
34
|
-
`## Resume Note`.
|
|
35
|
-
Historical tasks are not part of this audit snapshot. For every current Change task,
|
|
36
|
-
require a current `ultra-task-evidence-v2` record whose context, subject, acceptance,
|
|
37
|
-
and task-review bindings satisfy `../ultra-plan/references/task-evidence-v2.md`.
|
|
38
|
-
A legacy context Status or Complexity header and v1 evidence remain migration
|
|
39
|
-
diagnostics only; recommend Dev repair rather than treating them as current Test input.
|
|
40
|
-
3. Read `CONTEXT.md` for vocabulary and the relevant `.ultra/decisions/` entries.
|
|
41
|
-
4. Read the active Change intent, the task evidence directories and the current Git
|
|
42
|
-
`HEAD`; old output is evidence only for the commit it names.
|
|
43
|
-
Resolve Change and task `FP-*`, `NS-*`, and `HC-*` IDs against the accepted North
|
|
44
|
-
Star revision. A stale trace is an explicit finding requiring reconciliation, not a
|
|
45
|
-
silent rewrite or automatic failure verdict.
|
|
46
|
-
5. Resolve this loaded Skill's directory and run
|
|
47
|
-
`node <ultra-test-skill-dir>/scripts/worktree_digest.cjs --project <repository-root> --change-id <change_id>`
|
|
48
|
-
before and after the audit. It returns the stable Change id, exact intent SHA-256,
|
|
49
|
-
HEAD, and product-worktree digest. The product-worktree digest has one fixed boundary:
|
|
50
|
-
it excludes `.ultra/evidence/**`, whose command and external-observation entries bind
|
|
51
|
-
raw bytes as `raw_evidence_sha256` before stable exact record bytes are bound as
|
|
52
|
-
`evidence_digest`. It also excludes the report and
|
|
53
|
-
all active/archive/abandoned Change-directory metadata. Intent freshness is checked
|
|
54
|
-
separately, so publishing or refreshing evidence, writing delivery metadata, or moving
|
|
55
|
-
the same Change cannot self-invalidate its tested product snapshot. Exact task-evidence
|
|
56
|
-
and review-receipt digests remain mandatory through their existing consumers; this is
|
|
57
|
-
not a caller-configurable exclusion. This digest defines the aggregate Change subject
|
|
58
|
-
for the current whole Change; it is distinct from each task's earlier
|
|
59
|
-
completion-snapshot freshness observation.
|
|
60
|
-
|
|
61
|
-
## Definition of done
|
|
62
|
-
|
|
63
|
-
- All six audit areas have an evidence-backed result or an explicit material omission.
|
|
64
|
-
- Wiring lists each changed export and its non-test consumers; zero matches are visible
|
|
65
|
-
as orphan findings.
|
|
66
|
-
- `.ultra/test-report.json` records `change_id`, the exact current-Change `task_ids`,
|
|
67
|
-
`intent_digest`, `git_commit`, commands, findings, omissions and the owner's
|
|
68
|
-
disposition without rewriting a finding into a pass.
|
|
69
|
-
- Every current task's v2 evidence and retained task-review summary is consumed; blocking
|
|
70
|
-
findings, resolutions, disagreements, and refresh references remain attributable.
|
|
71
|
-
- One current aggregate Change review is referenced by session, packet digest, exact
|
|
72
|
-
admission and subject digests, execution mode, coverage, summary path, exact summary
|
|
73
|
-
SHA-256, and verdict.
|
|
74
|
-
- The report names `ultra-review-findings-v4` and copies every review finding unchanged,
|
|
75
|
-
including `north_star_trace.first_principles`, `.serves`, and `.touches`, so each
|
|
76
|
-
finding carries its resolving `FP-*`/`NS-*`/`HC-*` IDs and Deliver can
|
|
77
|
-
test evidence against outcome without copying the North Star prose.
|
|
78
|
-
|
|
79
|
-
## Audit six areas
|
|
80
|
-
|
|
81
|
-
1. **Anti-patterns**: find tautological or empty tests and internal collaborators mocked
|
|
82
|
-
instead of exercising a public seam.
|
|
83
|
-
2. **Coverage gaps**: map changed public behavior to tests and list behavior with no
|
|
84
|
-
exercising test.
|
|
85
|
-
3. **Wiring Verification**: list changed exported symbols, then search each name in
|
|
86
|
-
non-test source. `0 matches = orphan` until a framework registration or generated
|
|
87
|
-
consumer is evidenced. Also trace Component→API, API→DB, Form→Handler and
|
|
88
|
-
State→Render where those boundaries exist.
|
|
89
|
-
4. **E2E**: run the smallest real primary flow through its deployed or local boundary.
|
|
90
|
-
5. **Performance**: measure the paths whose acceptance or risk makes latency, resource
|
|
91
|
-
use or scale material; record why anything else was omitted.
|
|
92
|
-
6. **Security**: run the repository's dependency and security checks, then inspect the
|
|
93
|
-
trust boundaries changed by this Change.
|
|
94
|
-
|
|
95
|
-
The six are independent read-only audits and may run in parallel through the host's
|
|
96
|
-
native bounded subagents. Each returns its findings; the parent writes the one report.
|
|
97
|
-
A worker never writes `.ultra/test-report.json` itself — six writers on one canonical
|
|
98
|
-
file is how a report loses findings.
|
|
99
|
-
|
|
100
|
-
Read `references/export-syntax.md` before collecting exports. The table finds
|
|
101
|
-
candidates; repository conventions and real consumers decide what is public.
|
|
102
|
-
|
|
103
|
-
After the six areas, follow `../ultra-review/SKILL.md` for an aggregate Change review.
|
|
104
|
-
Read only its validated summary, preserve its findings, and carry the review session,
|
|
105
|
-
packet digest, admission digest, subject digest, execution mode, coverage refs, summary
|
|
106
|
-
ref, verdict, and limitations into the report. Record
|
|
107
|
-
`review.finding_schema: "ultra-review-findings-v4"`; copy each finding
|
|
108
|
-
object unchanged from the v4 summary, including `north_star_trace`. An incomplete review
|
|
109
|
-
stays an omission; it never becomes a silent pass. Historical v3 review is evidence only:
|
|
110
|
-
run a fresh v4 aggregate review before a current Test claim.
|
|
111
|
-
|
|
112
|
-
Before accepting copied review metadata or findings, replay the exact frozen
|
|
113
|
-
`SUMMARY.json` through the sibling `ultra-review/scripts/review_wait.py` v4 summary
|
|
114
|
-
validator. Strict v4 replay is the default and requires the same session's valid
|
|
115
|
-
`ADMISSION.json`; `--legacy-v4` is an explicit read mode only for immutable historical
|
|
116
|
-
pre-admission evidence and cannot support a current Test claim. Then bind its
|
|
117
|
-
`change_id`, ordered `task_ids`, `head`, `admission_digest`, `subject_digest`,
|
|
118
|
-
`context_digest`, and
|
|
119
|
-
honest nullable `worktree_digest` to the Test report's root identity and `review`
|
|
120
|
-
provenance fields. The transport sensor accepts only canonical
|
|
121
|
-
`.ultra/test-report.json` and the normalized repository-relative
|
|
122
|
-
`.ultra/reviews/<session>/SUMMARY.json` it names. Both use the same bounded stable
|
|
123
|
-
raw-byte snapshot rule: every managed path component below the real repository root is
|
|
124
|
-
non-symlink, the final entry is a repository-contained regular file, and an 8 MiB + 1
|
|
125
|
-
byte observation returns a typed oversize diagnostic before JSON parsing or hashing.
|
|
126
|
-
The final file is opened with `O_NONBLOCK` and `O_NOFOLLOW`; its descriptor is
|
|
127
|
-
immediately required to be a regular file with the inspected path identity. A type or
|
|
128
|
-
identity replacement returns the existing retryable snapshot diagnostic instead of
|
|
129
|
-
waiting on a special file.
|
|
130
|
-
The sensor uses one report snapshot for report parsing and subject comparisons, and one
|
|
131
|
-
summary snapshot for summary parsing, SHA-256, comparisons, and the waiter's stdin
|
|
132
|
-
validation. After writing those exact values and findings, run
|
|
133
|
-
`node <ultra-test-skill-dir>/scripts/validate_review_transport.cjs --summary <validated-summary-path> --report .ultra/test-report.json`.
|
|
134
|
-
Record that exact command, exit code, and evidence reference in `commands`. A nonzero
|
|
135
|
-
result is a typed transport observation: repair the report copy and rerun it; never drop,
|
|
136
|
-
merge, inject, or rewrite a finding to obtain a pass. This sensor compares exact summary
|
|
137
|
-
bytes, review metadata, and finding objects only. It does not reinterpret a finding or
|
|
138
|
-
decide the audit verdict.
|
|
139
|
-
|
|
140
|
-
Validate each task evidence record with the shipped v2 structural sensor before using
|
|
141
|
-
it. For every record whose `task_review.review_mode` is `external-manual`, rerun the
|
|
142
|
-
sensor with `--verify-external-receipt` and recheck the declared receipt branch — the
|
|
143
|
-
bounded stable receipt bytes, its recorded SHA-256, and its task/change/subject
|
|
144
|
-
identity — instead of replaying a strict summary; strict-v4 records keep their exact
|
|
145
|
-
waiter and transport replay. A task's declared branch is preserved as-is in the
|
|
146
|
-
ordered `task_evidence` projection, consuming each item from the sensor's
|
|
147
|
-
`--projection` output verbatim: an external-manual item carries `task_review_mode`,
|
|
148
|
-
`task_review_receipt_ref`, and `task_review_receipt_digest` where a strict item
|
|
149
|
-
carries its session and summary digest. Never rewrite one branch into the other. The CLI establishes only JSON shape, token syntax, and
|
|
150
|
-
authority designation; it does not prove current identity, provenance, freshness,
|
|
151
|
-
or semantic acceptance. Test
|
|
152
|
-
takes each command and external-observation `raw_evidence_ref` to bounded stable
|
|
153
|
-
repository-contained bytes from an ordinary regular non-symlink file opened nonblocking
|
|
154
|
-
and no-follow, with an 8 MiB ceiling and path/descriptor identity checks around the read.
|
|
155
|
-
Recompute `raw_evidence_sha256` from that one snapshot and require an exact match. Then
|
|
156
|
-
recompute the stable exact `evidence.json` bytes as `evidence_digest` before copying the
|
|
157
|
-
ordered `task_evidence` projection; a raw or record mismatch is an evidence gap returned
|
|
158
|
-
to Dev.
|
|
159
|
-
Test
|
|
160
|
-
takes stable bytes independently, then rechecks and recomputes the current Acceptance-section SHA-256, aligns exact criterion IDs and verification types with the current context, and aligns the task-review session and summary digest with the retained strict summary. For `owner-judgment`, require that the durable owner record exists with its cited statement and disposition readable before rechecking all cited affected artifacts.
|
|
161
|
-
The `subject` is an independently captured completion-snapshot freshness observation made after the final strict task Review validates and immediately before evidence publication; `task_review` separately binds the retained strict summary. Worker Packet v1 carries no task worktree digest and its summary records `worktree_digest: null`, so Test never claims that those review artifacts prove or cryptographically bind `subject.worktree_digest`. It also never replaces that earlier observation with the later aggregate Change digest.
|
|
162
|
-
The owner alone supplies an owner-judgment result. A later task may change the aggregate
|
|
163
|
-
worktree without invalidating an earlier task, but any changed acceptance, owner record,
|
|
164
|
-
review binding, or cited artifact that no longer supports its criterion is a mismatch.
|
|
165
|
-
Any mismatch is an evidence gap: return the affected task and criterion IDs to Dev, or
|
|
166
|
-
return a missing owner judgment to the owner. Test never edits task status. Dev records the reason and performs
|
|
167
|
-
the explicit ledger `completed` to `in_progress` reopen; no silent demotion is allowed.
|
|
168
|
-
Never turn structural sensor success into any of those consumer conclusions.
|
|
169
|
-
|
|
170
|
-
This is a cooperative-workspace drift sensor, not an operating-system isolation
|
|
171
|
-
primitive. Use one fixed closing protocol: one complete primary observation followed by
|
|
172
|
-
one terminal seal. A persistent mismatch observed inside or before that terminal seal
|
|
173
|
-
returns typed `ULTRA_SNAPSHOT_CHANGED_DURING_OBSERVATION` recovery instead of publishing
|
|
174
|
-
the tuple. A cooperative write after the completed terminal seal belongs to the next
|
|
175
|
-
consumer, which must perform a fresh recapture before using the tuple. Hostile writers or
|
|
176
|
-
interleavings require a native Host sandbox or an isolated worktree. Never add an
|
|
177
|
-
unbounded success-seeking replay.
|
|
178
|
-
|
|
179
|
-
Aggregate finding disposition is bounded: P2 and P3 findings are recorded as backlog or
|
|
180
|
-
residual risk and never automatically returned to Dev, and this audit writes
|
|
181
|
-
non-blocking refactor observations into the report instead of reopening a completed
|
|
182
|
-
task. An implementation P0/P1 found here returns to Dev as at most one new
|
|
183
|
-
owner-approved repair task; there is no unbounded Test ↔ Deliver bounce, and any
|
|
184
|
-
re-entry through Test after a report is consumed requires an explicit owner
|
|
185
|
-
disposition.
|
|
186
|
-
|
|
187
|
-
The receipt is non-authoritative derived evidence, but retain it until both Test and
|
|
188
|
-
Deliver have consumed the review. If it is missing, the current session and Test claim
|
|
189
|
-
are `INCOMPLETE`; start a fresh review session. Do not reconstruct it or use
|
|
190
|
-
`--legacy-v4` to bypass loss from a current strict session.
|
|
191
|
-
|
|
192
|
-
## Detect substantive stubs
|
|
193
|
-
|
|
194
|
-
Report an empty return with no IO, a log-only function, a handler that only prevents
|
|
195
|
-
default, or a component that only renders placeholder text. Pair every finding with
|
|
196
|
-
the smallest real boundary or implementation that would make it observable.
|
|
197
|
-
|
|
198
|
-
## Write the report
|
|
199
|
-
|
|
200
|
-
Store the exact `change_id`, ordered current-Change `task_ids`, `intent_digest`,
|
|
201
|
-
`git_commit`, timestamp, run count, commands and exit codes, the six area results,
|
|
202
|
-
findings with paths, verified seams, material omissions, residual risk, and `passed` as
|
|
203
|
-
the model's evidence-derived summary in the one canonical
|
|
204
|
-
`.ultra/test-report.json`. Each command records `command`, `exit_code`, and an
|
|
205
|
-
`evidence_ref`; each area records `status`, `evidence_refs`, and `omissions`. Copy the
|
|
206
|
-
worktree script's `head`, `dirty`, `diff_digest`, and `intent_digest` into the report.
|
|
207
|
-
That worktree identity binds the current whole Change, while ordered `task_evidence`
|
|
208
|
-
items preserve each task's distinct completion-snapshot freshness observation and
|
|
209
|
-
separate task-review identity.
|
|
210
|
-
Copy the validated review summary's exact SHA-256 into `review.summary_digest`; the
|
|
211
|
-
transport validator recomputes it before the report can be current evidence. A stale
|
|
212
|
-
commit, product digest, intent digest, Change id, or task-id snapshot is labelled stale;
|
|
213
|
-
it is never reused as current proof.
|
|
214
|
-
|
|
215
|
-
`passed` is a one-way claim: `true` requires every current-Change task completed in the
|
|
216
|
-
ledger, current v2 task evidence and task-review provenance, and no required area left
|
|
217
|
-
`not_run`. Completed rows do not force `passed: true`; findings, omitted evidence, or a
|
|
218
|
-
failed command may keep it false, while an explicitly dispositioned gap remains visible
|
|
219
|
-
even if the model's evidence summary passes. Preserve the finding and the owner's
|
|
220
|
-
disposition as separate fields. No validator result is itself semantic acceptance.
|
|
221
|
-
|
|
222
|
-
Present the findings by consequence and recommend the highest-leverage response. The
|
|
223
|
-
owner may fix all, fix selected findings, accept recorded risk, or reduce scope through
|
|
224
|
-
the normal REDUCTION decision. Recommend the next capability. Continue only when the
|
|
225
|
-
owner disposition or existing grant covers its exact mode and effects, and show the
|
|
226
|
-
transition Route Card first; Test itself never manufactures that coverage.
|
|
227
|
-
|
|
228
|
-
## When the owner decides
|
|
229
|
-
|
|
230
|
-
The owner decides disposition and risk acceptance. A failed command, orphan or stub is
|
|
231
|
-
an observation, not permission to auto-fix, weaken a test or silently change scope.
|
|
232
|
-
|
|
233
|
-
## References
|
|
234
|
-
|
|
235
|
-
- `../ultra-change/references/change-contract.md` — canonical Active Change authority resolution.
|
|
236
|
-
- `references/export-syntax.md` — read during Wiring Verification to find exported
|
|
237
|
-
symbol candidates in TypeScript/JavaScript, Python, Go, Rust and Java.
|
|
238
|
-
- `scripts/worktree_digest.cjs` — deterministic HEAD plus worktree evidence identity.
|
|
239
|
-
- `../ultra-review/SKILL.md` — read for aggregate Change review after the six-area audit.
|
|
240
|
-
- `../ultra-plan/references/task-evidence-v2.md` — canonical current task evidence and task-review contract.
|
|
241
|
-
- `../ultra-change/references/execution-grant.md` — read only for grant-activated continuation.
|
|
242
|
-
- `../ultra-status/references/route-contract.md` — owner-visible route, checkpoint, and recovery output.
|
|
243
|
-
- `../ultra-think/references/autonomy-boundary.md` — read when a proposed response
|
|
244
|
-
would make an existing specification commitment stop holding.
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# Export syntax lookup
|
|
2
|
-
|
|
3
|
-
Use this table to collect candidates, then confirm public reachability through the
|
|
4
|
-
repository's build system, framework registration and non-test consumers. Text matches
|
|
5
|
-
are observations, not semantic proof.
|
|
6
|
-
|
|
7
|
-
| Language | Candidate forms to search |
|
|
8
|
-
|---|---|
|
|
9
|
-
| TypeScript / JavaScript | `export function`, `export class`, `export const`, `export { name }`, `module.exports`, `exports.name` |
|
|
10
|
-
| Python | top-level `def` and `class`, names in `__all__`, public package re-exports; exclude leading-underscore names unless explicitly exported |
|
|
11
|
-
| Go | package-level identifiers beginning with an uppercase letter |
|
|
12
|
-
| Rust | `pub fn`, `pub struct`, `pub enum`, `pub trait`, `pub use`; respect module visibility such as `pub(crate)` |
|
|
13
|
-
| Java | `public` top-level types and public members reachable through the package's exposed API |
|
|
14
|
-
|
|
15
|
-
For every candidate changed by the current Change, search the exact symbol in non-test
|
|
16
|
-
source. Zero references is an orphan candidate. Before recording it, check declarative
|
|
17
|
-
framework entry points, reflection, dependency injection, generated code and foreign-
|
|
18
|
-
function bindings that may consume the symbol without a textual import.
|