ultra-builder-pro-cli 5.0.0 → 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.
Files changed (159) hide show
  1. package/CHANGELOG.md +113 -3
  2. package/README.md +67 -478
  3. package/README.zh-CN.md +49 -422
  4. package/adapters/_shared/frontmatter.cjs +1 -18
  5. package/adapters/_shared/plugin-core.cjs +17 -83
  6. package/adapters/_shared/runtime-assets.cjs +6 -120
  7. package/adapters/claude.js +8 -24
  8. package/adapters/codex.js +16 -38
  9. package/bin/install.js +35 -57
  10. package/docs/PLUGIN-ISOLATION-CONTRACT.md +13 -101
  11. package/docs/examples/drive/claude-reviewer.sh +53 -0
  12. package/docs/examples/drive/claude-writer.sh +43 -0
  13. package/engine/FORMATS.md +1051 -0
  14. package/engine/checks.cjs +139 -0
  15. package/engine/cli.cjs +148 -0
  16. package/engine/completion.cjs +48 -0
  17. package/engine/context.cjs +94 -0
  18. package/engine/drive.cjs +220 -0
  19. package/engine/expect-worker.cjs +5 -0
  20. package/engine/expect.cjs +33 -0
  21. package/engine/formats.cjs +189 -0
  22. package/engine/git-state.cjs +112 -0
  23. package/engine/ledger.cjs +205 -0
  24. package/engine/loading.cjs +28 -0
  25. package/engine/merge.cjs +273 -0
  26. package/engine/milestone.cjs +89 -0
  27. package/engine/plan.cjs +232 -0
  28. package/engine/project.cjs +5 -0
  29. package/engine/signals.cjs +3 -0
  30. package/engine/states.cjs +175 -0
  31. package/hooks/session-start.cjs +54 -0
  32. package/package.json +17 -52
  33. package/skills/ultra/SKILL.md +395 -0
  34. package/.ultra-template/changes/abandoned/.gitkeep +0 -0
  35. package/.ultra-template/changes/active/.gitkeep +0 -1
  36. package/.ultra-template/changes/archive/.gitkeep +0 -1
  37. package/.ultra-template/contexts/TEMPLATE.md +0 -135
  38. package/.ultra-template/decisions/.gitkeep +0 -1
  39. package/.ultra-template/evidence/.gitkeep +0 -1
  40. package/.ultra-template/north-star.md +0 -52
  41. package/.ultra-template/project-brief.md +0 -28
  42. package/.ultra-template/research/.gitkeep +0 -1
  43. package/.ultra-template/specs/architecture.md +0 -81
  44. package/.ultra-template/specs/discovery.md +0 -74
  45. package/.ultra-template/specs/product.md +0 -80
  46. package/.ultra-template/specs/research-distillate.md +0 -57
  47. package/.ultra-template/tasks.json +0 -4
  48. package/.ultra-template/test-report.json +0 -44
  49. package/adapters/_shared/host-profile.cjs +0 -5
  50. package/adapters/grok.js +0 -242
  51. package/adapters/kimi.js +0 -232
  52. package/adapters/opencode.js +0 -408
  53. package/adapters/zcode.js +0 -375
  54. package/bin/delegate-worker.cjs +0 -5
  55. package/bin/delegate.cjs +0 -5
  56. package/docs/ARCHITECTURE.md +0 -274
  57. package/docs/ARTIFACT-AUTHORITY.md +0 -305
  58. package/docs/DECISIONS.md +0 -229
  59. package/docs/PHILOSOPHY.md +0 -261
  60. package/docs/RUNTIME-COMPAT-MATRIX.md +0 -315
  61. package/docs/SKILL-AUTHORING.md +0 -113
  62. package/docs/WORKFLOW-LIFECYCLE.md +0 -350
  63. package/docs/evals/adversarial-review-2026-08-14.md +0 -84
  64. package/docs/evals/ultra-5-0-journey-results.md +0 -62
  65. package/docs/evals/ultra-5-0-live-acp-conformance.md +0 -93
  66. package/docs/evals/ultra-5-0-route-journeys.md +0 -145
  67. package/docs/evals/zcode-automation-2026-08-14.md +0 -103
  68. package/hooks/README.md +0 -52
  69. package/hooks/_common.py +0 -1779
  70. package/hooks/adapters/codex.py +0 -295
  71. package/hooks/adapters/grok.py +0 -134
  72. package/hooks/adapters/kimi.py +0 -156
  73. package/hooks/adapters/zcode.py +0 -227
  74. package/hooks/block_dangerous_commands.py +0 -201
  75. package/hooks/compact_context.py +0 -224
  76. package/hooks/mid_workflow_recall.py +0 -47
  77. package/hooks/post_edit_guard.py +0 -215
  78. package/hooks/session_context.py +0 -741
  79. package/skills/ultra-change/SKILL.md +0 -165
  80. package/skills/ultra-change/references/change-contract.md +0 -199
  81. package/skills/ultra-change/references/execution-grant.md +0 -109
  82. package/skills/ultra-change/references/primary-transfer.md +0 -273
  83. package/skills/ultra-change/scripts/validate_primary_transfer.cjs +0 -1928
  84. package/skills/ultra-delegate/SKILL.md +0 -195
  85. package/skills/ultra-delegate/patches/zcode-acp-0.1.0-zcode-0.16.5.patch +0 -184
  86. package/skills/ultra-delegate/references/delegation-contract.md +0 -138
  87. package/skills/ultra-delegate/scripts/acp-conformance.cjs +0 -287
  88. package/skills/ultra-delegate/scripts/acp-driver.cjs +0 -762
  89. package/skills/ultra-delegate/scripts/agent-execution-driver.cjs +0 -320
  90. package/skills/ultra-delegate/scripts/cli-driver.cjs +0 -61
  91. package/skills/ultra-delegate/scripts/delegate-profiles/kimi-read-only.md +0 -15
  92. package/skills/ultra-delegate/scripts/delegate-profiles/kimi-write.md +0 -17
  93. package/skills/ultra-delegate/scripts/delegate-worker.cjs +0 -328
  94. package/skills/ultra-delegate/scripts/delegate.cjs +0 -690
  95. package/skills/ultra-delegate/scripts/delegate_wait.py +0 -86
  96. package/skills/ultra-delegate/scripts/host-profile.cjs +0 -267
  97. package/skills/ultra-deliver/SKILL.md +0 -194
  98. package/skills/ultra-deliver/references/baseline-reconciliation.md +0 -41
  99. package/skills/ultra-dev/SKILL.md +0 -265
  100. package/skills/ultra-dev/references/debugging.md +0 -22
  101. package/skills/ultra-domain-modeling/SKILL.md +0 -79
  102. package/skills/ultra-grilling/SKILL.md +0 -121
  103. package/skills/ultra-grilling/references/reframing.md +0 -76
  104. package/skills/ultra-init/SKILL.md +0 -143
  105. package/skills/ultra-init/references/brownfield-adoption.md +0 -32
  106. package/skills/ultra-init/scripts/init_project.cjs +0 -1031
  107. package/skills/ultra-plan/SKILL.md +0 -160
  108. package/skills/ultra-plan/references/task-evidence-v2.md +0 -300
  109. package/skills/ultra-plan/scripts/validate_task_evidence.cjs +0 -859
  110. package/skills/ultra-research/SKILL.md +0 -167
  111. package/skills/ultra-research/references/00-problem-validation.md +0 -36
  112. package/skills/ultra-research/references/01-opportunity-discovery.md +0 -33
  113. package/skills/ultra-research/references/02-market-assessment.md +0 -31
  114. package/skills/ultra-research/references/03-alternatives.md +0 -31
  115. package/skills/ultra-research/references/04-product-strategy.md +0 -41
  116. package/skills/ultra-research/references/05-assumptions-validation.md +0 -31
  117. package/skills/ultra-research/references/10-user-personas.md +0 -30
  118. package/skills/ultra-research/references/11-user-scenarios.md +0 -28
  119. package/skills/ultra-research/references/20-user-stories.md +0 -31
  120. package/skills/ultra-research/references/21-features-scope.md +0 -38
  121. package/skills/ultra-research/references/22-success-metrics.md +0 -33
  122. package/skills/ultra-research/references/30-architecture-context.md +0 -30
  123. package/skills/ultra-research/references/31-solution-strategy.md +0 -28
  124. package/skills/ultra-research/references/32-building-blocks.md +0 -28
  125. package/skills/ultra-research/references/40-deployment.md +0 -29
  126. package/skills/ultra-research/references/41-quality-risks.md +0 -28
  127. package/skills/ultra-research/references/99-synthesis.md +0 -59
  128. package/skills/ultra-research/references/north-star-v2.md +0 -168
  129. package/skills/ultra-research/references/wayfinding.md +0 -50
  130. package/skills/ultra-research/scripts/validate_north_star.cjs +0 -1174
  131. package/skills/ultra-review/SKILL.md +0 -275
  132. package/skills/ultra-review/references/adversarial-evaluation.md +0 -31
  133. package/skills/ultra-review/references/code.md +0 -17
  134. package/skills/ultra-review/references/comments.md +0 -12
  135. package/skills/ultra-review/references/design.md +0 -12
  136. package/skills/ultra-review/references/errors.md +0 -13
  137. package/skills/ultra-review/references/review-modes.md +0 -29
  138. package/skills/ultra-review/references/spec.md +0 -18
  139. package/skills/ultra-review/references/tests.md +0 -12
  140. package/skills/ultra-review/references/unified-schema.md +0 -284
  141. package/skills/ultra-review/references/worker-packet.md +0 -183
  142. package/skills/ultra-review/scripts/review_wait.py +0 -2943
  143. package/skills/ultra-status/SKILL.md +0 -209
  144. package/skills/ultra-status/references/route-contract.md +0 -100
  145. package/skills/ultra-tdd/SKILL.md +0 -91
  146. package/skills/ultra-tdd/references/templates/README.md +0 -20
  147. package/skills/ultra-tdd/references/templates/feature-flag-default-audit.sh +0 -79
  148. package/skills/ultra-tdd/references/templates/persistence-real.ts +0 -78
  149. package/skills/ultra-tdd/references/templates/testcontainer-postgres.py +0 -78
  150. package/skills/ultra-tdd/references/templates/testcontainer-postgres.ts +0 -73
  151. package/skills/ultra-tdd/references/templates/vertical-slice.ts +0 -66
  152. package/skills/ultra-tdd/references/test-execution.md +0 -23
  153. package/skills/ultra-test/SKILL.md +0 -244
  154. package/skills/ultra-test/references/export-syntax.md +0 -18
  155. package/skills/ultra-test/scripts/validate_review_transport.cjs +0 -549
  156. package/skills/ultra-test/scripts/worktree_digest.cjs +0 -576
  157. package/skills/ultra-think/SKILL.md +0 -56
  158. package/skills/ultra-think/references/autonomy-boundary.md +0 -48
  159. 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.