Seed tray: as ideias que sumiram por uma semana
O Greenhouse é meu gerenciador de projetos criativos, construído em torno de um período deliberado de sete dias de incubação para ideias novas. Capture algo, deixe descansar, volte a ele depois que teve tempo de se provar. Esse é todo o ponto do timer de maturidade.
Só que, até essa semana, “deixar descansar” significava “desaparecer por completo.” Capture uma ideia e ela sumia do app, sem zona, sem lista, nem sequer um comando a retornava, até o sétimo dia, quando reaparecia na zona “Ripe today” pedindo uma decisão de Vault-ou-Trabalhar. Por uma semana inteira, o app se comportava como se a ideia não existisse.
Isso veio da mesma revisão completa do app que revelou a prateleira de lançamento invisível, e foi a maior lacuna isolada entre o que o PRD descreve e o que o app de fato faz. O engine já suportava tudo que era necessário, você conseguia guardar uma ideia nova no vault desde o primeiro dia se soubesse o item id, a UI simplesmente nunca te deu um jeito de ver isso ou fazer isso.
A correção, e a restrição que a moldou
A construção em si foi pequena assim que vi o formato dela. A query de estado diário do dashboard já busca toda ideia nova e filtra para as maduras em “Ripe today.” Filtrar na direção oposta, ideias imaturas, não precisou de nenhuma query nova no banco, só o inverso de uma checagem booleana que já existia.
A restrição interessante foi o que NÃO construir. Teria sido fácil adicionar um botão “começar a trabalhar nisso antes do tempo”, afinal, o engine não tem nenhum gate de maturidade na promoção, nada te impede de fazer isso via um comando bruto. Mas isso destrói toda a premissa. O período de incubação não é um bloqueio técnico, é uma disciplina que o app deveria te ajudar a manter. Então a zona Seed tray mostra a ideia, mostra uma contagem regressiva (“Ripens in 4d”), deixa você guardá-la no vault se mudou de ideia, deixa você navegar pelos arquivos dela, e não oferece mais nada. Nenhum atalho. A ausência de um botão é o mecanismo de aplicação, não um botão desabilitado.
Para a contagem regressiva em si, espelhei um padrão que o app já tinha duas vezes, “Dormant Nd” para itens guardados no vault, “Released Nd ago” para os lançados, ambos calculados no frontend a partir de um timestamp bruto que o backend entrega. Mesma ideia aqui, só apontada na direção oposta: em vez de “quanto tempo atrás isso aconteceu,” é “quanto tempo até isso acontecer.” Um campo novo na comunicação (matures_at, o timestamp de quando uma ideia amadurece), uma função de formatação já existente, a mesma matemática, sinal oposto.
Uma correção que fiz no meu próprio plano
A descrição original do issue afirmava que o helper de formatação da contagem regressiva era código morto, parado esperando exatamente por essa feature. Não era, duas features anteriores já tinham colocado ele para trabalhar. Coisa pequena, mas que vale a pena checar antes de construir em cima de uma suposição que o próprio issue fez: leia o código, não confie na memória que o ticket tem do código.
Verificando de verdade
Testes unitários confirmam a lógica de filtragem e a matemática do timestamp. Mas o que eu realmente queria ver era a contagem regressiva renderizando numa janela de verdade rodando, não num teste mockado. Então construí o app com a feature de automação WebDriver dele ligada, lancei contra um vault descartável, e conduzi o fluxo de Capture de verdade: digitei um nome, enviei, vi a zona Seed tray pegar ele imediatamente com “Ripens in 7d,” confirmei que não havia nenhum botão de Work-on-it em lugar nenhum da página, e então cliquei em Vault e vi ele desaparecer. Clique real, chamada IPC real, linha de banco de dados real.
Resultado
Toda ideia que você captura fica visível desde o momento em que existe, durante toda a incubação, sem nunca estar a um clique de pular a espera. Para uma ferramenta cujo discurso inteiro é “confie no processo em vez da sua impaciência,” fechar essa lacuna dá a sensação de o app finalmente estar à altura da própria premissa.
Leitura relacionada
Prateleira de colheita: dando aos itens lançados do Greenhouse um lugar para pousar
Lançar um projeto era write-only: o banco carimbava um timestamp, um branch de badge nunca conseguia renderizar, e todo o payoff do pipeline ficava invisível.
O callback que não conseguia dizer o que aconteceu
Corrigir um bug de atualização do dashboard expôs um segundo escondido no mesmo componente compartilhado, e um terceiro bug que no fim não existia.
Rescue-or-Keep: construindo a zona de vault para o Greenhouse
Agora arquivar no vault move os arquivos de verdade, e um "Keep Vaulted" que não era um no-op - resetava o timestamp que ordena a revisão diária.
Você também pode achar útil
NordPass
Gerenciador de senhas da equipe por trás da NordVPN, com um plano gratuito.
Como afiliado da NordPass, ganho com compras qualificadas.
Saiba maisProton Mail
E-mail criptografado de ponta a ponta, com arquitetura de acesso zero.
Como parceiro da Proton, ganho com compras qualificadas dos serviços de privacidade e segurança da Proton (Pass, Mail, VPN, Drive).
Saiba maisAdGuard para iOS
Bloqueio de anúncios e rastreadores em todo o sistema no iOS, sem necessidade de um servidor DNS separado.
Como afiliado da AdGuard, ganho com compras qualificadas.
Saiba mais