Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ Required routing:
- `$longtable-interview` is the grilling interview surface.
- It does not require a Research Specification before asking the next pressure
question.
- It asks one pressure question at a time, shows the tension, and avoids option
menus or approval prompts.
- It frames each turn as `Tension:` followed by one `Pressure question:` and
waits for a direct answer.
- If only a First Research Shape exists, LongTable continues through
`$longtable-start` until a Research Specification is created or explicitly
kept open.
Expand Down Expand Up @@ -97,9 +97,8 @@ decisions, open questions, next actions, and confidence.
`$longtable-interview` is a relentless sharpening interview for a research plan,
argument, method, manuscript, evidence standard, or product decision. It inspects
`CURRENT.md`, `.longtable/`, supplied documents, and cited evidence first when
those can answer the question. Then it asks one high-leverage question using
this frame: `Tension:` plus `Pressure question:`. It does not ask the
researcher to pick from options.
those can answer the question. Then it names `Tension:` and asks one
`Pressure question:`.

The interview continues only while the next question can produce a new decision,
sharper boundary, stronger evidence standard, or clearer open tension. It stops
Expand Down
4 changes: 2 additions & 2 deletions docs/LONGTABLE-COMMAND-SURFACE.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ LongTable grilling interview:
- reads `CURRENT.md`, `.longtable/`, supplied documents, and cited evidence
before asking when those sources can answer
- asks one relentless sharpening question at a time
- uses a `Tension:` plus `Pressure question:` frame
- avoids option menus, numbered choices, and approval prompts
- frames each turn as `Tension:` followed by `Pressure question:`
- waits for the researcher's direct answer
- continues only while the next question can produce a new decision, sharper
boundary, stronger evidence standard, or clearer open tension
- stops when remaining questions repeat the same tension without producing a
Expand Down
4 changes: 2 additions & 2 deletions docs/QUESTION-RUNTIME.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ questions and creates or updates the Research Specification.

`$longtable-interview` is a grilling interview surface. It can use the Research
Specification when one exists, but it does not require one before asking a
pressure question. It asks one question at a time using `Tension:` and
`Pressure question:`, without option menus or approval prompts.
pressure question. It frames each turn as `Tension:` followed by one
`Pressure question:` and waits for a direct answer.

If the researcher explicitly wants a first research-start interview, use
`$longtable-start`. Otherwise, `$longtable-interview` stays in the grilling
Expand Down
27 changes: 27 additions & 0 deletions docs/release-notes-0.1.71.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# LongTable 0.1.71

LongTable 0.1.71 compresses `$longtable-interview` into a smaller positive
contract. The generated Codex and Claude skills now describe the interview as a
compact pressure loop instead of centering the guidance on what to avoid.

## Changes

- Replaces prohibition-first interview wording with a compact loop:
read state, name `Tension:`, ask one `Pressure question:`, then wait.
- Keeps the direct-answer behavior while removing option-menu and approval
wording from the generated interview skill body.
- Updates setup and grilling smoke tests to require the compact contract.
- Updates README and command-surface docs to match the minimized interview
language.

## Migration

No command changes. Use `$longtable-interview` as before; the generated skill
now carries fewer instructions and a stronger output shape.

## Verification

- `npm run build`
- `npm run smoke:setup`
- `npm run smoke:grilling-interview`
- `npm run release:check`
72 changes: 36 additions & 36 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "longtable-monorepo",
"version": "0.1.70",
"version": "0.1.71",
"private": true,
"description": "Monorepo for the LongTable product surface and provider-neutral runtime packages",
"workspaces": [
Expand Down
4 changes: 2 additions & 2 deletions packages/longtable-checkpoints/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@longtable/checkpoints",
"version": "0.1.70",
"version": "0.1.71",
"private": false,
"description": "Checkpoint policy engine for LongTable",
"type": "module",
Expand All @@ -21,7 +21,7 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
"@longtable/core": "0.1.70"
"@longtable/core": "0.1.71"
},
"devDependencies": {
"typescript": "^5.6.0"
Expand Down
2 changes: 1 addition & 1 deletion packages/longtable-core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@longtable/core",
"version": "0.1.70",
"version": "0.1.71",
"private": false,
"description": "Provider-neutral domain models and contracts for LongTable",
"type": "module",
Expand Down
14 changes: 7 additions & 7 deletions packages/longtable-mcp/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@longtable/mcp",
"version": "0.1.70",
"version": "0.1.71",
"private": false,
"description": "LongTable MCP transport for workspace state and Researcher Checkpoints",
"type": "module",
Expand All @@ -26,12 +26,12 @@
"self-test": "node ./dist/server.js --self-test"
},
"dependencies": {
"@longtable/checkpoints": "0.1.70",
"@longtable/cli": "0.1.70",
"@longtable/core": "0.1.70",
"@longtable/provider-claude": "0.1.70",
"@longtable/provider-codex": "0.1.70",
"@longtable/setup": "0.1.70",
"@longtable/checkpoints": "0.1.71",
"@longtable/cli": "0.1.71",
"@longtable/core": "0.1.71",
"@longtable/provider-claude": "0.1.71",
"@longtable/provider-codex": "0.1.71",
"@longtable/setup": "0.1.71",
"@modelcontextprotocol/sdk": "^1.29.0",
"zod": "^4.0.0"
},
Expand Down
4 changes: 2 additions & 2 deletions packages/longtable-memory/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@longtable/memory",
"version": "0.1.70",
"version": "0.1.71",
"private": false,
"description": "Memory contracts for LongTable explicit state, inferred hypotheses, and open tensions",
"type": "module",
Expand All @@ -21,7 +21,7 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
"@longtable/core": "0.1.70"
"@longtable/core": "0.1.71"
},
"devDependencies": {
"typescript": "^5.6.0"
Expand Down
8 changes: 4 additions & 4 deletions packages/longtable-provider-claude/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@longtable/provider-claude",
"version": "0.1.70",
"version": "0.1.71",
"private": false,
"description": "Claude adapter surface for LongTable",
"type": "module",
Expand All @@ -21,9 +21,9 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
"@longtable/checkpoints": "0.1.70",
"@longtable/core": "0.1.70",
"@longtable/setup": "0.1.70"
"@longtable/checkpoints": "0.1.71",
"@longtable/core": "0.1.71",
"@longtable/setup": "0.1.71"
},
"devDependencies": {
"typescript": "^5.6.0"
Expand Down
26 changes: 12 additions & 14 deletions packages/longtable-provider-claude/src/skills.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@ function baseSkillSpecs(surface: LongTableSkillSurface = "compact"): ClaudeSkill
"- For systematic review, meta-analysis, PDF collection, full-text extraction, institutionally licensed sources, or TDM work, ensure `longtable access setup` readiness exists or surface an ACCESS CHECKPOINT before continuing.",
"- Access setup records capability status only. The researcher handles VPN/proxy/library/SSO login directly; LongTable must not store passwords, API keys, tokens, PDFs, or full text in setup state.",
"- For `$longtable-start`, use natural-language turns for the interview and reserve structured options for final Research Specification confirmation; First Research Shape is only a shorter handle/resume layer.",
"- For `$longtable-interview`, ask one relentless sharpening question at a time. Use `Tension:` and `Pressure question:`. Do not present option menus, numbered choices, or approval prompts. Stop when remaining questions repeat the same tension without producing a new decision.",
"- Do not let unrelated pending Researcher Checkpoints interrupt the interview. Mention them only as separate unresolved checkpoints, and treat them as blocking only when the researcher is confirming, saving, or recording a research decision.",
"- For `$longtable-interview`, run the compact pressure loop: read state, name the unresolved `Tension:`, ask exactly one `Pressure question:`, then wait. Continue only while the next question can produce a new decision.",
"- Keep unrelated pending Researcher Checkpoints separate. Treat them as blocking only when the researcher is confirming, saving, or recording a research decision.",
"- If a Researcher Checkpoint is needed, ask a short structured question with meaningful options and wait for the researcher.",
"- If changing LongTable product language, README positioning, or checkpoint policy, ask a Meta-Decision Checkpoint first.",
"- Stop before acting when the request would change the research question/scope, theory frame, measurement/coding standard, method design, or analysis strategy.",
Expand Down Expand Up @@ -277,7 +277,7 @@ function baseSkillSpecs(surface: LongTableSkillSurface = "compact"): ClaudeSkill
"- First inspect `CURRENT.md` and `.longtable/state.json` when available.",
"- If MCP `read_research_specification` is available, use it as context, not as a gate.",
"- If the answer can be found in `CURRENT.md`, `.longtable/`, the codebase, supplied documents, or cited evidence, inspect those first instead of asking.",
"- Do not route away to `$longtable-start` merely because a Research Specification is missing.",
"- Research Specification state is optional context; use `$longtable-start` only when the researcher explicitly wants a first research-start interview.",
"- If the researcher explicitly wants a first research-start interview, use `$longtable-start`; otherwise keep the grilling interview here.",
"",
"## When To Use",
Expand All @@ -289,23 +289,21 @@ function baseSkillSpecs(surface: LongTableSkillSurface = "compact"): ClaudeSkill
"",
"## Grilling Loop",
"",
"- Ask one question at a time.",
"- Each question must expose a decision, hidden assumption, weak boundary, unsupported claim, or evidence gap.",
"- Each turn must include `Tension:` and `Pressure question:`.",
"- No option menus: do not present A/B/C, numbered choices, or approval choices.",
"- If a recommendation is useful, make it a brief pressure point after the question, not a menu of acceptable answers.",
"- Ask exactly one question per turn.",
"- Frame each turn as `Tension:` followed by `Pressure question:`.",
"- Target a decision, hidden assumption, weak boundary, unsupported claim, or evidence gap.",
"- Keep any recommendation to one pressure point after the question.",
"- Continue only while the next question can produce a new decision, sharper boundary, stronger evidence standard, or clearer open tension.",
"- Stop when remaining questions repeat the same tension without producing a new decision.",
"",
"## Flow",
"",
"1. Read available project state and identify the highest-leverage unresolved tension.",
"2. Ask exactly one question.",
"3. Include `Tension:` and `Pressure question:` in the prompt.",
"4. Make the researcher answer the pressure question directly; do not ask them to pick from options.",
"5. Use MCP/state only after the researcher answers or explicitly asks to record a decision.",
"6. If the answer changes the specification, propose or apply a Research Specification patch through MCP/state when available.",
"7. Record the resulting decision as a `DecisionRecord`, Research Specification patch, or explicit open tension when MCP/state tools are available; never silently overwrite conflicting research commitments."
"2. Ask exactly one `Pressure question:` under `Tension:`.",
"3. Wait for the researcher's direct answer.",
"4. Use MCP/state after the answer or an explicit record request.",
"5. If the answer changes the specification, propose or apply a Research Specification patch through MCP/state when available.",
"6. Record the result as a `DecisionRecord`, Research Specification patch, or explicit open tension; preserve conflicting research commitments in the record."
]
},
{
Expand Down
Loading
Loading